From 38fa8c5dd58c251ec88323b089972e193e5f21ae Mon Sep 17 00:00:00 2001 From: Micha Date: Wed, 3 Jun 2026 19:35:43 +0200 Subject: [PATCH] docs(restore): nextcloud restore-test erfolgreich (2026-06-03) Tier-2-Restore-Tests sind damit komplett belegt. Verlauf: - Lauf 1 (commit pre-fix): Borg-Extract+pg_restore ok, HTTP 503 wegen OC_Util.php:486 chmod-Fehlschlag auf shfs/FUSE - Lauf 2 (commit 53c34dc, check_data_directory_permissions: false): HTTP 503 wegen fehlender .ncdata-Marker-Datei - Lauf 3 (commit ba87719, .ncdata-Marker): SUCCESS Endresultat: - HTTP 200 von /status.php - occ status maintenance: false - 126 Tabellen in der wiederhergestellten DB - Quelle: hetzner_borg_appdata_critical, Archiv Taegliche-Sicherung-2026-06-03T04:30:41.432 - Report: /mnt/user/backups/restore-reports/nextcloud-2026-06-03.md Doku-Updates: - RESTORE_MATRIX.md: Nextcloud-Zeile auf "2026-06-03 / quartalsweise" gezogen, Nextcloud aus "Naechste Restore-Test-Kandidaten" entfernt - AUDIT_2026-05-25_TODO.md: Backlog-P1 und Operator-P1 beide auf "erledigt 2026-06-03" - DR_DRILL_2026-06-03.md Folge-Iteration: X-1 als erledigt markiert Restliche P1-Operator-Aufgabe: WSL2+Borg-Client auf DR-Workstation. --- docs/AUDIT_2026-05-25_TODO.md | 4 ++-- docs/DR_DRILL_2026-06-03.md | 2 +- docs/RESTORE_MATRIX.md | 5 ++--- 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/docs/AUDIT_2026-05-25_TODO.md b/docs/AUDIT_2026-05-25_TODO.md index 88ede9b..d86b8da 100644 --- a/docs/AUDIT_2026-05-25_TODO.md +++ b/docs/AUDIT_2026-05-25_TODO.md @@ -8,7 +8,6 @@ Audit-Snapshots wurden aus der Arbeitskopie entfernt; Detailhistorie liegt in Gi | Prioritaet | Punkt | Naechster Schritt | |---|---|---| | P1 | DR-Workstation Bare-Metal-Kit: WSL2 + Borg-Client installieren | Hetzner-DR-SSH-Key ist 2026-06-03 erledigt und offline gesichert. Verbleibend: WSL2 auf dem Gaming-PC einrichten (`wsl --install -d Ubuntu`), `sudo apt install borgbackup` und ein erster Smoke `borg list ssh://u565255@u565255.your-storagebox.de/./hetzner_borg_appdata_critical` mit dem offline gesicherten Key + Passphrase. Bestandteile dokumentiert in `docs/EXTERNAL_DEPENDENCIES.md` Abschnitt "DR-Workstation Bare-Metal-Kit" | -| P1 | Nextcloud-Restore-Test scharf laufen lassen | Skript `ops/restore-tests/nextcloud-restore-test.sh` existiert bereits. Einmal ausfuehren, Report unter `/mnt/user/backups/restore-reports/nextcloud-...md` ablegen. Schliesst die letzte Tier-2-Restore-Luecke | | P2 | Family-Onboarding praktisch starten | Fokus: Vaultwarden als Passwortbasis, Immich-Mobile-Backup auf jedem Handy, Mealie mit erstem Rezept/Einkaufsliste; Ablauf steht in `docs/FAMILY_ONBOARDING.md` | ## Restore-Audit Backlog (Stand 2026-06-03) @@ -17,7 +16,7 @@ Ergebnis des Restore-Skills-Audits (Session 2026-06-02/03). Die kritischen Bugfi | Prioritaet | Punkt | Status | Naechster Schritt | |---|---|---|---| -| P1 | Nextcloud-Restore-Test | offen | Test nach Paperless-Muster, zusaetzlich `occ maintenance:mode`-Choreographie und `oc_admin`-Rolle. Hoechster Lerngewinn unter den fehlenden Tier-2-Tests | +| P1 | Nextcloud-Restore-Test | **erledigt 2026-06-03** | Borg-Extract + pg_restore (126 Tabellen) + HTTP 200 + `occ status maintenance:false`. Quelle: `hetzner_borg_appdata_critical`, Archiv `Taegliche-Sicherung-2026-06-03T04:30:41.432`. Zwei Skript-Bugs im Zuge des Laufs gefixt (`check_data_directory_permissions: false` patchen, `.ncdata`-Marker anlegen). Report `/mnt/user/backups/restore-reports/nextcloud-2026-06-03.md`. | | P1 | Shared PostgreSQL 18 Cluster Restore Drill | **erledigt 2026-06-03** | Globals + 5 DBs (paperless 72t, mailarchiver 1t, authelia 25t, nextcloud 126t, mealie 66t), `data_checksums=on`, Report `/mnt/user/backups/restore-reports/shared-pg-cluster-2026-06-03.md` | | P1 | Komodo-Mongo-Daten-Restore | **erledigt 2026-06-03** | 86904 Dokumente erfolgreich restored, Report `/mnt/user/backups/restore-reports/komodo-mongo-restore-2026-06-03.md`. Nebenbefund: Dump von Mongo 8.0.23, Test auf 7.0.32 — Cross-Version-Warning, fuer Lesetest harmlos | | P2 | Mailarchiver-Restore-Test | **erledigt 2026-06-03** | Data-Protection-Keys + 645M pg_restore + HTTP 200. Report `/mnt/user/backups/restore-reports/mailarchiver-2026-06-03.md` | @@ -41,6 +40,7 @@ Ergebnis des Restore-Skills-Audits (Session 2026-06-02/03). Die kritischen Bugfi ## Zuletzt geschlossen +- Nextcloud-Restore-Test 2026-06-03 erfolgreich (Tier-2 damit komplett belegt). Drei Laeufe noetig: Lauf 1 schlug an `chmod()` der data-Dir auf shfs fehl (`OC_Util.php:486`), Lauf 2 an fehlender `.ncdata`-Marker-Datei, Lauf 3 sauber durch. Beide Bug-Fixes ins Skript `ops/restore-tests/nextcloud-restore-test.sh` integriert. Endresultat: HTTP 200 auf `/status.php`, `occ status` ok, 126 Tabellen in der DB. Source: `hetzner_borg_appdata_critical`, Archiv `Taegliche-Sicherung-2026-06-03T04:30:41.432`. Report unter `/mnt/user/backups/restore-reports/nextcloud-2026-06-03.md`. - Hetzner Storage Box DR-SSH-Key `dr-hetzner-2026-06-03` (ed25519, Passphrase-frei) angelegt: Pubkey via `install-ssh-key` auf der Storage Box autorisiert, passwortloser Login erfolgreich (Borg-Repos `backup`, `backup2`, `hetzner_borg_appdata`, `hetzner_borg_appdata_critical` sichtbar), Private-Key offline neben KOMODO_*-Notiz und GitHub-Deploy-Key abgelegt, Arbeitsplatz-Kopie geloescht. Damit ist Bare-Metal-Borg-Zugang von der DR-Workstation moeglich, sobald WSL2+Borg installiert sind. - Fix Common Problems Plugin (FCP) 2026-06-03 deinstalliert. Befund: drei `grep -R ... /usr/local/emhttp`-Prozesse aus einem FCP-Daily-Scan hingen seit ~7 Tagen in einem Symlink-Loop (`/usr/local/emhttp/mnt -> /mnt`, gesamte Array). 3 Cores dauerhaft 100 %, IOWAIT bis 55 %, USB-Flash unter Dauer-IO. Plugin via `plugin remove` entfernt, Cron + /tmp-Reste sauber, Load von 14.6 auf 1.08 gefallen. FCP wird bewusst nicht wieder installiert (Begruendung siehe `HOMELAB_ARCHITECTURE_MASTER_V2.md` Sektion 13). Bekannte Risiken decken Scrutiny, Monitoring, Posture-Check und Critical-Events-Watcher bereits ab. - GitHub-Mirror Read-Only Deploy-Key `DR Read-Only 2026-06-03` (ed25519, Passphrase-frei) angelegt: GitHub Repo Settings -> Deploy Keys ohne Write-Access, Smoke `git ls-remote` erfolgreich (HEAD `d947c7f` = master), Private-Key offline neben der KOMODO_*-Notiz abgelegt, Arbeitsplatz-Kopie nach USB-Transfer geloescht. Damit ist der DR-Read-Pfad zum privaten Mirror ohne Operator-Browser-Login moeglich. diff --git a/docs/DR_DRILL_2026-06-03.md b/docs/DR_DRILL_2026-06-03.md index fd5fbd1..fe5cce4 100644 --- a/docs/DR_DRILL_2026-06-03.md +++ b/docs/DR_DRILL_2026-06-03.md @@ -481,7 +481,7 @@ Direkt nach dem Drill und nach Operator-Antworten auf vier offene Fragen wurden | P4-8 | DR.md Phase 4 Stufe 3 "Wichtige Stolperfallen": Stack-ENV-Wiederherstellung per `mongorestore` oder manuell | | P5-1 | LOW, nicht angepasst | | P5-2 | DR.md Phase 5.3 um `docker logs`-Verifikation der App-zu-DB-Verbindung erweitert | -| X-1 | Nextcloud-Restore-Test als P1 in Audit-Restliste | +| X-1 | **erledigt 2026-06-03**: Nextcloud-Restore-Test scharf gelaufen, drei Iterationen (zwei Skript-Bugs gefixt), Endresultat SUCCESS mit HTTP 200, occ status ok, 126 DB-Tabellen. Damit ist Tier-2 vollstaendig belegt. | Nicht angefasst: P1-2 (kein Doku-Fix moeglich), P4-4 (im echten Restore-Pfad ohnehin abgedeckt), P4-5 und P5-1 (LOW). Die offenen Operator-Aufgaben (KOMODO_*-Notiz, Read-PAT, DR-Workstation, Nextcloud-Restore) stehen jetzt in `docs/AUDIT_2026-05-25_TODO.md` als P1. diff --git a/docs/RESTORE_MATRIX.md b/docs/RESTORE_MATRIX.md index 763b975..a4dd38b 100644 --- a/docs/RESTORE_MATRIX.md +++ b/docs/RESTORE_MATRIX.md @@ -144,7 +144,7 @@ Stand 2026-06-03. Pro Dienst auf einen Blick: Wurde der Restore schon einmal rea | PostgreSQL 18 Cluster | 1 | 2026-06-03 | globals + 5 per-DB dumps, 290 Tabellen gesamt | quartalsweise | | Redis 8 | 1 | - | noch kein Test | - | | Komodo Mongo Daten | 1 | 2026-06-03 | mongorestore --archive --gzip, 86904 docs | quartalsweise | -| Nextcloud | 2 | - | noch kein Test | **hoechste Prio** (occ-Choreographie) | +| Nextcloud | 2 | 2026-06-03 | File + Dump + Container + HTTP 200 + occ status + Table-Count (126) | quartalsweise | | Mealie | 2 | 2026-06-03 | File + Dump + Container + HTTP + Recipe-Count (3) | quartalsweise | | Mail-Archiver | 2 | 2026-06-03 | Keys + 645M Dump + Container + HTTP 200 | quartalsweise | | Glance | 2 | - | rebuildbar, kein Test noetig | - | @@ -156,8 +156,7 @@ Stand 2026-06-03. Pro Dienst auf einen Blick: Wurde der Restore schon einmal rea ## Naechste Restore-Test-Kandidaten (priorisiert) -1. **Nextcloud** - hoechste Prio wegen `occ maintenance:mode`-Choreographie und `oc_admin`-Rolle -2. **Shared PostgreSQL 18 Cluster** - globals + per-DB-Dumps, Bootstrap-Konflikt `mailarchiver` +1. **Shared PostgreSQL 18 Cluster** - globals + per-DB-Dumps, Bootstrap-Konflikt `mailarchiver` 3. **Komodo Mongo Daten** - echtes `mongorestore` aus `komodo-mongo.archive.gz` (Quelle fuer `KOMODO_*`-Stack-ENVs im DR) 4. **Mailarchiver** - Tier 2, shared Postgres + Authelia ForwardAuth 5. **Mealie** - Tier 2, eigene Postgres