Files
homelab-infra/docs/SERVICE_CATALOG.md
T
Micha bcb2bf81a8 Document Authelia without Redis session backend
Document Authelia without Redis session backend
2026-05-04 19:51:44 +02:00

13 KiB

Service Catalog

Stand: 2026-05-04

Dieser Katalog beschreibt produktive und repo-vorbereitete Dienste aus Sicht von Betrieb, Restore und KI-Kontext. Er basiert auf dem Repo-Sollzustand. Vor produktiven Eingriffen immer den Live-Zustand in Komodo/Docker pruefen.

Secret-Werte sind nicht enthalten. Es werden nur Secret-Namen, Env-Key-Namen und Pfade genannt.

Core / Ingress / DNS

Service Zweck Autoritativer Pfad URL / Zugang Abhaengigkeiten Datenpfade Backup / Restore Traefik Besonderheiten / TODOs
traefik zentraler Reverse Proxy, TLS, Docker-Label-Routing traefik/docker-compose.yml, traefik/dynamic/* https://traefik.kaleschke.info Docker socket, Cloudflare DNS API, frontend_net, backend_net /mnt/user/appdata/traefik/dynamic, /mnt/user/appdata/traefik/letsencrypt Tier 1, Share/Borg ja, eigene Dashboard-Route mit Authelia Host-Ports 80/443 sind zentrale Ausnahme; dynamic configs werden nicht automatisch von Komodo deployed
adguard DNS-Server / LAN DNS host-services/Adguard/docker-compose.yml LAN-Port 53, Admin 8082 dns_net, frontend_net, Unbound /mnt/user/appdata/adguard/conf, /mnt/user/appdata/adguard/work Tier 1, config relevant nein Direkte Ports 53 und 8082 dokumentierte Ausnahme; Admin-Port spaeter ggf. absichern
unbound Upstream DNS Resolver fuer AdGuard apps/unbound/docker-compose.yml intern dns_net /mnt/user/appdata/unbound/config rebuildbar / config relevant nein intern isoliert
tailscale VPN/Remote-Zugang host-services/tailscale/docker-compose.yml Tailscale Host-Netz /mnt/user/appdata/tailscale Tier 1, State relevant nein network_mode: host ist dokumentierte Ausnahme
gitea Git-Server / origin fuer GitOps core/gitea/docker-compose.yml https://git.kaleschke.info, SSH 222 Traefik, frontend_net /mnt/user/services/gitea/data Tier 1, SQLite in /data ja SSH-Port 222 direkte Host-Port-Ausnahme; ohne externen Mirror im DR kritisch

Security / Identity

Service Zweck Autoritativer Pfad URL / Zugang Abhaengigkeiten Datenpfade Backup / Restore Traefik Besonderheiten / TODOs
authelia ForwardAuth / zentrale Auth fuer Admin-UIs security/authelia/docker-compose.yml, security/authelia/configuration.yml https://auth.kaleschke.info PostgreSQL 17, Traefik /mnt/user/appdata/authelia/config, Authelia Secret-Dateien Tier 1, config + DB + secrets ja Bewusst ohne Redis-Session-Backend; Template im Repo, Host-Datei pruefen; Access-Control und Compose-Middleware bei Aenderungen abgleichen
vaultwarden Passwort-Tresor security/vaultwarden/docker-compose.yml https://vault.kaleschke.info Traefik, frontend_net /mnt/user/appdata/vaultwarden Tier 1 ja ADMIN_TOKEN_FILE; keine direkten Ports

Shared Infrastructure

Service Zweck Autoritativer Pfad URL / Zugang Abhaengigkeiten Datenpfade Backup / Restore Traefik Besonderheiten / TODOs
postgresql17 shared PostgreSQL Cluster infra/postgresql17/docker-compose.yml intern backend_net /mnt/user/appdata/postgresql17, postgres_password.txt Tier 1; Dumps unter /mnt/user/backups/borg/dumps/latest nein keine Host-Ports; raw DB nicht primaerer Restore-Weg
Redis shared Redis Cache infra/redis/docker-compose.yml intern backend_net /mnt/user/appdata/redis, redis_password.txt transiente Daten, bewusst nicht kritisch nein Passwort-Datei; optional named volume offen
ddns-updater Cloudflare/DDNS Aktualisierung infra/ddns-updater/docker-compose.yml intern Internetzugang, frontend_net /mnt/user/appdata/ddns-updater rebuildbar nein bleibt bewusst in frontend_net, weil backend_net internal ist

Public / User Apps

Service Zweck Autoritativer Pfad URL / Zugang Abhaengigkeiten Datenpfade Backup / Restore Traefik Besonderheiten / TODOs
paperless-ngx Dokumentenmanagement apps/paperless/docker-compose.yml https://paperless.kaleschke.info PostgreSQL 17, Redis, Traefik /mnt/user/appdata/paperless-ngx/data, /mnt/user/documents/paperless, /mnt/user/documents/scans_inbox Tier 2, Borg + postgresql17-paperless.dump ja DB/Redis Secrets bleiben bewusst Stack ENV
paperless-gpt KI-Ergaenzung fuer Paperless apps/paperless-gpt/docker-compose.yml https://paperless-gpt.kaleschke.info Paperless API, LLM/Ollama, Traefik /mnt/user/appdata/paperless-gpt/data, /mnt/user/appdata/paperless-gpt/prompts Tier 2 ja + Authelia API Token als Stack ENV; OCR/LLM-Konfig bei Aenderungen pruefen
immich_server Foto-/Video-App apps/immich/docker-compose.yml https://immich.kaleschke.info Immich Postgres, Immich Redis, ML, Traefik /mnt/user/photos/immich, /mnt/user/photos/family_archive Tier 2, Borg + immich.dump ja native App-Auth; externes Fotoarchiv gemountet
immich_postgres Immich-Datenbank apps/immich/docker-compose.yml intern immich_default /mnt/user/appdata/immich_postgres, immich_postgres_password.txt Dump immich.dump nein nie ins frontend_net
immich_redis Immich Cache apps/immich/docker-compose.yml intern immich_default kein kritischer Pfad dokumentiert rebuildbar nein Architektur nennt anonymes Volume -> named volume als offenes Thema
immich_machine_learning Immich ML apps/immich/docker-compose.yml intern immich_default model-cache rebuildbar nein intern-only
mealie Rezeptverwaltung apps/mealie/docker-compose.yml https://mealie.kaleschke.info mealie-postgres, Traefik /mnt/user/appdata/mealie/data Tier 2, Borg + mealie.dump ja App + DB in internem Netz getrennt
mealie-postgres Mealie-Datenbank apps/mealie/docker-compose.yml intern mealie_internal /mnt/user/appdata/mealie/postgres, mealie_postgres_password.txt Dump mealie.dump nein interne DB
mail-archiver Mail-Archivierung apps/mail-archiver/docker-compose.yml https://mail.kaleschke.info PostgreSQL 17, Internet/IMAP, Traefik /mnt/user/appdata/mailarchiver/data-protection-keys Tier 2, postgresql17-mailarchiver.dump ja Hybrid-Dienst: frontend_net fuer Internet, backend_net fuer DB
nextcloud Datei-/Cloud-Dienst apps/nextcloud/docker-compose.yml https://cloud.kaleschke.info eigene PostgreSQL, eigene Redis, Traefik /mnt/user/appdata/nextcloud/html, /mnt/user/documents/nextcloud-data Tier 2, Share + app-eigene DB ja native App-Auth ohne zentrale ForwardAuth; WebDAV/CardDAV beachten
nextcloud-postgres Nextcloud-Datenbank apps/nextcloud/docker-compose.yml intern nextcloud_internal /mnt/user/appdata/nextcloud/postgres, nextcloud_postgres_password.txt Teil von Nextcloud-Restore nein interne DB
nextcloud-redis Nextcloud Cache/Locking apps/nextcloud/docker-compose.yml intern nextcloud_internal /mnt/user/appdata/nextcloud/redis Teil von Nextcloud-Restore nein interne Redis
ntfy Push-Benachrichtigungen apps/ntfy/docker-compose.yml https://ntfy.kaleschke.info Traefik, upstream mobile push /mnt/user/appdata/ntfy Tier 2 ja NTFY_BEHIND_PROXY=true; Monitoring/Borg-Benachrichtigungen
bentopdf PDF-Tooling / Ersatz fuer Stirling-PDF apps/bentopdf/docker-compose.yml https://pdf.kaleschke.info Traefik + Authelia keine kritische Persistenz im Compose Tier 3, rebuildbar ja + Authelia COOP/COEP per Middleware; fachliche Abnahme/Live-Status pruefen

Operations / Monitoring / Admin

Service Zweck Autoritativer Pfad URL / Zugang Abhaengigkeiten Datenpfade Backup / Restore Traefik Besonderheiten / TODOs
homepage Start-Dashboard apps/homepage/docker-compose.yml https://home.kaleschke.info Traefik, Docker socket read-only, viele API Tokens /mnt/user/appdata/homepage, /mnt/user/appdata/homepage/images Tier 2 ja + Authelia laut Compose Authelia Template listet home als bypass; abgleichen
komodo-core GitOps UI/API/Stack-Manager ops/komodo/docker-compose.yml https://komodo.kaleschke.info Mongo, Gitea, Traefik /mnt/user/appdata/komodo/core, komodo_keys Tier 1 ja, native Auth keine pauschale Authelia-ForwardAuth; Gitea DNS override
komodo-mongo Komodo Datenbank ops/komodo/docker-compose.yml intern komodo_net /mnt/user/appdata/komodo/mongo, komodo_mongo_password.txt Tier 1, komodo-mongo.archive.gz nein Dump am 2026-05-04 bestaetigt; nach Major-Upgrades pruefen
komodo-periphery Komodo Host-Agent ops/komodo/docker-compose.yml intern Core -> Periphery Docker socket, /mnt/user/services, frontend_net, komodo_net /mnt/user/appdata/komodo/periphery, komodo_keys Tier 1 nein Docker-Socket-Ausnahme; /mnt/user/services Mount fuer Stack-Workspaces
borg-ui Borg Backup-/Restore UI ops/borg-ui/docker-compose.yml https://borg.kaleschke.info Traefik + Authelia, Borg repo credentials /mnt/user/appdata/borg-ui/data, /mnt/user/backups/borg/dumps, Restore-Ziel Tier 3 / Backup kritisch ja + Authelia breite Mounts bewusst; /local/secrets im DR-Scope
backrest Backup-Admin-Dienst / Legacy-Backup-Ebene ops/backrest/docker-compose.yml https://backrest.kaleschke.info Traefik + Authelia, Repo/SSH-Mounts /mnt/user/appdata/backrest/*, broad source mounts Tier 3 ja + Authelia breite Mounts bewusst dokumentieren
uptime-kuma Monitoring / Uptime Checks ops/uptime-kuma/docker-compose.yml https://uptime.kaleschke.info Traefik + Authelia /mnt/user/appdata/uptime-kuma Tier 3 ja + Authelia Monitore nach Restore pruefen
glances System-/Container-Monitoring ops/glances/docker-compose.yml https://glances.kaleschke.info Docker socket, rootfs, Traefik + Authelia kein kritischer Zustand Tier 3, rebuildbar ja + Authelia Rootfs und Docker-Socket Mounts
scrutiny Laufwerks-/SMART-Monitoring ops/scrutiny/docker-compose.yml https://scrutiny.kaleschke.info Device mounts, Traefik + Authelia /mnt/user/appdata/scrutiny/config, /mnt/user/appdata/scrutiny/influxdb Tier 3, Metrics nicht kritisch ja + Authelia privileged: true dokumentierte Ausnahme
speedtest-tracker Speedtest-Monitoring ops/speedtest/docker-compose.yml https://speedtest.kaleschke.info Traefik + Authelia /mnt/user/appdata/speedtest-tracker/config Tier 3 ja + Authelia APP_KEY, ADMIN_PASSWORD Stack ENV
filebrowser Datei-Browser fuer Appdata ops/filebrowser/docker-compose.yml https://files.kaleschke.info Traefik + Authelia /mnt/user/appdata/filebrowser/*, breiter /mnt/user/appdata Mount Tier 3 ja + Authelia Mounts langfristig einschraenken
code-server Web-Editor / Operations Workspace ops/code-server/docker-compose.yml https://code.kaleschke.info Traefik + Authelia /mnt/user/appdata/code-server, /mnt/user/services/dev Tier 3 ja + Authelia PASSWORD_FILE; Workspaces beachten
grafana Metrik-Dashboard ops/grafana-influxdb/docker-compose.yml https://grafana.kaleschke.info Traefik + Authelia, InfluxDB 3 Core /mnt/user/appdata/grafana, Grafana provisioning Tier 3 ja + Authelia Datasource wird provisioniert, Token ueber Secret
influxdb3-core Zeitreihen-/Metrikdaten fuer Grafana und Home Assistant ops/grafana-influxdb/docker-compose.yml LAN 8181 je INFLUXDB_BIND_IP, keine Public URL Grafana, Home Assistant Writer /mnt/user/appdata/influxdb3/data, /mnt/user/appdata/influxdb3/plugins Tier 3 nein LAN-only Host-Port-Ausnahme; 401 Unauthorized beim Curl ohne Token ist erwarteter Reachability-Test
hermes-gateway Hermes Agent Gateway/API intern ops/hermes-agent/docker-compose.yml intern 8642 auf hermes_net SSH Runner, LLM Provider, optional Home Assistant /mnt/user/appdata/hermes-agent/data, SSH key path noch nicht in Restore Matrix nein kein Docker socket; terminal backend ssh; echte .env auf Host-Appdata
hermes-dashboard Hermes Dashboard ops/hermes-agent/docker-compose.yml ${HERMES_DASHBOARD_HOST} hermes-gateway, Traefik + Authelia shared read-only data mount noch nicht in Restore Matrix ja + Authelia Compose-Profil dashboard; Live-Status pruefen

Backup- und Restore-Hinweise

  • Tier-1-Dienste stehen in docs/RESTORE_MATRIX.md und docs/DISASTER_RECOVERY.md.
  • Dump-Erzeugung erfolgt host-seitig ueber ops/borg-ui/scripts/pre-backup-dumps.sh.
  • Dump-Ziel: /mnt/user/backups/borg/dumps/latest.
  • Raw Live-DB-Pfade sind meist nicht der primaere Restore-Weg; bevorzugt werden Dumps plus Appdaten.
  • Borg UI nimmt bewusst /local/secrets in den DR-Scope auf.

Bekannte offene Fragen

  • Hermes Agent ist dokumentiert, aber noch nicht vollstaendig in Restore Matrix / DR Bootstrap eingeordnet.
  • Authelia Template vs. Compose-Middleware sollte bei Auth-Aenderungen explizit abgeglichen werden.
  • Filebrowser- und Backrest-Mounts sind breit und bewusst, aber bei zukuenftigen Hardening-Sprints Kandidaten.
  • Scrutiny bleibt privilegiert; nur mit klarer Begruendung aendern.
  • BentoPDF und Hermes Dashboard koennen je nach Live-Stand vorbereitet statt produktiv sein.