diff --git a/docs/AI_CONTEXT.md b/docs/AI_CONTEXT.md index 934c7b4..ba91428 100644 --- a/docs/AI_CONTEXT.md +++ b/docs/AI_CONTEXT.md @@ -151,7 +151,7 @@ KI-Agenten sollen konservativ arbeiten: keine indirekten Live-Aenderungen, keine - Traefik dynamic config muss manuell auf den Host synchronisiert werden; Komodo deployed diese Dateien nicht automatisch. - `backend_net` und app-interne Netze muessen bei Runtime-Problemen live geprueft werden, weil Compose-Projektpraefixe Netznamen veraendern koennen. -- Authelia Template und Compose-Middlewares koennen auseinanderlaufen; bei Auth-Aenderungen beide Seiten pruefen. +- Authelia `configuration.yml` ist Repo-Sollquelle, wird aber nicht automatisch von Komodo auf den Host kopiert; bei Auth-Aenderungen Repo-Config, Host-Config und Compose-Middlewares pruefen. - Authelia nutzt PostgreSQL, aber bewusst kein Redis-Session-Backend; Redis ist kein Authelia-Bootstrap-Blocker. - `paperless-ngx` nutzt fuer DB/Redis bewusst Stack ENV statt `_FILE`. - `homepage`, `glances` und `komodo-periphery` nutzen Docker-Socket-Mounts; Zugriff bewusst behandeln. diff --git a/docs/REPO_MAP.md b/docs/REPO_MAP.md index 03d29ee..66be087 100644 --- a/docs/REPO_MAP.md +++ b/docs/REPO_MAP.md @@ -43,7 +43,7 @@ Secret-Werte werden hier nicht dokumentiert. Aufgefuehrt werden nur Variablennam | `traefik/dynamic/middlewares.yml` | zentrale `secure-headers` und `authelia` ForwardAuth Middleware; manuelle Host-Sync-Ausnahme | | `traefik/dynamic/dashboards.yml` | leer; File-Provider-Platzhalter | | `traefik/dynamic/tls.yml` | leer; File-Provider-Platzhalter | -| `security/authelia/configuration.yml` | Authelia Template; nicht mit echten user-spezifischen Daten committen | +| `security/authelia/configuration.yml` | versionierte Authelia-Sollkonfiguration; manuelle Host-Sync-Pflicht, User-Daten und Secret-Werte bleiben ausserhalb von Git | | `ops/grafana-influxdb/provisioning/datasources/influxdb.yml` | Grafana Datasource Provisioning fuer InfluxDB 3 Core | | `ops/borg-ui/scripts/pre-backup-dumps.sh` | Host-seitiges Dump-Skript fuer PostgreSQL, Mealie, Immich und Komodo Mongo | | `ops/hermes-agent/config/hermes/config.yaml` | Hermes Agent Konfiguration mit Env-Platzhaltern | @@ -122,7 +122,7 @@ Secret-Werte werden hier nicht dokumentiert. Aufgefuehrt werden nur Variablennam | `git.kaleschke.info` | Gitea Web | Traefik | | `glances.kaleschke.info` | Glances | Traefik + Authelia | | `grafana.kaleschke.info` | Grafana | Traefik + Authelia | -| `home.kaleschke.info` | Homepage | Traefik + Authelia laut Compose; Authelia Template fuehrt Domain als bypass | +| `home.kaleschke.info` | Homepage | Traefik + Authelia; faellt in Authelia unter die 1FA-Wildcard-Regel | | `immich.kaleschke.info` | Immich | Traefik, native App-Auth | | `komodo.kaleschke.info` | Komodo | Traefik, native Komodo-Auth; keine pauschale ForwardAuth | | `mail.kaleschke.info` | Mail Archiver | Traefik | @@ -216,8 +216,7 @@ Das Skript liest Secret-Dateien auf dem Host und schreibt Dump-Artefakte. Bei An ## Unsicherheiten / TODOs aus Repo-Sicht - Echte `stack.env`- und `.env`-Dateien sind per `.gitignore` ausgeschlossen; nur `*.example`-Dateien gehoeren ins Repo. -- Authelia `configuration.yml` ist als Template markiert, enthaelt aber konkrete Domains. Pruefen, ob der Host-Stand und die Repo-Template-Datei bewusst getrennt bleiben. -- Authelia Access-Control und Compose-Middlewares wirken nicht ueberall deckungsgleich, z. B. Homepage ist in Compose mit Authelia-Middleware geroutet, in Authelia aber als bypass gelistet. +- Authelia `configuration.yml` ist Repo-Sollquelle, wird aber nicht automatisch von Komodo auf den Host kopiert. Aenderungen muessen analog zu Traefik dynamic configs manuell synchronisiert werden. - `apps/mealie` nutzt in Compose `mealie_internal`; Architektur-Doku nennt teils `mealie_mealie_internal`. Laufzeitnamen koennen durch Compose-Projektpraefixe abweichen. - `backend_net` ist in der Architektur als `internal: true` beschrieben; einzelne Compose-Dateien referenzieren es external. Live-Netz-Attribute bei Drift-Fragen pruefen. - Einige Images bleiben trotz Digest-Pin semantisch auf mutable Tags (`latest@sha256`, `release@sha256`). Das ist bewusst dokumentiert, aber bei Updates gesondert pruefen. diff --git a/docs/SERVICE_CATALOG.md b/docs/SERVICE_CATALOG.md index b78c012..2116ef5 100644 --- a/docs/SERVICE_CATALOG.md +++ b/docs/SERVICE_CATALOG.md @@ -20,7 +20,7 @@ Secret-Werte sind nicht enthalten. Es werden nur Secret-Namen, Env-Key-Namen und | 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 | +| `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; Repo-Config muss manuell auf den Host synchronisiert werden; 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 @@ -54,7 +54,7 @@ Secret-Werte sind nicht enthalten. Es werden nur Secret-Namen, Env-Key-Namen und | 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 | +| `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 schuetzt die Domain ueber die 1FA-Wildcard-Regel | | `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 | @@ -82,7 +82,7 @@ Secret-Werte sind nicht enthalten. Es werden nur Secret-Namen, Env-Key-Namen und ## 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. +- Authelia Repo-Config, Host-Config und Compose-Middlewares sollten 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. diff --git a/security/authelia/configuration.yml b/security/authelia/configuration.yml index 4a6d756..dd823a0 100644 --- a/security/authelia/configuration.yml +++ b/security/authelia/configuration.yml @@ -1,8 +1,9 @@ --- -# Authelia configuration - Template -# Deploy to: /mnt/user/appdata/authelia/config/configuration.yml +# Authelia configuration - repo source of truth +# Manual host sync required after changes: +# /mnt/user/appdata/authelia/config/configuration.yml # Docs: https://www.authelia.com/configuration/ -# WICHTIG: Diese Datei NICHT in Git committen wenn user-spezifische Daten enthalten! +# Keep user database and secret values outside Git. theme: dark @@ -38,18 +39,17 @@ access_control: - vault.kaleschke.info - ntfy.kaleschke.info - git.kaleschke.info - - home.kaleschke.info policy: bypass # Admin-Dienste - 2FA erforderlich - domain: - - komodo.kaleschke.info - uptime.kaleschke.info - files.kaleschke.info - scrutiny.kaleschke.info policy: two_factor - # Alles andere - 1FA + # Alles andere mit Authelia-Middleware - 1FA. + # Komodo hat bewusst keine ForwardAuth-Middleware und wird hier nicht ausgewertet. - domain: "*.kaleschke.info" policy: one_factor