diff --git a/infrastructure/ana-docker-services.md b/infrastructure/ana-docker-services.md new file mode 100644 index 0000000..0989adf --- /dev/null +++ b/infrastructure/ana-docker-services.md @@ -0,0 +1,283 @@ +--- +created: '2026-04-16T00:45:32+00:00' +id: 7a9a2585-0be1-4409-a8d0-b5c87671ed60 +keywords: +- ana-docker +- traefik +- synapse +- element +- gitea +- seafile +- vaultwarden +- mattermost +- sillytavern +- open-webui +- dockge +- portainer +- rustdesk +- restic +- mailrise +- it-tools +- ollama +links: [] +modified: '2026-04-16T00:45:32+00:00' +summary: 'Complete Docker service inventory for ana-docker (10.250.50.70): 20 containers + across 15 stacks, host details, config paths, and per-service issues.' +tags: +- infrastructure +- ana-colo +- docker +- services +- traefik +- matrix +- gitea +- seafile +- vaultwarden +- mattermost +title: Ana Colo — Docker Service Inventory +--- + +# Ana Colo — Docker Service Inventory + +> **Last surveyed:** 2026-04-15 +> **Host:** ana-docker · 10.250.50.70 + +## Host Details + +| Property | Value | +|---|---| +| OS | Debian 12 (bookworm) | +| Kernel | 6.1.0-44-amd64 | +| Resources | 8 vCPU (QEMU), 16GB RAM, 245GB disk (153GB free) | +| User | llmuser (UID 1001, GID 1001), sudo no password | +| Docker | 20.10.24 | +| Compose | v5.1.1 | +| Buildx | v0.31.1 | +| Python | 3.11.2 | +| Node | v20.12.2 (nvm) | +| Firewall | ❌ None (no UFW, firewalld, SELinux, AppArmor) | + +### NFS Mounts + +| Mount | Source | +|---|---| +| /mnt/compose | 10.250.50.50 | +| /mnt/backup | 10.250.50.50 | +| /mnt/tnvms | 10.250.50.50 | + +### File Layout + +| Path | Purpose | +|---|---| +| /opt/docker/compose/\/compose.yaml | Compose files | +| /opt/docker/conf/\/ | Config files | + +--- + +## Service Inventory (20 containers) + +### Traefik (reverse proxy) + +| Property | Value | +|---|---| +| Image | `traefik:latest` | +| Ports | 80, 443, 8380 (dashboard) | +| Network | traefik-net | +| Health check | ❌ none | +| Config | `/opt/docker/conf/traefik-ana/config/traefik.yml`, `/opt/docker/compose/traefik/.env` | + +**Issues:** +- Debug logging enabled (`--log.level=DEBUG`) +- Dashboard unprotected on :8380 +- Stale commented-out configs in traefik.yml + +--- + +### Matrix (Synapse + Element + Postgres) + +| Property | Value | +|---|---| +| Images | `matrixdotorg/synapse:v1.120.0`, `vectorim/element-web:v1.11.80`, `postgres:16-alpine` | +| Ports | Internal only (Traefik-routed) | +| Networks | traefik-net + matrix-net | +| Health check | ✅ Postgres only | +| DB | Local Postgres volume | +| Config | `/opt/docker/conf/synapse/homeserver.yaml`, `aipa_appservice.yaml` | + +**Notes:** +- AIPA appservice configured for MCP bridge integration +- Virtual hosts: `matrix.phasefinal.com` (Synapse), `chat.phasefinal.com` (Element) + +**Issues:** +- DB password hardcoded in compose.yaml +- Multiple secrets in homeserver.yaml (DB password, registration secret, macaroon key, form secret, appservice tokens) + +--- + +### Gitea + +| Property | Value | +|---|---| +| Image | `gitea/gitea:latest` | +| Ports | 3000 (Traefik-routed), 222 (SSH) | +| Network | traefik-net | +| Health check | ❌ none | +| DB | Remote PostgreSQL on 10.250.50.80 | + +**Issues:** +- DB password hardcoded in compose.yaml + +--- + +### Seafile (Seafile + MariaDB + Memcached) + +| Property | Value | +|---|---| +| Images | `seafileltd/seafile-mc:11.0-latest`, `mariadb:10.6`, `memcached:1.6.18` | +| Ports | 9180 (Traefik-routed), internal DB | +| Networks | traefik-net + seafile-net | +| Health check | ❌ none | +| DB | Local MariaDB volume | + +**Issues:** +- MySQL root password hardcoded AND duplicated in .env +- Admin credentials in .env + +--- + +### SillyTavern + +| Property | Value | +|---|---| +| Image | `ghcr.io/sillytavern/sillytavern:latest` | +| Ports | 8100 (direct, not Traefik-routed) | +| Network | default only | +| Health check | ❌ none | +| Config | `/opt/docker/conf/sillytavern/config.yaml` | + +--- + +### Open WebUI + +| Property | Value | +|---|---| +| Image | `ghcr.io/open-webui/open-webui:main` | +| Ports | 3100 (direct, not Traefik-routed) | +| Network | default only | +| Health check | ✅ curl localhost:8080 | +| DB | External Ollama on 10.250.50.51:11434 | +| Config | `/opt/docker/compose/openwebui/.env` | + +--- + +### Vaultwarden + +| Property | Value | +|---|---| +| Image | `vaultwarden/server:latest` | +| Ports | 9080 (Traefik-routed) | +| Network | traefik-net | +| Health check | ✅ curl localhost:80 | +| DB | Remote PostgreSQL on 10.250.50.80 | + +--- + +### Dockge (compose manager) + +| Property | Value | +|---|---| +| Images | `louislam/dockge:latest`, custom backup image `9392b1d81976` (no repo tag) | +| Ports | 5001 (direct) | +| Network | default only | +| Health check | ✅ curl localhost:5001 | + +**Issues:** +- Backup uses untagged custom image — needs documentation or tagging + +--- + +### Portainer (legacy — consider removal) + +| Property | Value | +|---|---| +| Images | `portainer/portainer-ce:latest` (3 years old), `portainer/agent:2.19.4` | +| Ports | 9000, 9001 (direct) | +| Network | default only | +| Health check | ❌ none | + +**Issues:** +- Very old images (Portainer CE ~3 years, agent ~2 years) +- Consider migrating to Dockge-only or removing entirely + +--- + +### RustDesk (hbbs + hbbr) + +| Property | Value | +|---|---| +| Image | `rustdesk/rustdesk-server:latest` (13 months old) | +| Ports | Host network mode (hbbs + hbbr + NAT relay) | +| Network | Host network | +| Health check | ❌ none | + +**Issues:** +- Host network breaks Docker isolation model +- Image is 13 months old + +--- + +### Restic Server + +| Property | Value | +|---|---| +| Image | `restic/rest-server` | +| Ports | 8000 (direct) | +| Network | default only | +| Health check | ❌ none | +| Storage | NFS-backed volume | + +--- + +### IT Tools + +| Property | Value | +|---|---| +| Image | `corentinth/it-tools:latest` (13 months old) | +| Ports | 8780 (direct) | +| Network | default only | +| Health check | ❌ none | + +**Issues:** +- Homepage labels present but no Homepage container running +- Image 13 months old + +--- + +### Mailrise + +| Property | Value | +|---|---| +| Image | `yoryan/mailrise:latest` | +| Ports | 8025 (direct) | +| Network | default only | +| Health check | ❌ none | +| Config | `/opt/docker/conf/mailrise/mailrise.conf` | + +**Issues:** +- SendGrid API key and webhook tokens in plaintext config + +--- + +### Mattermost (not currently running) + +| Property | Value | +|---|---| +| Image | `mattermost/mattermost-enterprise-edition:latest` | +| Ports | 8065 (Traefik-routed), UDP 8443 from WAN | +| Networks | traefik-net + mattermost-net | +| DB | Remote PostgreSQL on 10.250.50.80 | +| Config | `/opt/docker/data/mattermost/.../config.json` | + +**Issues:** +- SendGrid API key, SMTP password, encryption keys, salts all in config.json +- Not currently running (container stopped) \ No newline at end of file