All checks were successful
Build Archipelago ISO (dev) / build-iso (push) Successful in 15m54s
- Replace aardvark-dns container names with host.containers.internal for all cross-app connections (LND→Bitcoin, ElectrumX→Bitcoin, Mempool→ElectrumX, Fedimint→Bitcoin, NBXplorer→Bitcoin P2P+RPC) - Add BTCPay multi-container stack installer (postgres + nbxplorer + btcpay-server) with proper secrets, data dir ownership, NOAUTH - Add Mempool multi-container stack installer (mariadb + mempool-api + mempool-frontend) with host.containers.internal for RPC - Immediately remove apps from state on uninstall (no 3-min ghost delay) - Include archy-bitcoin-ui in bitcoin uninstall container list - Fix LND UI port 8081 (was 8080, conflicting with LND gRPC) - Fix ElectrumX UI: proxy /electrs-status to backend, cache-busting headers, graceful fallback when backend returns HTML - Add Tor hidden services for ElectrumX and LND in torrc template - Remove unused detect_bitcoin_container_name() (replaced by host.containers.internal) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Archipelago Tor Integration
Each service gets its own .onion address. Tor runs in a container with host networking so it can reach host-mapped ports.
Service → Onion mapping
| Service | LAN Port | Tor Hidden Service Dir |
|---|---|---|
| Archipelago | 80 | hidden_service_archipelago |
| LND UI | 8081 | hidden_service_lnd |
| BTCPay | 23000 | hidden_service_btcpay |
| Mempool | 4080 | hidden_service_mempool |
| Fedimint | 8175 | hidden_service_fedimint |
Hostname files
After Tor starts, each service's .onion address is written to:
/var/lib/archipelago/tor/hidden_service_<name>/hostname
The backend reads these to expose Tor addresses in the package API.