diff --git a/docs/AI_CONTEXT.md b/docs/AI_CONTEXT.md index 459cf0e..50828ef 100644 --- a/docs/AI_CONTEXT.md +++ b/docs/AI_CONTEXT.md @@ -43,6 +43,7 @@ Traefik ist der zentrale Web-Einstieg fuer HTTP(S). Admin-/Ops-UIs liegen entwed ### Identity / Security - Authelia stellt ForwardAuth fuer viele Admin-UIs bereit. +- Authelia nutzt GMX SMTP fuer Identity-/2FA-Benachrichtigungen; Passwort liegt als Host-Secret `authelia_smtp_password.txt`. - Vaultwarden ist ein separater Passwort-Tresor. - Komodo ist bewusst nicht pauschal hinter Authelia, weil UI, API, Webhooks und Periphery-WebSocket sonst leicht gebrochen werden koennen. - Komodo-Compose, Komodo-Secrets und Komodo-Runtime nur gemeinsam mit dem Betreiber aendern. @@ -157,6 +158,7 @@ KI-Agenten sollen konservativ arbeiten: keine indirekten Live-Aenderungen, keine - `backend_net` und app-interne Netze muessen bei Runtime-Problemen live geprueft werden, weil Compose-Projektpraefixe Netznamen veraendern koennen. - Authelia `configuration.yml` ist Repo-Baseline fuer nicht geheime Einstellungen, wird aber nicht automatisch von Komodo auf den Host kopiert; die produktive Host-Datei kann OIDC-/Secret-Konfiguration enthalten. Bei Auth-Aenderungen Repo-Baseline, Host-Config und Compose-Middlewares pruefen und nicht blind ueberschreiben. - Authelia nutzt PostgreSQL, aber bewusst kein Redis-Session-Backend; Redis ist kein Authelia-Bootstrap-Blocker. +- Authelia-Notifier ist SMTP; bei Auth-Aenderungen Host-Config backupen, `authelia validate-config` ausfuehren und erst danach neu starten. - `paperless-ngx` nutzt fuer DB/Redis bewusst Stack ENV statt `_FILE`. - `homepage`, `glances` und `komodo-periphery` nutzen Docker-Socket-Mounts; Zugriff bewusst behandeln. - `backrest`, `borg-ui` und `filebrowser` haben breite Mounts; bei Hardening nicht ad hoc, sondern gezielt vorgehen. diff --git a/docs/DISASTER_RECOVERY.md b/docs/DISASTER_RECOVERY.md index 9a5d6ee..9772d5b 100644 --- a/docs/DISASTER_RECOVERY.md +++ b/docs/DISASTER_RECOVERY.md @@ -129,6 +129,7 @@ Erwartete Basis unter `/mnt/user/appdata/secrets/`: - `authelia_jwt_secret.txt` - `authelia_postgres_password.txt` - `authelia_session_secret.txt` +- `authelia_smtp_password.txt` - `authelia_storage_encryption_key.txt` - `immich_postgres_password.txt` - `komodo_mongo_password.txt` @@ -234,6 +235,7 @@ Ziel: - gemeinsame DB verfuegbar - zentrale Auth laeuft; Authelia nutzt bewusst kein Redis-Session-Backend +- Authelia SMTP-Notifier kann GMX erreichen - Redis als shared Cache fuer abhaengige Apps verfuegbar - Git-Zugriff wiederhergestellt @@ -332,6 +334,17 @@ Das bedeutet: Nach einem Komodo-Neuaufbau muessen diese Werte vor dem Start des Stacks wieder gesetzt sein. +### `authelia` + +Authelia nutzt GMX SMTP fuer Identity-/2FA-Benachrichtigungen. + +Vor dem Start muessen vorhanden sein: + +- `/mnt/user/appdata/secrets/authelia_smtp_password.txt` +- SMTP-Zugang fuer `michideheld@gmx.de` + +Beim Smoke-Test muss `authelia validate-config` erfolgreich sein; der SMTP-Startup-Check darf den Start nicht blockieren. + ### `nextcloud` `nextcloud` ist bewusst kein AIO-Stack, sondern ein klassischer App-/PostgreSQL-/Redis-Stack. diff --git a/docs/MIGRATION_LOG.md b/docs/MIGRATION_LOG.md index 24ec218..a7804cb 100644 --- a/docs/MIGRATION_LOG.md +++ b/docs/MIGRATION_LOG.md @@ -16,6 +16,13 @@ Dieses Dokument ist nur noch ein historischer Verlauf. Der aktuelle operative Ab ## Historische Meilensteine +### 2026-05-06 - Authelia GMX SMTP Notifier + +- Authelia-Notifier von Filesystem-Log auf GMX SMTP (`submission://mail.gmx.net:587`) umgestellt. +- SMTP-Passwort bleibt ausserhalb des Repos unter `/mnt/user/appdata/secrets/authelia_smtp_password.txt`. +- Authelia-Compose erhaelt explizite DNS-Server, weil der SMTP-Startup-Check externe Namen wie `mail.gmx.net` aufloesen muss. +- Repo-Baseline und Host-Config muessen bei Auth-Aenderungen weiter bewusst gemerged und vor Restart validiert werden. + ### 2026-05-06 - Hermes DR und Mail-Archiver Authelia - Hermes Agent in `docs/RESTORE_MATRIX.md` und `docs/DISASTER_RECOVERY.md` mit Restore-Pfaden, Secret-/ENV-Hinweisen und Smoke-Test ergaenzt. diff --git a/docs/RESTORE_MATRIX.md b/docs/RESTORE_MATRIX.md index eeea292..37bcd5c 100644 --- a/docs/RESTORE_MATRIX.md +++ b/docs/RESTORE_MATRIX.md @@ -31,7 +31,7 @@ Sie ist die fachliche Ergaenzung zu `docs/DISASTER_RECOVERY.md`. | Tailscale | Share / Borg | `/mnt/user/appdata/tailscale` | keine | Tailscale-State im Pfad | Host-Netz | Tailscale verbunden | | PostgreSQL 17 | Share + Dumps | `/mnt/user/appdata/postgresql17` | `postgresql17-globals.sql`, `postgresql17-mailarchiver.dump`, `postgresql17-paperless.dump`, optional `postgresql17-authelia.dump` | `postgres_password.txt` | `backend_net` | DB startet, Ziel-Datenbanken vorhanden | | Redis | Share / Host | `/mnt/user/appdata/redis` | keine | `redis_password.txt` | `backend_net` | Redis startet, Apps verbinden sich | -| Authelia | Borg | `/mnt/user/appdata/authelia/config`, `/mnt/user/appdata/secrets/*authelia*` | Shared PostgreSQL, optional Dump `postgresql17-authelia.dump` | JWT/Session/Storage/Postgres-Secret-Dateien | PostgreSQL 17, Traefik | Login-Seite und ForwardAuth funktionieren; aktive Sessions werden nach Restart neu aufgebaut | +| Authelia | Borg | `/mnt/user/appdata/authelia/config`, `/mnt/user/appdata/secrets/*authelia*` | Shared PostgreSQL, optional Dump `postgresql17-authelia.dump` | JWT/Session/Storage/Postgres-/SMTP-Secret-Dateien | PostgreSQL 17, Traefik, GMX SMTP | Login-Seite und ForwardAuth funktionieren; SMTP-Notifier startet; aktive Sessions werden nach Restart neu aufgebaut | | Gitea | Borg / Share | `/mnt/user/services/gitea/data` | SQLite in `/data` | keine separaten Secret-Dateien dokumentiert | Traefik | Web-UI erreichbar, Repo sichtbar, SSH-Port reagiert | | Komodo | Borg / Share | `/mnt/user/appdata/komodo/core`, `/mnt/user/appdata/komodo/periphery` | `komodo-mongo.archive.gz` falls verifiziert | `komodo_mongo_password.txt`, `KOMODO_*` Stack ENV | Traefik, Mongo, Gitea | UI erreichbar, Periphery verbunden | | Vaultwarden | Borg / Share | `/mnt/user/appdata/vaultwarden` | dateibasiert | `vaultwarden_admin_token.txt` | Traefik | Login-Seite erreichbar, Tresor-Daten sichtbar | diff --git a/docs/SERVICE_CATALOG.md b/docs/SERVICE_CATALOG.md index 293d6d1..b45497f 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; Repo-Baseline muss manuell in die Host-Config gemerged werden, OIDC/Secrets bleiben hostseitig; 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, GMX SMTP | `/mnt/user/appdata/authelia/config`, Authelia Secret-Dateien | Tier 1, config + DB + secrets | ja | Bewusst ohne Redis-Session-Backend; SMTP-Notifier via GMX und `authelia_smtp_password.txt`; explizite DNS-Server fuer SMTP/NTP; Repo-Baseline muss manuell in die Host-Config gemerged werden, OIDC/Secrets bleiben hostseitig; 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 diff --git a/security/authelia/configuration.yml b/security/authelia/configuration.yml index 714312f..9f9a07f 100644 --- a/security/authelia/configuration.yml +++ b/security/authelia/configuration.yml @@ -77,15 +77,13 @@ storage: notifier: disable_startup_check: false - filesystem: - filename: /config/notifications.log - # SMTP (fuer 2FA-Codes per Mail - optional, empfohlen fuer Produktion): - # smtp: - # address: smtp://smtp.example.com:587 - # username: user@example.com - # password: your_password - # sender: Authelia - # subject: "[Authelia] {title}" + smtp: + address: submission://mail.gmx.net:587 + username: michideheld@gmx.de + sender: "Authelia " + identifier: auth.kaleschke.info + subject: "[Authelia] {title}" + startup_check_address: michideheld@gmx.de totp: issuer: kaleschke.info diff --git a/security/authelia/docker-compose.yml b/security/authelia/docker-compose.yml index fed1978..6b12e67 100644 --- a/security/authelia/docker-compose.yml +++ b/security/authelia/docker-compose.yml @@ -9,12 +9,18 @@ services: AUTHELIA_SESSION_SECRET_FILE: /secrets/session_secret.txt AUTHELIA_STORAGE_ENCRYPTION_KEY_FILE: /secrets/storage_encryption_key.txt AUTHELIA_STORAGE_POSTGRES_PASSWORD_FILE: /secrets/postgres_password.txt + AUTHELIA_NOTIFIER_SMTP_PASSWORD_FILE: /secrets/smtp_password.txt volumes: - /mnt/user/appdata/authelia/config:/config - /mnt/user/appdata/secrets/authelia_jwt_secret.txt:/secrets/jwt_secret.txt:ro - /mnt/user/appdata/secrets/authelia_session_secret.txt:/secrets/session_secret.txt:ro - /mnt/user/appdata/secrets/authelia_storage_encryption_key.txt:/secrets/storage_encryption_key.txt:ro - /mnt/user/appdata/secrets/authelia_postgres_password.txt:/secrets/postgres_password.txt:ro + - /mnt/user/appdata/secrets/authelia_smtp_password.txt:/secrets/smtp_password.txt:ro + dns: + - 192.168.178.58 + - 1.1.1.1 + - 8.8.8.8 networks: - frontend_net - backend_net