Update Doku
Update Docu
This commit is contained in:
@@ -3,7 +3,7 @@
|
||||
> **Single Source of Truth** für Docker-Netzwerkarchitektur, Sicherheitsregeln, Zielbild und Migration des Kallilabcore-Homelabs.
|
||||
> **Arbeitsregel für KI-Assistenten:** Dieses Dokument immer zuerst lesen, bevor Fragen zu Containern, Netzwerken, Traefik, Tailscale, Migration oder Security beantwortet werden.
|
||||
|
||||
**Stand:** 2026-04-15 | **Aktueller Schwerpunkt:** GitOps / Borg / Workflow-Konsolidierung
|
||||
**Stand:** 2026-04-17 | **Aktueller Schwerpunkt:** GitOps / Doku-Synchronisierung / Reproduzierbare Deployments
|
||||
|
||||
---
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
|---|---|
|
||||
| Host-OS | Unraid |
|
||||
| Hostname | Kallilabcore |
|
||||
| Reverse Proxy | Traefik v3 (100% Docker-Labels, kein File-Provider) |
|
||||
| Reverse Proxy | Traefik v3 (Service-Routing via Docker-Labels, File-Provider fuer Middlewares, TLS und Dashboards) |
|
||||
| VPN / Remote-Zugang | Tailscale (`tailscale`, host-Netz, Git-Stack) |
|
||||
| DNS-Stack | AdGuard Home (`dns_net` + `frontend_net`) → Unbound (`dns_net`) |
|
||||
| Basis-Domain | `kaleschke.info` |
|
||||
@@ -99,10 +99,10 @@ Internet
|
||||
traefik (80/443)
|
||||
│
|
||||
└── frontend_net
|
||||
├── öffentliche Apps (vaultwarden, mealie, paperless, immich, gitea, ntfy, homepage)
|
||||
├── Admin-UIs mit Middleware (uptime-kuma, filebrowser, scrutiny, code-server, backrest, borg-ui)
|
||||
├── öffentliche Apps (vaultwarden, mealie, paperless, immich, gitea, ntfy, mail-archiver)
|
||||
├── geschützte UIs mit Middleware (homepage, paperless-gpt, uptime-kuma, filebrowser, scrutiny, code-server, backrest, borg-ui, glances, speedtest)
|
||||
├── Admin-UI mit nativer Auth (komodo)
|
||||
└── Hybrid-Dienste mit Internetbedarf (mail-archiver, ddns-updater)
|
||||
└── Dienste mit Internetbedarf ohne öffentliche UI (ddns-updater)
|
||||
|
||||
backend_net (internal: true)
|
||||
├── postgresql17
|
||||
@@ -137,7 +137,7 @@ Diese Dienste sind über echte `*.kaleschke.info`-Domains erreichbar:
|
||||
- `ntfy` — ntfy.kaleschke.info
|
||||
- `gitea` (Web) — git.kaleschke.info
|
||||
- `immich_server` — immich.kaleschke.info
|
||||
- `homepage` — home.kaleschke.info
|
||||
- `mail-archiver` — mail.kaleschke.info
|
||||
|
||||
### 4.2 Nicht öffentlich / nur Tailscale oder Traefik + Middleware
|
||||
Diese Dienste sind **keine Public Apps**:
|
||||
@@ -149,6 +149,10 @@ Diese Dienste sind **keine Public Apps**:
|
||||
- `code-server` — Traefik + Middleware
|
||||
- `backrest` — Traefik + Middleware
|
||||
- `borg-ui` — borg.kaleschke.info (Middleware)
|
||||
- `homepage` — home.kaleschke.info (Middleware)
|
||||
- `paperless-gpt` — paperless-gpt.kaleschke.info (Middleware)
|
||||
- `glances` — glances.kaleschke.info (Middleware)
|
||||
- `speedtest-tracker` — speedtest.kaleschke.info (Middleware)
|
||||
- `Traefik-Dashboard`
|
||||
- `AdGuard Home` — Port 3000 direkt (kein Traefik, nur LAN-Zugang)
|
||||
|
||||
@@ -171,7 +175,7 @@ Wenn ein Dienst im `frontend_net` hängt, heißt das **nicht automatisch öffent
|
||||
4. Secrets als Datei / `_FILE` oder Komodo Stack Environment Variables mit `${VAR}`
|
||||
5. `no-new-privileges:true` ergänzen, wo praktikabel
|
||||
6. `traefik.docker.network=frontend_net` immer explizit setzen
|
||||
7. Admin-Dienste immer mit `dashboard-auth@file,secure-headers@file`
|
||||
7. Admin- und interne Web-Dienste standardmaessig mit zentraler Middleware absichern (`authelia@file,secure-headers@file` oder dokumentierte Ausnahme)
|
||||
8. Placeholder-Domains (`yourdomain.tld`) sind verboten
|
||||
9. `privileged: true` nur mit Begründung
|
||||
10. Volume-Mounts so klein und so read-only wie möglich
|
||||
@@ -221,20 +225,20 @@ Legende Status:
|
||||
|
||||
| Container | Status | Soll-Netz(e) | Finaler Zugang | Finaler Sollzustand | Offene Punkte |
|
||||
|---|---|---|---|---|---|
|
||||
| `traefik` | ✅ | `frontend_net`, `backend_net` | öffentlich 80/443 | zentraler Ingress, 100% Docker-Labels | — |
|
||||
| `traefik` | ✅ | `frontend_net`, `backend_net` | öffentlich 80/443 | zentraler Ingress, Service-Routing via Docker-Labels | — |
|
||||
| `AdGuard Home` | ✅ | `dns_net` (172.23.0.3), `frontend_net` | Port 53 DNS direkt, Port 3000 Admin (LAN) | DNS-Server + Upstream zu unbound; kein Traefik (DNS-Sonderfall) | Admin-Port per Traefik + Middleware absichern (Block F) |
|
||||
| `unbound` | ✅ | `dns_net` | intern | Upstream-Resolver für AdGuard, isoliert | — |
|
||||
| `ddns-updater` | ✅ | `frontend_net` | intern | Cloudflare DNS API; bleibt in `frontend_net` | Dokumentierte Ausnahme |
|
||||
| `tailscale` | ✅ | `host` | VPN-Zugang | Git-Stack (`host-services/tailscale/`) | `TS_USERSPACE`/`privileged` später prüfen |
|
||||
| `backrest` | ✅ | `frontend_net`, `backend_net` | Traefik + Middleware | `traefik.docker.network=frontend_net` korrigiert | Breite Mounts straffen (Block F) |
|
||||
| `homepage` | ✅ | `frontend_net` | Traefik | öffentliche Startseite via `home.kaleschke.info` | — |
|
||||
| `backrest` | ✅ | `frontend_net`, `backend_net` | Traefik + Middleware | produktiver Backup-Admin-Dienst | breite Mounts bewusst dokumentieren |
|
||||
| `homepage` | ✅ | `frontend_net` | Traefik + Middleware | geschuetztes Start-Dashboard via `home.kaleschke.info` | — |
|
||||
|
||||
### 7.2 Sicherheit / Identity
|
||||
|
||||
| Container | Status | Soll-Netz(e) | Finaler Zugang | Finaler Sollzustand | Offene Punkte |
|
||||
|---|---|---|---|---|---|
|
||||
| `vaultwarden` | ✅ | `frontend_net` | Traefik | kein Host-Port, `ADMIN_TOKEN_FILE` | — |
|
||||
| `authelia` | 🔄 | `frontend_net`, `backend_net` | Traefik via `auth.kaleschke.info` | ForwardAuth-Provider, Secrets via `_FILE`, PostgreSQL + Redis Shared | NAS-seitige Einrichtung ausstehend (Secrets, DB, Users, DNS) |
|
||||
| `authelia` | ✅ | `frontend_net`, `backend_net` | Traefik via `auth.kaleschke.info` | aktiver ForwardAuth-Provider, Secrets via `_FILE`, PostgreSQL + Redis Shared | — |
|
||||
|
||||
### 7.3 Datenbanken / Caches
|
||||
|
||||
@@ -251,7 +255,7 @@ Legende Status:
|
||||
| Container | Status | Soll-Netz(e) | Finaler Zugang | Finaler Sollzustand | Offene Punkte |
|
||||
|---|---|---|---|---|---|
|
||||
| `paperless-ngx` | ✅ | `frontend_net`, `backend_net` | Traefik | aktiv via `paperless.kaleschke.info` | — |
|
||||
| `Paperless-AI` | ✅ | `frontend_net` | Traefik | aktiv | — |
|
||||
| `mail-archiver` | ✅ | `frontend_net`, `backend_net` | Traefik | aktiv via `mail.kaleschke.info`; IMAP-Abruf + DB-Zugang | — |
|
||||
| `mealie` | ✅ | `frontend_net`, `mealie_mealie_internal` | Traefik | sauber getrennte App/DB-Struktur | — |
|
||||
| `ntfy` | ✅ | `frontend_net` | Traefik | aktiv via `ntfy.kaleschke.info`, Git-Stack | — |
|
||||
| `gitea` | ✅ | `frontend_net` | Traefik + SSH-Port 222 | Web via Traefik, SSH direkt gebunden | — |
|
||||
@@ -266,15 +270,17 @@ Legende Status:
|
||||
| `code-server` | ✅ | `frontend_net` | Traefik + Middleware | `PASSWORD_FILE` aktiv | — |
|
||||
| `PortainerCE` | ❌ entfernt | - | - | 2026-03-29 abgeschaltet | historisch; nicht mehr deployen |
|
||||
| `filebrowser` | ✅ | `frontend_net` | Traefik + Middleware | aktiv via `files.kaleschke.info` | Mounts einschränken (Block F) |
|
||||
| `borg-ui` | 🔄 | `frontend_net` | Traefik + Middleware | Git-Stack für Borg/BorgBase-Backups; Borg UI bündelt Borg-CLI im Container | BorgBase-SSH-Key hinterlegen, erstes Repo initialisieren, Quell-Mounts bei Bedarf gezielt erweitern |
|
||||
| `mail-archiver` | ✅ | `frontend_net`, `backend_net` | Traefik | aktiv via `mail.kaleschke.info`; IMAP-Abruf + DB-Zugang | — |
|
||||
| `borg-ui` | ✅ | `frontend_net` | Traefik + Middleware | produktiver Borg-/Restore-Dienst; `/local/secrets` ist bewusst Teil des Restore-Scopes | BorgBase-Repo und Key laufend pflegen |
|
||||
| `paperless-gpt` | ✅ | `frontend_net` | Traefik + Middleware | aktiv via `paperless-gpt.kaleschke.info` | — |
|
||||
|
||||
### 7.6 Monitoring / Status
|
||||
|
||||
| Container | Status | Soll-Netz(e) | Finaler Zugang | Finaler Sollzustand | Offene Punkte |
|
||||
|---|---|---|---|---|---|
|
||||
| `UptimeKuma` | ✅ | `frontend_net` | Traefik + Middleware | aktiv via `uptime.kaleschke.info` | — |
|
||||
| `glances` | ✅ | `frontend_net` | Traefik + Middleware | aktiv via `glances.kaleschke.info` | — |
|
||||
| `scrutiny` | ✅ | `frontend_net` | Traefik + Middleware | aktiv via `scrutiny.kaleschke.info`, Git-Stack | `privileged` später prüfen |
|
||||
| `speedtest-tracker` | ✅ | `frontend_net` | Traefik + Middleware | aktiv via `speedtest.kaleschke.info` | — |
|
||||
|
||||
### 7.7 Noch offene Sonderfälle
|
||||
|
||||
@@ -295,7 +301,6 @@ Legende Status:
|
||||
| `Dozzle` | 2026-03-28 | nicht mehr aktiv |
|
||||
| `dashdot` | 2026-03-28 | nicht mehr aktiv |
|
||||
| `netdata` | 2026-03-28 | nicht mehr aktiv |
|
||||
| `Glances` | 2026-03-28 | nicht mehr aktiv |
|
||||
| `netalertx` | 2026-03-28 | nicht mehr aktiv |
|
||||
| `luckyBackup` | 2026-03-28 | nicht mehr aktiv; Backup via backrest |
|
||||
| `Stash` | 2026-03-28 | nicht mehr aktiv |
|
||||
@@ -321,7 +326,7 @@ labels:
|
||||
|
||||
### Zusatz fuer Admin-Dienste (Standard)
|
||||
```yaml
|
||||
- traefik.http.routers.<name>.middlewares=dashboard-auth@file,secure-headers@file
|
||||
- traefik.http.routers.<name>.middlewares=authelia@file,secure-headers@file
|
||||
```
|
||||
|
||||
### Regeln
|
||||
@@ -331,6 +336,7 @@ labels:
|
||||
- `tls=true` immer explizit setzen
|
||||
- wenn Traefik aktiv ist, werden direkte Host-Ports entfernt
|
||||
- Admin-Dienste standardmaessig nicht ohne Middleware veroeffentlichen
|
||||
- `dashboard-auth@file` bleibt fuer das Traefik-Dashboard reserviert; dokumentierte Ausnahmen wie `Komodo` bleiben moeglich
|
||||
- **File-Provider nur noch für:** `middlewares.yml`, `tls.yml`, `dashboards.yml` — keine Service-Routen mehr via File-Provider
|
||||
- dokumentierte Ausnahmen muessen in Abschnitt 10 begruendet werden
|
||||
|
||||
@@ -485,7 +491,7 @@ Host-Pfade in `env_file` (z.B. `/mnt/...`) sind in Git-Stacks nicht verfügbar.
|
||||
- `borg-ui` läuft als Admin-Dienst in `ops/borg-ui/docker-compose.yml`
|
||||
- nur `frontend_net`, weil Web-UI + externer SSH-Zugang zu BorgBase benötigt werden
|
||||
- keine direkten Host-Ports; Zugriff ausschließlich via Traefik + Middleware über `borg.kaleschke.info`
|
||||
- Mounts bewusst klein gehalten: `/mnt/user/appdata` read-only als erste Backup-Quelle, separates Restore-Ziel unter `/mnt/user/appdata/borg-ui/restore`
|
||||
- breite Restore-/Backup-Mounts bewusst gesetzt; inklusive `/local/secrets` fuer Disaster Recovery, separates Restore-Ziel unter `/mnt/user/appdata/borg-ui/restore`
|
||||
- kein separater Borg-CLI-Container nötig, da Borg UI die Borg-CLI bereits im Container mitbringt
|
||||
|
||||
| Container | `_FILE` Support |
|
||||
@@ -494,9 +500,12 @@ Host-Pfade in `env_file` (z.B. `/mnt/...`) sind in Git-Stacks nicht verfügbar.
|
||||
| PostgreSQL | ✅ ja |
|
||||
| code-server | ✅ ja (`PASSWORD_FILE`) |
|
||||
| Immich Postgres | ✅ ja (`POSTGRES_PASSWORD_FILE`) |
|
||||
| Mealie | ❌ nein → Stack ENV |
|
||||
| Mealie | ✅ ja (`POSTGRES_PASSWORD_FILE`) |
|
||||
| paperless-ngx | ❌ nein für DB-Pass → Stack ENV |
|
||||
|
||||
### Reproduzierbare Deployments (2026-04-17)
|
||||
Mutable Tags wie `latest`, `stable`, `release` oder reine Major-Tags wurden auf die **aktuell laufenden Digests** eingefroren. Das ist bewusst **kein Upgrade-Mechanismus**, sondern dient dazu, den heute funktionierenden Laufzeitstand exakt im Repo festzuhalten. Echte Versions-Upgrades bleiben ein eigener, geplanter Schritt.
|
||||
|
||||
### ddns-updater — Netz-Ausnahme
|
||||
Bleibt bewusst in `frontend_net` statt `backend_net`, weil `backend_net` `internal: true` ist und ddns-updater die Cloudflare-API erreichen muss.
|
||||
|
||||
@@ -516,4 +525,4 @@ Beispiel (Mealie): `mealie` → `frontend_net` + `mealie_mealie_internal`, `meal
|
||||
Dieses Dokument ist keine lose Notiz, sondern das **operative Masterdokument** für die Docker- und Zugriffsarchitektur des Homelabs.
|
||||
|
||||
**Zielbild in einem Satz:**
|
||||
`frontend_net` für alle Web-UIs und Dienste mit Internetbedarf, `backend_net` für interne Backends, app-interne Netze nur wenn technisch nötig, Tailscale für Remote-Admin-Zugriff, Traefik als einziger Web-Einstieg (100% Docker-Labels), Komodo als GitOps-Stack-Manager, AdGuard Home + Unbound für DNS, keine produktiven `bridge`-Container mehr.
|
||||
`frontend_net` für Web-UIs und Dienste mit Internetbedarf, `backend_net` für interne Backends, app-interne Netze nur wenn technisch nötig, Tailscale für Remote-Admin-Zugriff, Traefik als einziger Web-Einstieg (Service-Routing via Docker-Labels, File-Provider nur für zentrale Dynamic-Config), Komodo als GitOps-Stack-Manager, AdGuard Home + Unbound für DNS, keine produktiven `bridge`-Container mehr.
|
||||
|
||||
@@ -13,7 +13,7 @@ Vor jeder Aenderung lesen:
|
||||
|
||||
- Host: Unraid
|
||||
- Container: Docker Compose
|
||||
- Reverse Proxy: Traefik v3 (100% Docker-Labels, kein File-Provider mehr)
|
||||
- Reverse Proxy: Traefik v3 (Service-Routing via Docker-Labels, File-Provider nur fuer zentrale Dynamic-Config)
|
||||
- Zugriff: Tailscale (VPN)
|
||||
- DNS: AdGuard Home + Unbound
|
||||
- GitOps: Gitea + Komodo
|
||||
@@ -56,4 +56,5 @@ Vor jeder Aenderung lesen:
|
||||
- Portainer CE ist abgeschaltet und kein Teil des aktiven Betriebs mehr.
|
||||
- Homepage ist das aktive produktive Frontend / Start-Dashboard.
|
||||
- Traefik `dynamic/` bleibt eine dokumentierte manuelle Host-Sync-Ausnahme ausserhalb des normalen Komodo-Deployments.
|
||||
- Mutable Image-Tags sind auf die aktuell laufenden Digests eingefroren; echte Versions-Upgrades erfolgen bewusst separat.
|
||||
- Der verbindliche Detailablauf steht in `docs/WORKFLOW.md`.
|
||||
|
||||
@@ -10,6 +10,7 @@ Dieses Dokument ist nur noch ein historischer Verlauf. Der aktuelle operative Ab
|
||||
- Firefly, Firefly-Fints und Semaphore sind entfernt.
|
||||
- Borg UI ist produktiv, Dump-Automatisierung laeuft host-seitig und ein Restore-Smoke-Test wurde erfolgreich durchgefuehrt.
|
||||
- GitHub Desktop ist der bevorzugte lokale Workflow fuer `Fetch`, `Pull`, `Commit` und `Push`.
|
||||
- Mutable Image-Tags sind auf die aktuell laufenden Digests eingefroren.
|
||||
|
||||
---
|
||||
|
||||
@@ -40,6 +41,16 @@ Dieses Dokument ist nur noch ein historischer Verlauf. Der aktuelle operative Ab
|
||||
- Firefly, Firefly-Fints und Semaphore aus Repo und Homelab entfernt.
|
||||
- GitHub Desktop als Standard-Workflow fuer den lokalen Sync festgelegt.
|
||||
|
||||
### 2026-04-17 - Sicherheits- und Doku-Abgleich
|
||||
|
||||
- `code-server` hinter `authelia@file,secure-headers@file` abgesichert.
|
||||
- Redis von Klartext in der Compose auf Secret-Datei unter `/mnt/user/appdata/secrets/redis_password.txt` umgestellt.
|
||||
- Redis-Passwort bewusst **nicht** rotiert; Live-Passwort bleibt vorerst unveraendert.
|
||||
- `mail-archiver` in der Architektur-Doku an den realen Traefik-Betrieb angepasst.
|
||||
- `paperless-gpt` von `LOG_LEVEL=debug` auf `info` umgestellt.
|
||||
- `speedtest-tracker` von `APP_DEBUG=true` auf `false` umgestellt.
|
||||
- Mutable Image-Tags fuer produktive Stacks auf die aktuell laufenden Digests eingefroren, um Deployments reproduzierbar zu machen.
|
||||
|
||||
---
|
||||
|
||||
## Dauerhafte Learnings
|
||||
|
||||
+33
-15
@@ -1,13 +1,14 @@
|
||||
# Secrets Map - Homelab
|
||||
# Secrets Map - Homelab
|
||||
|
||||
Dieses Dokument listet sensible Daten, deren Ablageorte und die vorgesehene Einbindungsart.
|
||||
|
||||
## Grundregeln
|
||||
|
||||
- Secrets liegen **niemals im Git-Repository**
|
||||
- Standardspeicherort: `/mnt/user/appdata/secrets/`
|
||||
- Standardspeicherort ist `/mnt/user/appdata/secrets/`
|
||||
- dokumentierte Ausnahmen mit dienstspezifischen Pfaden sind erlaubt
|
||||
- Berechtigungen: `chmod 600`
|
||||
- Nutzung in Docker ueber `_FILE` Variablen oder Komodo Stack Environment Variables
|
||||
- Nutzung in Docker ueber `_FILE`, direkte Secret-Datei-Mounts oder Komodo Stack Environment Variables
|
||||
|
||||
---
|
||||
|
||||
@@ -15,16 +16,27 @@ Dieses Dokument listet sensible Daten, deren Ablageorte und die vorgesehene Einb
|
||||
|
||||
| Service | Secret | Datei / Methode | Status |
|
||||
|---|---|---|---|
|
||||
| Vaultwarden | ADMIN_TOKEN | `vaultwarden_admin_token.txt` -> `ADMIN_TOKEN_FILE` | aktiv |
|
||||
| PostgreSQL 17 | DB Password | `postgres_password.txt` -> `POSTGRES_PASSWORD_FILE` | aktiv |
|
||||
| Redis | Passwort | `redis_password.txt` -> Datei-Mount in `infra/redis/docker-compose.yml` | aktiv |
|
||||
| Mealie | DB Password | Stack ENV `${MEALIE_DB_PASSWORD}` | aktiv |
|
||||
| mealie-postgres | DB Password | Stack ENV `${POSTGRES_PASSWORD}` | aktiv |
|
||||
| Vaultwarden | `ADMIN_TOKEN` | `/mnt/user/appdata/secrets/vaultwarden_admin_token.txt` -> `ADMIN_TOKEN_FILE` | aktiv |
|
||||
| Traefik | Cloudflare DNS API Token | `/mnt/user/appdata/traefik/secrets/cloudflare_dns_api_token` -> Docker Secret `cloudflare_dns_api_token` | aktiv |
|
||||
| PostgreSQL 17 | DB Password | `/mnt/user/appdata/secrets/postgres_password.txt` -> `POSTGRES_PASSWORD_FILE` | aktiv |
|
||||
| Redis | Passwort | `/mnt/user/appdata/secrets/redis_password.txt` -> Datei-Mount + Startkommando in `infra/redis/docker-compose.yml` | aktiv |
|
||||
| Mealie | DB Password | `/mnt/user/appdata/secrets/mealie_postgres_password.txt` -> `POSTGRES_PASSWORD_FILE` | aktiv |
|
||||
| mealie-postgres | DB Password | `/mnt/user/appdata/secrets/mealie_postgres_password.txt` -> `POSTGRES_PASSWORD_FILE` | aktiv |
|
||||
| Paperless-ngx | DB Password | Stack ENV `${PAPERLESS_DBPASS}` | aktiv |
|
||||
| code-server | Passwort | `code_server_password.txt` -> `PASSWORD_FILE` | aktiv |
|
||||
| Paperless-ngx | Redis URL | Stack ENV `${PAPERLESS_REDIS}` | aktiv |
|
||||
| code-server | Passwort | `/mnt/user/appdata/code-server/secrets/password` -> `PASSWORD_FILE` | aktiv |
|
||||
| Immich (server) | DB Password | Stack ENV `${IMMICH_DB_PASSWORD}` | aktiv |
|
||||
| immich-postgres | DB Password | `immich_db.txt` -> `POSTGRES_PASSWORD_FILE` | aktiv |
|
||||
| immich-postgres | DB Password | `/mnt/user/appdata/secrets/immich_postgres_password.txt` -> `POSTGRES_PASSWORD_FILE` | aktiv |
|
||||
| mail-archiver | DB Connection | Stack ENV `${MAILARCHIVER_DB_CONNECTION}` | aktiv |
|
||||
| mail-archiver | Auth Password | Stack ENV `${MAILARCHIVER_AUTH_PASSWORD}` | aktiv |
|
||||
| Authelia | JWT Secret | `/mnt/user/appdata/secrets/authelia_jwt_secret.txt` -> `AUTHELIA_JWT_SECRET_FILE` | aktiv |
|
||||
| Authelia | Session Secret | `/mnt/user/appdata/secrets/authelia_session_secret.txt` -> `AUTHELIA_SESSION_SECRET_FILE` | aktiv |
|
||||
| Authelia | Storage Encryption Key | `/mnt/user/appdata/secrets/authelia_storage_encryption_key.txt` -> `AUTHELIA_STORAGE_ENCRYPTION_KEY_FILE` | aktiv |
|
||||
| Authelia | Postgres Password | `/mnt/user/appdata/secrets/authelia_postgres_password.txt` -> `AUTHELIA_STORAGE_POSTGRES_PASSWORD_FILE` | aktiv |
|
||||
| Komodo Mongo | Root Password | `/mnt/user/appdata/secrets/komodo_mongo_password.txt` -> `MONGO_INITDB_ROOT_PASSWORD_FILE` | aktiv |
|
||||
| Komodo Core | App Secrets | Stack ENV `${KOMODO_SECRET_KEY}`, `${KOMODO_JWT_SECRET}`, `${KOMODO_MONGO_PASSWORD}`, `${KOMODO_PERIPHERY_PASSKEY}` | aktiv |
|
||||
| Homepage | API Tokens / Zugangsdaten | Stack ENV `HOMEPAGE_VAR_*` | aktiv |
|
||||
| speedtest-tracker | App Key / Admin-Zugang | Stack ENV `${APP_KEY}`, `${ADMIN_PASSWORD}` | aktiv |
|
||||
| Borg UI / Borg | Admin-Login, `SECRET_KEY`, SSH-Keys, Repo-Credentials | persistent unter `/mnt/user/appdata/borg-ui/data/` | aktiv |
|
||||
|
||||
---
|
||||
@@ -42,16 +54,22 @@ Dieses Dokument listet sensible Daten, deren Ablageorte und die vorgesehene Einb
|
||||
|
||||
```text
|
||||
/mnt/user/appdata/secrets/
|
||||
|-- vaultwarden_admin_token.txt
|
||||
|-- authelia_jwt_secret.txt
|
||||
|-- authelia_postgres_password.txt
|
||||
|-- authelia_session_secret.txt
|
||||
|-- authelia_storage_encryption_key.txt
|
||||
|-- immich_postgres_password.txt
|
||||
|-- komodo_mongo_password.txt
|
||||
|-- mealie_postgres_password.txt
|
||||
|-- postgres_password.txt
|
||||
|-- redis_password.txt
|
||||
|-- code_server_password.txt
|
||||
`-- immich_db.txt
|
||||
`-- vaultwarden_admin_token.txt
|
||||
```
|
||||
|
||||
Hinweise:
|
||||
Weitere dokumentierte Secret-Pfade:
|
||||
|
||||
- Mealie, Paperless, mail-archiver und der Immich-Server nutzen Stack Environment Variables statt Datei-Mounts.
|
||||
- `/mnt/user/appdata/code-server/secrets/password`
|
||||
- `/mnt/user/appdata/traefik/secrets/cloudflare_dns_api_token`
|
||||
- Borg UI verwaltet Session-Secret, Admin-Login, SSH-Keys und Repo-Credentials in seiner persistenten `/data`-Struktur. Diese Daten liegen nicht im Git, muessen aber gesichert werden.
|
||||
|
||||
---
|
||||
|
||||
@@ -243,6 +243,15 @@ Diese Ausnahme bleibt bewusst bestehen. Der File-Provider wird weiterhin nur fue
|
||||
|
||||
---
|
||||
|
||||
## Image-Versionierung
|
||||
|
||||
- Mutable Tags wie `latest`, `stable`, `release` oder reine Major-Tags werden nach Moeglichkeit auf den **aktuell laufenden Digest** gepinnt.
|
||||
- Digest-Pinning friert den bekannten Laufzeitstand ein; es ist **kein** automatisches Upgrade.
|
||||
- Echte Versions-Upgrades sind ein eigener, bewusster Aenderungsblock mit anschliessendem Test.
|
||||
- Wenn der laufende Digest unbekannt ist, wird er zuerst am produktiven Container ausgelesen und erst danach im Repo festgeschrieben.
|
||||
|
||||
---
|
||||
|
||||
## DNS-Regeln fuer Container
|
||||
|
||||
Nicht alle Container koennen externe DNS-Namen aufloesen. Standardmaessig nutzt Docker `127.0.0.11` als internen DNS-Resolver. In bestimmten Netzwerk-Setups schlaegt externe Namensaufloesung damit fehl (`server misbehaving`).
|
||||
|
||||
@@ -18,6 +18,8 @@ Do not back up raw live database storage directories as the primary recovery art
|
||||
2. Borg backs up `/local/borg-dumps` plus the critical mounted paths below.
|
||||
3. Borg retention handles history; the dump directory itself keeps only the latest artifacts.
|
||||
|
||||
The inclusion of `/local/secrets` is intentional: Borg is expected to cover disaster recovery for selected secret material as part of the current homelab restore strategy.
|
||||
|
||||
## Service Inventory
|
||||
|
||||
| Service | Recovery Method | What Borg Should Capture |
|
||||
|
||||
Reference in New Issue
Block a user