Network Stack
← Home
Services running on PCT 108 (network, 192.168.2.82) — the Docker Swarm manager node.
Service URLs
| Service | URL | Internal |
|---|---|---|
| Traefik dashboard | traefik.carr-family.org |
192.168.2.82:443 |
| Portainer | portainer.carr-family.org |
192.168.2.82:9443 (HTTPS) |
| Homarr | homepage.carr-family.org |
192.168.2.82:7575 |
| Authentik | auth.carr-family.org |
— |
| Guacamole | guac.carr-family.org |
192.168.2.82:8080 |
| CloudBeaver | db.carr-family.org |
192.168.2.82:8978 |
| Dozzle | dozzle.carr-family.org |
— (global, all nodes) |
Authentik (stack: authentik, compose 23)
SSO at auth.carr-family.org. Image: ghcr.io/goauthentik/server:2026.2.
Services: server, worker, proxy outpost, postgres:16-alpine (host port 5433), redis:7-alpine.
Proxy outpost (ghcr.io/goauthentik/proxy:2026.2) — handles Traefik ForwardAuth. Connects to authentik and traefik-public networks. forwardAuth address: http://authentik_authentik-proxy:9000/outpost.goauthentik.io/auth/traefik.
Env file: /root/authentik.env on PCT 108 (chmod 600). Required: AUTHENTIK_SECRET_KEY, PG_USER, PG_PASS, PG_DB.
Redeploy:
pct exec 108 -- bash -c "set -a && source /root/authentik.env && set +a && docker stack deploy -c /mnt/tank/appdata/portainer/compose/23/docker-compose.yml authentik"
Trusted IP bypass: LAN 192.168.2.0/24, Tailscale 100.64.0.0/10, 205.194.16.9/32 (friend's house) — Authentik Admin → Policy Engine → Policies → Trusted IP Bypass.
Note (2026-06-12):
authentikmiddleware removed from all routes.yml routers. Routes are now unprotected via Traefik. Services with authentik applied via compose labels still have it but it's effectively unused without the middleware definition.
Homarr (stack: documents-homarr, compose 22)
Dashboard at homepage.carr-family.org. Pinned to manager node. Image: ghcr.io/homarr-labs/homarr:latest.
- Port: 3001 (published) → 7575 (internal); Traefik label targets 7575
- DB:
/mnt/tank/appdata/homarr/db/db.sqlite(SQLite) - Populate script:
/root/populate-homarr.json Proxmox host
After re-populate, restore board permissions:
pct exec 108 -- sqlite3 /mnt/tank/appdata/homarr/db/db.sqlite " INSERT OR IGNORE INTO boardUserPermission VALUES ('a2tzcbvgfkkt16aamvuwa6rs','bskmlbq5oayy4845ekbomk9y','full'); INSERT OR IGNORE INTO boardGroupPermission VALUES ('a2tzcbvgfkkt16aamvuwa6rs','nw94xpf6j307ceruir2b82x9','full');"
Integrations: Sonarr, Radarr, Prowlarr, Jellyseerr (apiKey). Jellyfin + qBittorrent need manual setup (no apiKey support). immich and paperlessNgx kinds crash the integrations page — do not add.
Guacamole (stack: network-guacamole, compose 6)
Remote desktop gateway at guac.carr-family.org. v1.6.0 + guacd + postgresql:15 (host port 5434).
CloudBeaver (stack: network-cloudbeaver, compose 31)
DB viewer at db.carr-family.org (lan-only). Workspace: /mnt/tank/appdata/cloudbeaver/workspace.
DB Connections:
| Name | Host | Port | User | DB |
|---|---|---|---|---|
| authentik | 192.168.2.82 | 5433 | authentik | authentik |
| guacamole | 192.168.2.82 | 5434 | guacamole | guacamole |
| nextcloud | 192.168.2.105 | 5432 | nextcloud | nextcloud |
| paperless | 192.168.2.105 | 5433 | paperless | paperless |
| linkwarden | 192.168.2.105 | 5434 | postgres | postgres |
| immich | 192.168.2.105 | 5435 | immich | immich |
| litellm | 192.168.2.83 | 5433 | litellm | litellm |
Postgres ports are exposed host-mode on each node's LAN IP.
Watchtower (stack: watchtower)
Automatic image updates daily at 04:00 AM (0 0 4 * * * — cron6 format).
- Mode: Global (one instance per node — covers Swarm services and standalone containers)
- Config:
WATCHTOWER_CLEANUP=true,WATCHTOWER_ROLLING_RESTART=true,DOCKER_API_VERSION=1.40 - Compose:
/mnt/tank/appdata/watchtower/docker-compose.yml - Notifications: Disabled (was spamming emails — removed 2026-06-12)
Excluded containers (incompatible with rolling restart — network_mode: "service:..." dependency):
gluetun-protonandqbittorrent-vpn— labelcom.centurylinklabs.watchtower.enable=false
Dozzle (stack: dozzel, compose 25)
Live container log viewer at dozzle.carr-family.org. Global mode — runs on all 4 worker nodes (not PCT 108).
