From 0625594443364b79d015e6e61a20b710f1c10a9d Mon Sep 17 00:00:00 2001 From: Micha Date: Tue, 26 May 2026 19:53:08 +0200 Subject: [PATCH] Record offline Borg passphrase backup --- docs/AUDIT_2026-05-25_TODO.md | 4 ++-- docs/DISASTER_RECOVERY.md | 4 ++-- docs/EXTERNAL_DEPENDENCIES.md | 4 ++-- docs/MIGRATION_LOG.md | 5 +++++ docs/SECRETS_MAP.md | 2 +- docs/SERVICES_RECOVERY.md | 2 +- 6 files changed, 13 insertions(+), 8 deletions(-) diff --git a/docs/AUDIT_2026-05-25_TODO.md b/docs/AUDIT_2026-05-25_TODO.md index 3fcf36c..042eb9c 100644 --- a/docs/AUDIT_2026-05-25_TODO.md +++ b/docs/AUDIT_2026-05-25_TODO.md @@ -16,7 +16,7 @@ Status: Arbeitsliste fuer die Umsetzung. Authelia-2FA/OIDC bleibt bewusst spaet, Kontext bewusst gesichert, bevor weitere Live-Aenderungen passieren: 1. USV-Entscheidung treffen: aktuell ist keine funktionierende USV-Abschaltung nachgewiesen. -2. Borg-Passphrase-Offsite-Sicherung und USV-Entscheidung mit Operator treffen. +2. Host-Schedule/Trockenlauf fuer Gitea-Bundles und Restore-Freshness pruefen. 3. Authelia 2FA/OIDC weiterhin nicht anfassen; das bleibt bewusst der letzte Block. ## Sprint 0 - Inventar und Baseline @@ -34,7 +34,7 @@ Kontext bewusst gesichert, bevor weitere Live-Aenderungen passieren: | Status | Aufgabe | Ergebnis | |---|---|---| -| offen | Borg-Passphrase analog sichern | Passphrase ist ohne Host/Vaultwarden wiederherstellbar | +| erledigt | Borg-Passphrase analog sichern | Operator bestaetigt am 2026-05-26: Passphrase ist offline gesichert und ohne Host/Vaultwarden wiederherstellbar | | erledigt (repo) | AdGuard Admin-Bind vorbereiten | Tailscale-IP `100.80.98.33` erfasst, Compose-Soll geaendert | | erledigt | AdGuard Admin-Port auf Tailscale-IP binden | Live validiert: `ss -ltnp` zeigt `100.80.98.33:8082`, DNS auf Port 53 funktioniert, LAN-Zugriff auf `192.168.178.58:8082` schlaegt fehl | | erledigt | Alte Monitoring-Verzeichnisse entfernen | `ops/grafana-influxdb/` und `ops/loki/` sind aus dem aktiven Repo entfernt; Rollback erfolgt ueber Git-Historie | diff --git a/docs/DISASTER_RECOVERY.md b/docs/DISASTER_RECOVERY.md index aab03f2..5f4d217 100644 --- a/docs/DISASTER_RECOVERY.md +++ b/docs/DISASTER_RECOVERY.md @@ -65,7 +65,7 @@ Diese Punkte sollten **vor** einem echten Ausfall geklaert sein: | Repo-Zugang ausserhalb von Gitea | privater GitHub-Push-Mirror `michaelkaleschke-spec/homelab-infra` und lokaler aktueller Clone vorhanden | | Unraid USB-/Flash-Backup | `unraid-flash-config.tar.gz` wird vor Borg unter `/mnt/user/backups/borg/dumps/latest` erzeugt und nach Hetzner/Borg gesichert; Unraid-Connect-Cloud-Backup optional zusaetzlich | | Borg-Ziel | nicht nur lokal auf demselben Ausfallpfad | -| Borg-Passphrase | Host-Secret-Datei vorhanden und fuer Borg-Zugriff verifiziert; externe analoge Hinterlegung bleibt Operator-Aufgabe | +| Borg-Passphrase | Host-Secret-Datei vorhanden und fuer Borg-Zugriff verifiziert; externe Offline-Hinterlegung vom Operator am 2026-05-26 bestaetigt | | Secrets-Dateien | ueber Borg bzw. Restore-Quellen abgedeckt | | Komodo Stack ENV-Werte | extern dokumentiert, z. B. Vaultwarden | | Services-Recovery | `docs/SERVICES_RECOVERY.md` gepflegt, insbesondere Gitea-Repo-Mirror und Komodo-Bootstrap | @@ -400,7 +400,7 @@ Smoke-Test: `hermes-gateway` healthcheck ist gruen, `hermes.kaleschke.info` leit ## 11. Offene Vorbereitungs-To-dos - Unraid-USB-/Flash-Backup regelmaessig ueber `unraid-flash-config.tar.gz` und optional Unraid Connect pruefen -- Borg-Passphrase aus `/mnt/user/appdata/secrets/borg_repo_passphrase.txt` extern analog sicher hinterlegen +- Borg-Passphrase ist laut Operator-Bestaetigung vom 2026-05-26 extern/offline hinterlegt; bei Reviews nur Existenz/Lesbarkeit der Offline-Kopie pruefen, nie den Wert dokumentieren - Komodo Stack-ENV-Werte zentral ausserhalb von Komodo dokumentieren - regelmaessige automatisierte Restore-Smoke-Tests fuer Vaultwarden, Gitea und Paperless etablieren - `komodo-mongo`-Dump nach Major-Upgrades gezielt kontrollieren diff --git a/docs/EXTERNAL_DEPENDENCIES.md b/docs/EXTERNAL_DEPENDENCIES.md index 725f021..1a4a5ed 100644 --- a/docs/EXTERNAL_DEPENDENCIES.md +++ b/docs/EXTERNAL_DEPENDENCIES.md @@ -27,7 +27,7 @@ Authoritativ ist `docs/SECRETS_MAP.md`. Diese Liste markiert nur externe Abhaeng | Secret | Zweck | Recovery-Hinweis | |---|---|---| -| Borg Passphrase | Entschluesselung Borg-Repos | Muss analog/off-system vorhanden sein | +| Borg Passphrase | Entschluesselung Borg-Repos | Offline gesichert, Operator-Bestaetigung 2026-05-26 | | Cloudflare DNS API Token | ACME DNS-Challenge | Token-Rotation und Scope pruefen | | GitHub Mirror Token | Push-Mirror | In Gitea/GitHub verwaltet, nicht im Repo | | Tailscale Account Recovery | Tailnet-Zugang | Account-2FA/Recovery Codes sichern | @@ -65,4 +65,4 @@ Authoritativ ist `docs/SECRETS_MAP.md`. Diese Liste markiert nur externe Abhaeng | Datum | Ergebnis | Naechste Aktion | |---|---|---| -| 2026-05-26 | Bekannte externe Abhaengigkeiten aus Repo-/Betriebsdoku dokumentiert; keine Secret-Werte aufgenommen | Account-Besitz, 2FA-Recovery-Codes, Zahlungswege und Borg-Passphrase extern bestaetigen | +| 2026-05-26 | Bekannte externe Abhaengigkeiten aus Repo-/Betriebsdoku dokumentiert; keine Secret-Werte aufgenommen. Borg-Passphrase ist laut Operator offline gesichert. | Account-Besitz, 2FA-Recovery-Codes und Zahlungswege extern bestaetigen | diff --git a/docs/MIGRATION_LOG.md b/docs/MIGRATION_LOG.md index 72b4f15..b7601fe 100644 --- a/docs/MIGRATION_LOG.md +++ b/docs/MIGRATION_LOG.md @@ -17,6 +17,11 @@ Dieses Dokument ist nur noch ein historischer Verlauf. Der aktuelle operative Ab ## Historische Meilensteine +### 2026-05-26 - Borg-Passphrase offline gesichert + +- Operator bestaetigt: Die Borg-Passphrase ist offline/off-system gesichert und kann ohne Host oder Vaultwarden wiederhergestellt werden. +- Doku aktualisiert nur den Sicherungsstatus; Secret-Wert und Ablageort bleiben bewusst ausserhalb des Repos. + ### 2026-05-26 - Gitea-Bundle-Mechanik definiert - `ops/borg-ui/scripts/gitea-bundle-mirror.sh` ergaenzt: erstellt verifizierte `git bundle`-Artefakte fuer alle bare Gitea-Repositories, schreibt Checksums und einen Markdown-Report. diff --git a/docs/SECRETS_MAP.md b/docs/SECRETS_MAP.md index 1a1ebe3..074f4de 100644 --- a/docs/SECRETS_MAP.md +++ b/docs/SECRETS_MAP.md @@ -97,7 +97,7 @@ Weitere dokumentierte Secret-Pfade: - `/mnt/user/appdata/secrets/hermes_runner_id_ed25519` - `/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. -- Die Borg-Repo-Passphrase liegt zusaetzlich als Host-Secret-Datei fuer Restore-Tests und Notfallzugriff vor; der Wert muss ausserhalb des Homelabs analog gesichert werden. +- Die Borg-Repo-Passphrase liegt zusaetzlich als Host-Secret-Datei fuer Restore-Tests und Notfallzugriff vor. Der Wert ist laut Operator-Bestaetigung vom 2026-05-26 offline gesichert; Ablageort und Wert werden nicht im Repo dokumentiert. - Gitea verwaltet den GitHub-Push-Mirror-PAT in den Repository-Mirror-Settings. Der Wert wird nicht dokumentiert und nicht in Dateien unter `docs/` oder `core/gitea/` geschrieben. - `paperless-ngx` ist eine bewusste Ausnahme: DB-Passwort und Redis-URL bleiben aktuell als Komodo Stack Environment Variables hinterlegt, um den stabil laufenden Produktionsstand nicht fuer eine reine Secret-Mechanik-Migration zu riskieren. diff --git a/docs/SERVICES_RECOVERY.md b/docs/SERVICES_RECOVERY.md index 9e82bd4..200a893 100644 --- a/docs/SERVICES_RECOVERY.md +++ b/docs/SERVICES_RECOVERY.md @@ -88,7 +88,7 @@ Authoritativ ist `docs/SECRETS_MAP.md`. Fuer den Kaltstart ist diese Reihenfolge - Keine Secret-Werte in Git oder Tickets kopieren. - Restore-Tests laufen in Wegwerfpfaden, nie direkt gegen produktive Pfade. - Wenn Gitea und Komodo beide down sind, gewinnt der externe GitHub-Mirror als Repo-Quelle. -- Wenn Borg ohne Passphrase nicht entschluesselbar ist, ist Recovery blockiert. Deshalb ist die analoge Passphrase-Sicherung P0. +- Wenn Borg ohne Passphrase nicht entschluesselbar ist, ist Recovery blockiert. Die Offline-Sicherung wurde am 2026-05-26 vom Operator bestaetigt; bei Reviews nur pruefen, dass sie weiterhin auffindbar und lesbar ist. ## Naechste Aufgaben