diff --git a/core/archipelago/src/container/docker_packages.rs b/core/archipelago/src/container/docker_packages.rs index 73cd0e54..3e6d7936 100644 --- a/core/archipelago/src/container/docker_packages.rs +++ b/core/archipelago/src/container/docker_packages.rs @@ -119,47 +119,21 @@ impl DockerPackageScanner { // Get metadata for this app let metadata = get_app_metadata(&app_id); - // Check if this app has a separate UI container + // Resolve UI address: separate UI containers > static map > dynamic ports let lan_address = if let Some(ui_address) = ui_containers.get(&app_id) { - debug!("Using UI container address for {}: {}", app_id, ui_address); + // Apps with separate UI containers (e.g. archy-bitcoin-ui, archy-lnd-ui) + debug!("Using UI container for {}: {}", app_id, ui_address); Some(ui_address.clone()) } else if app_id == "bitcoin-knots" { - // Bitcoin UI runs on host network at port 8334 - debug!("Using bitcoin-ui for bitcoin-knots: http://localhost:8334"); Some("http://localhost:8334".to_string()) } else if app_id == "lnd" { - // LND UI runs on host network at port 8081 - debug!("Using lnd-ui for lnd: http://localhost:8081"); Some("http://localhost:8081".to_string()) - } else if app_id == "tailscale" { - // Tailscale uses host networking, so no port mappings - // But web UI is always on port 8240 - debug!("Tailscale detected, using port 8240"); - Some("http://localhost:8240".to_string()) - } else if app_id == "fedimint" { - // Fedimint built-in Guardian UI on port 8175 - debug!("Using fedimint built-in Guardian UI: http://localhost:8175"); - Some("http://localhost:8175".to_string()) - } else if app_id == "fedimint-gateway" { - // Fedimint Gateway API on port 8176 - debug!("Using fedimint gateway: http://localhost:8176"); - Some("http://localhost:8176".to_string()) - } else if app_id == "nostr-rs-relay" { - debug!("Using Nostr relay: http://localhost:18081"); - Some("http://localhost:18081".to_string()) - } else if app_id == "dwn" { - debug!("Using DWN server: http://localhost:3100"); - Some("http://localhost:3100".to_string()) - } else if app_id == "indeedhub" { - debug!("Using IndeedHub: http://localhost:7777"); - Some("http://localhost:7777".to_string()) } else if app_id == "electrumx" || app_id == "mempool-electrs" || app_id == "electrs" { - // ElectrumX UI runs on host at port 50002 - debug!("Using electrumx-ui for electrumx: http://localhost:50002"); Some("http://localhost:50002".to_string()) } else { - // Extract port from the main container + // Dynamic: use actual port bindings from container, fall back to static map extract_lan_address(&container.ports) + .or_else(|| self.runtime.get_ui_address(&app_id)) }; debug!("Container {}: ports={:?}, lan_address={:?}", app_id, container.ports, lan_address); diff --git a/core/container/src/podman_client.rs b/core/container/src/podman_client.rs index 64c276cf..bb2d44e8 100644 --- a/core/container/src/podman_client.rs +++ b/core/container/src/podman_client.rs @@ -71,14 +71,14 @@ impl PodmanClient { let url = match name { "bitcoin-knots" | "bitcoin-ui" => "http://localhost:8334", "lnd" | "archy-lnd-ui" => "http://localhost:8081", - "tailscale" => "http://localhost:8240", + // Tailscale has no web UI — managed via CLI/app "homeassistant" => "http://localhost:8123", "archy-mempool-web" | "mempool" => "http://localhost:4080", "btcpay-server" => "http://localhost:23000", "grafana" => "http://localhost:3000", "searxng" => "http://localhost:8888", "ollama" => "http://localhost:11434", - "onlyoffice" => "http://localhost:9980", + "onlyoffice" => "http://localhost:8044", "penpot" => "http://localhost:9001", "nextcloud" => "http://localhost:8085", "vaultwarden" => "http://localhost:8082", @@ -86,10 +86,10 @@ impl PodmanClient { "photoprism" => "http://localhost:2342", "immich_server" | "immich" => "http://localhost:2283", "filebrowser" => "http://localhost:8083", - "nginx-proxy-manager" => "http://localhost:81", + "nginx-proxy-manager" => "http://localhost:8181", "portainer" => "http://localhost:9000", "uptime-kuma" => "http://localhost:3001", - "fedimint" => "http://localhost:8175", + "fedimint" | "fedimintd" => "http://localhost:8174", "fedimint-gateway" => "http://localhost:8176", "nostr-rs-relay" => "http://localhost:18081", "indeedhub" => "http://localhost:7777",