Dorian 1e283daf13 fix: overhaul container lifecycle — recovery, health, uninstall, UI state
Container recovery:
- Health monitor: MAX_RESTART_ATTEMPTS 3→10, interval 60s→120s
- Dependency-aware restarts: won't restart services before their deps
- Reset dependent counters when a dependency recovers
- Handle "created" state containers (were invisible to health monitor)
- Added IndeedHub, mempool-api, mysql to tier system
- Crash recovery: podman start timeout 30s→120s with retry
- Podman client: socket timeout 5s→30s, added restart policy

UI state representation:
- Exit code 0 shows "stopped" (gray), not "crashed" (red)
- Exit code 137 shows "killed (OOM)"
- Non-zero exit shows "crashed" (red)
- Added exit_code field to PackageDataEntry

Install/uninstall fixes:
- Install returns error when container doesn't start (was silent success)
- Post-install hooks awaited instead of fire-and-forget tokio::spawn
- Uninstall: graceful rm before force, volume prune, network cleanup
- Uninstall returns error on partial failure (was 200 OK)

Config consistency:
- DB passwords read from /var/lib/archipelago/secrets/ (was hardcoded)
- Bitcoin: added ZMQ ports 28332/28333 for LND block notifications
- IndeedHub port 7777→8190 (was conflicting with strfry)
- Marketplace versions: LND 0.17.4→0.18.4, Mempool 2.5.0→3.0.0

Performance:
- Metrics collector interval 60s→300s (was duplicating health monitor)
- Podman client: proper error propagation instead of unwrap_or_default

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-31 07:03:57 +01:00

4.0 KiB

Archipelago Canonical Port Map

All port assignments across the 4 configuration layers. When adding or debugging an app, every row must be consistent across all columns.

Bitcoin Stack

App Host Port(s) Container Port(s) Network Nginx Path Frontend Map
bitcoin-knots 8332, 8333 8332, 8333 archy-net /app/bitcoin-knots/ 8332→bitcoin-knots
bitcoin-ui 8334 80 bridge /app/bitcoin-ui/ 8334→bitcoin-knots
electrs 50001 50001 archy-net /app/electrs/ 50001→electrs
lnd 9735, 10009, 8080 9735, 10009, 8080 archy-net /app/lnd/ 10009→lnd
lnd-ui (RTL) 8081 80 bridge /app/lnd-ui/ 8081→lnd

Lightning & Payment

App Host Port(s) Container Port(s) Network Nginx Path Frontend Map
btcpay-server 23000 49392 archy-net /app/btcpay/ 23000→btcpay-server
nbxplorer 24444 32838 archy-net N/A (internal) N/A
fedimint 8173, 8174, 8175 8173, 8174, 8175 archy-net /app/fedimint/ 8174→fedimint
fedimint-gateway 8175 8175 archy-net /app/fedimint-gateway/ 8175→fedimint-gateway

Explorer & Monitoring

App Host Port(s) Container Port(s) Network Nginx Path Frontend Map
mempool 4080 8080 archy-net /app/mempool/ 4080→mempool
grafana 3000 3000 bridge /app/grafana/ 3000→grafana (new tab)

Self-Hosted Apps

App Host Port(s) Container Port(s) Network Nginx Path Frontend Map
nextcloud 8085 80 bridge /app/nextcloud/ 8085→nextcloud
vaultwarden 8082 80 bridge /app/vaultwarden/ 8082→vaultwarden (new tab)
filebrowser 8083 80 bridge /app/filebrowser/ 8083→filebrowser
searxng 8888 8080 bridge /app/searxng/ 8888→searxng
photoprism 2342 2342 bridge /app/photoprism/ 2342→photoprism (new tab)
jellyfin 8096 8096 bridge /app/jellyfin/ 8096→jellyfin
homeassistant 8123 8123 bridge /app/homeassistant/ 8123→homeassistant (new tab)
ollama 11434 11434 archy-net /app/ollama/ 11434→ollama
open-webui 3080 8080 archy-net /app/open-webui/ 3080→open-webui

Nostr & Social

App Host Port(s) Container Port(s) Network Nginx Path Frontend Map
nostr-rs-relay 7000 8080 archy-net /app/nostr-rs-relay/ 7000→nostr-rs-relay
indeedhub 3001 3000 archy-net /app/indeedhub/ 3001→indeedhub

System

App Host Port(s) Container Port(s) Network Nginx Path Frontend Map
tailscale 8240 8240 host /app/tailscale/ N/A
nginx-proxy-manager 81, 8443 81, 443 bridge N/A 81→nginx-proxy-manager

Multi-Container Stacks

Immich: immich-server (2283), immich-postgres (internal 5432), immich-redis (internal 6379) — all on immich-net Penpot: penpot-frontend (9001→80), penpot-backend, penpot-exporter, penpot-postgres, penpot-mailcatch — all on penpot-net Mempool: mempool (4080→8080), mempool-db (internal 3306) — on archy-net BTCPay: btcpay-server (23000→49392), nbxplorer (24444→32838), btcpay-postgres (internal 5432) — on archy-net

Key Notes

  • archy-net apps resolve each other by container name (e.g., bitcoin-knots:8332)
  • bridge apps are standalone — access services via host IP/port
  • host network (tailscale only) — shares host namespace, no port mapping
  • New tab apps: btcpay (23000), grafana (3000), vaultwarden (8082), photoprism (2342), homeassistant (8123) — X-Frame-Options blocks iframe