feat: enhance container selection logic for remote servers by prioritizing host IP and mapped public ports

This commit is contained in:
Wikid82
2025-11-22 21:26:09 -05:00
parent 3aa0d618a2
commit c93a5edd0e

View File

@@ -148,10 +148,29 @@ export default function ProxyHostForm({ host, onSubmit, onCancel }: ProxyHostFor
setSelectedContainerId(containerId)
const container = dockerContainers.find(c => c.id === containerId)
if (container) {
// Prefer internal IP if available, otherwise use container name
const host = container.ip || container.names[0]
// Use the first exposed port if available, otherwise default to 80
const port = container.ports && container.ports.length > 0 ? container.ports[0].private_port : 80
// Default to internal IP and private port
let host = container.ip || container.names[0]
let port = container.ports && container.ports.length > 0 ? container.ports[0].private_port : 80
// If using a Remote Server, try to use the Host IP and Mapped Public Port
if (connectionSource !== 'local' && connectionSource !== 'custom') {
const server = remoteServers.find(s => s.uuid === connectionSource)
if (server) {
// Use the Remote Server's Host IP (e.g. public/tailscale IP)
host = server.host
// Find a mapped public port
// We prefer the first mapped port we find
const mappedPort = container.ports?.find(p => p.public_port)
if (mappedPort) {
port = mappedPort.public_port
} else {
// If no public port is mapped, we can't reach it from outside
// But we'll leave the internal port as a fallback, though it likely won't work
console.warn('No public port mapped for container on remote server')
}
}
}
let newDomainNames = formData.domain_names
if (selectedDomain) {