Commit Graph

205 Commits

Author SHA1 Message Date
Micha d947c7f066 docs(dr): KOMODO_*-Notiz offline gesichert (Operator-Bestaetigung 2026-06-03)
DR-Tabletop-Followup: erste der vier P1-Operator-Aufgaben erledigt.

EXTERNAL_DEPENDENCIES.md:
- KOMODO_*-Notiz-Zeile von "noch nicht angelegt" auf "offline gesichert
  (Operator-Bestaetigung)" gezogen, mit Hinweis auf die Quelle der Werte
  (Self-Stack-.env unter /mnt/user/services/stacks/komodo bzw. die
  Drift-Recovery-Kopie vom 2026-05-04)
- DR-Workstation-Kit-Tabelle: Offline-Kopie-Status entsprechend aktualisiert
- Review-Zeile 2026-06-03 mit Bestaetigung ergaenzt

AUDIT_2026-05-25_TODO.md:
- P1-KOMODO_*-Notiz aus den offenen Punkten entfernt
- Eintrag unter "Zuletzt geschlossen" mit Quellenpfad und Wirkung

Drei P1-Operator-Aufgaben bleiben offen: GitHub-Read-PAT,
DR-Workstation-Setup, Nextcloud-Restore-Test.
2026-06-03 16:05:27 +02:00
Micha 9edd6c24e6 docs(dr): tabletop-folge - DR.md + EXTERNAL_DEPENDENCIES haerten
Reine Doku-Fixes nach DR-Tabletop 2026-06-03 und Operator-Antworten auf
vier offene Fragen.

DISASTER_RECOVERY.md:
- Abschnitt 3 Voraussetzungen: Operator-DR-Workstation als Pflichtposten
- Phase 0: privater GitHub-Mirror, Read-PAT/Deploy-Key, expliziter Repo-
  Bootstrap-Pfad Workstation -> Unraid
- Abschnitt 6.1: homelab_smtp_password.txt, n8n_encryption_key.txt,
  monitoring/influxdb/filebrowser Secrets nachgezogen
- Neuer Abschnitt 7.3: Borg-Extract ohne borg-ui (DR-Workstation oder
  docker run borgbackup/borg), Passphrase-Eingabe interaktiv
- Phase 4 neue Stufe 0 "Docker-Grundlage": docker network create
  frontend_net/backend_net/monitoring_net + dynamic/ Pre-Check
- Phase 4 Stufe 1: LE-Staging-Hinweis bei verlorenem acme.json
- Phase 4 Stufe 3 "Wichtige Stolperfallen": KOMODO_*-Quelle, Mongo-
  Datadir/Secret-Mismatch, extra_hosts-IP, Stack-ENV-Wiederherstellung
- Phase 5.3: App-DB-Verifikation per docker logs

EXTERNAL_DEPENDENCIES.md:
- GitHub-Mirror als privat klargestellt + Read-PAT/Deploy-Key Pflicht
- Operator-DR-Workstation als kritische Abhaengigkeit
- KOMODO_*-Notiz und GitHub-Read-PAT als noch nicht angelegt erfasst
- Hetzner-Maintenance-Key offline bestaetigt (Operator-Antwort 2026-06-03)
- Neuer Abschnitt "DR-Workstation Bare-Metal-Kit" mit konkretem Inhalt

AUDIT_2026-05-25_TODO.md:
- Vier neue P1-Operator-Aufgaben: KOMODO_*-Notiz, Read-PAT, DR-Workstation-
  Setup, Nextcloud-Restore-Test scharf laufen lassen

DR_DRILL_2026-06-03.md:
- Folge-Iteration-Tabelle: welcher Finding wo adressiert wurde

Operator-Aufgaben (nicht delegierbar) sind als P1 markiert. Nichts in
Runtime/Compose beruehrt, kein Container gestartet.
2026-06-03 16:00:00 +02:00
Micha 7a513e9fc8 docs(dr): tabletop drill 2026-06-03 - findings against DISASTER_RECOVERY
Kalter Lesetest gegen das Bare-Metal-Szenario aus DR.md Phase 0 bis 5,
mit referenzierten Runbooks (SERVICES_RECOVERY, RESTORE_MATRIX,
SECRETS_MAP, RESTORE_HANDBOOK, EXTERNAL_DEPENDENCIES) und Compose-Ankern
(ops/komodo, traefik).

23 Findings mit Severity, Repo-Datei + Zeile, Fix-Vorschlag pro Punkt.
1x CRITICAL (Unraid-Flash-Restore ohne laufenden Host), 11x HIGH, 8x MED,
3x LOW.

Schwerpunkte:
- Bare-Metal-Operator-Workstation als DR-Voraussetzung nicht dokumentiert
- Henne-Ei: KOMODO_* externe Notiz vs. Vaultwarden-Reihenfolge
- Externe Docker-Netze fehlen in DR.md Phase 4 Stufe 1
- borg-ui-Container als impliziter Borg-Client im Bare-Metal-Bootstrap
- Nextcloud-Restore-Skript ist da, ist aber noch nie real gelaufen (X-1)

Keine produktiven Pfade beruehrt, kein Container gestartet, keine
Skripte ausgefuehrt - reiner Doku-Drill.
2026-06-03 15:48:44 +02:00
Micha 4b96d13510 security(authelia): borg-ui und code-server auf two_factor heben
Beide UIs haben effektiv Host-/Backup-Zugriff (Borg-Restore-Scope inkl.
/local/secrets, code-server mit Workspace-Mounts). Bisher liefen sie ueber
die catch-all-Regel mit nur one_factor. Files und Scrutiny waren bereits
two_factor; die Liste wird konsistent gezogen.

Wirkung erst nach manuellem Host-Merge (Ausnahme laut docs/WORKFLOW.md):
1. /mnt/user/appdata/authelia/config/configuration.yml mergen
2. docker restart authelia
3. Smoke-Test auf einer der vier 2FA-Domains
4. services/authelia-diff.sh muss exit 0 liefern

Audit-Restliste nachgezogen: Tier-1-Operator-2FA geschlossen, restliche
geparkte Auth-Themen (OIDC, CrowdSec, Nextcloud-2FA) bewusst weiter offen
mit aktualisierter Begruendung.
2026-06-03 15:03:15 +02:00
Micha 642eb88b40 docs(restore): traefik restore successful - 11 of 12 tests green
Traefik-Restore am 2026-06-03 erfolgreich: dynamic/ (2 Files) +
letsencrypt/acme.json (426K) aus Borg, File-Provider-Boot, /ping 200.
Erster Versuch, kein shfs-Problem.

11 von 12 Restore-Tests sind jetzt gruen. Einzig Nextcloud bleibt
blockiert durch Unraids shfs-chmod-Inkompatibilitaet.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-03 14:45:27 +02:00
Micha 16d3b8f2fa docs(restore): mailarchiver restore successful, update matrix and backlog
Mail-Archiver-Restore am 2026-06-03 erfolgreich: Data-Protection-Keys
aus Borg + 645M pg_restore + HTTP 200. Erster Versuch, kein shfs-Problem.

10 von 12 Restore-Tests sind jetzt gruen. Verbleibend: Nextcloud
(blockiert/shfs-chmod) und Traefik (komplex, niedrigere Prio).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-03 14:08:28 +02:00
Micha 5ee4a158d6 docs(restore): mealie restore successful, update matrix and backlog
Mealie-Restore-Test am 2026-06-03 erfolgreich: Borg-Data + pg_restore
+ HTTP 200, 3 Rezepte im Test-DB-Check. Erster Versuch, kein
shfs-Problem (Mealie startet als root, kein chmod auf User Shares).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-03 13:54:05 +02:00
Micha 893b34a585 docs(restore): shared pg cluster drill successful, all 5 DBs restored
Shared PostgreSQL 18 Cluster Restore Drill am 2026-06-03 erfolgreich:
Globals + 5 per-DB Custom-Format-Dumps, 290 Tabellen gesamt,
data_checksums=on. Alle P1-Backlog-Punkte sind damit erledigt.

Ergebnis pro DB:
- paperless:    72 Tabellen
- mailarchiver:  1 Tabelle
- authelia:     25 Tabellen
- nextcloud:   126 Tabellen
- mealie:       66 Tabellen

Mailarchiver-Bootstrap-Rollenkonflikt wurde wie dokumentiert toleriert.
Lauf dauerte ~14 Minuten (mailarchiver.dump = 645M).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-03 13:17:35 +02:00
Micha 14de2f4801 docs(restore): komodo mongo restore successful, update matrix and backlog
Komodo-Mongo-Daten-Restore am 2026-06-03 erfolgreich: mongorestore
von komodo-mongo.archive.gz in Wegwerf-Mongo, 86904 Dokumente
(inkl. 32 Stack-Definitionen). Damit ist die kanonische Quelle fuer
KOMODO_*-Stack-ENV-Werte im DR-Fall als wiederherstellbar belegt.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-03 11:25:32 +02:00
Micha c922d1f241 docs(restore): finalize audit - handbook update, reifegrad matrix, backlog
Schliesst das Restore-Skills-Audit 2026-06-02/03 ab:

- RESTORE_HANDBOOK.md auf Stand 2026-06-03: alle 6 verifizierten Tests
  (Vaultwarden, Gitea, Paperless, Immich, Authelia, Komodo-Bootstrap)
  dokumentiert, Frequenz-Tabelle aktualisiert, Betriebsmodus auf V1+
  (mit ntfy), Schnellstart um Immich/Authelia/Komodo ergaenzt,
  Report-Aufbewahrungsregel dokumentiert, Ausbaustufen priorisiert.

- RESTORE_MATRIX.md: neue Sektion "Restore-Test-Reifegrad" mit
  Uebersichtstabelle (pro Dienst: Tier, letzter Test, Typ, naechster
  Lauf) und priorisierter Kandidatenliste fuer fehlende Tests.

- Gitea-Restore: SSH-Check im Report korrekt als "TCP connect only"
  benannt statt "SSH port open" (war Audit-Finding M3).

- AUDIT_2026-05-25_TODO.md: Restore-Audit-Backlog ergaenzt mit den
  verbleibenden 8 offenen Punkten (Nextcloud, Shared PG18, Komodo-Mongo,
  Mailarchiver, Mealie, Traefik, Negativ-Test, E2E-DR-Drill).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-03 09:31:19 +02:00
Micha ba3ef8fcfc docs(restore): mark authelia smoke successful and schedule 2026-06-03 08:55:04 +02:00
Micha b1ae9f3c26 fix(restore): harden restore checks and add authelia smoke scaffold 2026-06-03 07:39:05 +02:00
Micha 9f63e6e3bc docs: archive rollback volumes after burn-in 2026-06-02 19:55:02 +02:00
Micha 8eb367f0b5 revert: remove social-to-mealie-plus stack 2026-06-02 19:44:35 +02:00
Micha 745761f518 feat: add social-to-mealie-plus stack 2026-06-02 19:17:59 +02:00
Micha ac637d30fb docs: record n8n encryption key restore source 2026-06-02 06:47:00 +02:00
Micha 4fb17a09e6 apps: add n8n + mail-to-gitea-issue workflow (n8n.kaleschke.info) 2026-06-02 06:28:01 +02:00
Micha be5c68751f apps: add super-productivity stack (sp.kaleschke.info, Authelia) 2026-06-02 06:27:00 +02:00
Micha eeebeec804 Switch Paperless GPT to OpenAI API 2026-06-01 16:18:58 +02:00
Micha 55fdb13532 Enable Vaultwarden SMTP invites 2026-06-01 15:52:31 +02:00
Micha 8709fe8239 Focus family onboarding on core apps 2026-06-01 15:25:48 +02:00
Micha 89114b1b12 Record append-only operator decision 2026-06-01 15:16:56 +02:00
Micha 3da19421d0 Document hetzner account hygiene 2026-06-01 15:09:37 +02:00
Micha 16e661be87 Document fritzbox config backup 2026-06-01 14:19:13 +02:00
Micha 12c05376d0 Close fritzbox service window docs 2026-06-01 13:02:03 +02:00
Micha dfd0ccbb9a Refine external IPv6 operator check 2026-06-01 12:51:16 +02:00
Micha ae5d4aedfc Prepare external operator checks 2026-06-01 12:48:00 +02:00
Micha 479eb291c4 Prepare final homelab cleanup gates 2026-06-01 12:19:17 +02:00
Micha c3222e800b Validate backup follow-up and harden nearline pull 2026-06-01 08:27:52 +02:00
Micha 4e34582008 Trim documentation to active runbooks 2026-05-31 23:26:12 +02:00
Micha ab8bfea7c8 Close documented backup follow-ups 2026-05-31 23:07:34 +02:00
Micha 92562dfc9c Archive stale documentation 2026-05-31 22:53:10 +02:00
Micha c9c8f9e7ce docs: add post migration burn-in check 2026-05-31 21:45:58 +02:00
Micha 99a0bfd60e docs: record grafana 13 renovate closure 2026-05-31 21:35:52 +02:00
Micha e1afd08bf3 docs: record closed renovate migration prs 2026-05-31 21:25:45 +02:00
Micha 268df30a13 chore: finish postgres redis stateful migrations 2026-05-31 20:32:25 +02:00
Micha 80a5ad24a2 Document closure of Mongo 8 PR 2026-05-31 14:34:46 +02:00
Micha 28406ae22b Constrain Komodo Mongo Renovate track 2026-05-31 14:33:19 +02:00
Micha 7b6c03b433 Document Komodo Mongo 8 upgrade 2026-05-31 14:31:47 +02:00
Micha aecf3b2807 Document Renovate cron follow-up 2026-05-31 13:26:40 +02:00
Micha 8e820ea155 Document Prometheus drift alert reload 2026-05-31 13:19:26 +02:00
Micha 16a266cd79 Add GitOps runtime image drift alert 2026-05-31 13:17:45 +02:00
Micha 69ad9d1d3c Document Renovate PR merge rollout 2026-05-31 13:04:06 +02:00
Micha 4867d632d2 Document Gitea workspace drift repair 2026-05-31 12:27:07 +02:00
Micha e6a0e9fea4 Document Komodo 5xx client root cause 2026-05-31 11:26:40 +02:00
Micha 10ef703a4e docs: Codex-Prompt fuer Komodo-5xx Root-Cause-Suche
Selbst-enthaltener Stafettenstab nach Glance-Ausschluss (130s-Stop-Test):
Polling-Rate unveraendert mit Glance down. Restkandidaten dokumentiert
(Posture-Check, Periphery, Komodo-Self-Check, LAN-Geraet) plus konkrete
Testreihenfolge und Fix-Erwartung.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-31 10:56:58 +02:00
Micha 0c08d68d2b monitoring: HomelabPrometheusTargetDown + HomelabDiskCritical
Schliesst die zwei in ALERT_RULES.md identifizierten Hoch-Luecken:
- up==0 (5m) als critical in neuer Gruppe homelab-meta — Scrape-Targets
  (node-exporter/cadvisor/blackbox/traefik) sind nicht laenger stille
  Ausfaelle.
- Disk-Critical bei >95% (5m) als critical, zusaetzlich zum bestehenden
  Warning bei >85% — fuer DB/appdata/Cache-Schreibblockaden.

ALERT_RULES.md Tabellen und Status-Abschnitt aktualisiert.
Wird wirksam nach Prometheus-Reload via Komodo-Redeploy des monitoring-Stacks.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-30 22:17:51 +02:00
Micha 73120869a7 docs: zentrale ALERT_RULES.md + Luecken-Analyse
Nachschlagetabelle aller Prometheus-Alarmregeln (Trigger/Schwelle/Severity/
Aktion) plus Bewertung der Abdeckung. Identifiziert zwei echte blinde Flecke
(kein up==0 Target-Down, kein Disk-Critical-Tier) mit fertigem PromQL als
Empfehlung. Cross-Ref aus ALERTING_MAP.md.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-30 16:36:45 +02:00
Micha 1503239881 Strategische Bewertung: sharpen banner + add 2026-05-30 status appendix
The original 2026-05-23 baseline was kept as a historical anchor but
the banner was too soft about how much of the concrete content is
already addressed. Reading the document standalone could mislead it
as a current TODO list.

Two changes, original text untouched:

1. Banner now explicitly says the document is mostly outdated,
   not to be read as a TODO list, and that the per-finding status
   lives in an appendix.

2. New "Status-Anhang 2026-05-30" at the end maps every concrete,
   actionable finding to its current state (erledigt / geparkt /
   entschieden nicht / offen / teilweise), grouped by the original
   sections (Block 1-8) and by the Top-5 lists and Phase-1-to-4
   roadmap.

Summary of what the appendix shows:
- Top 5 sofort: 5/5 erledigt
- Quick Wins: 6/7 erledigt, 1 geparkt
- Phase 1: 4/6 erledigt, 1 geparkt, 1 wartend
- Phase 2: 2/5 erledigt, 2 geparkt, 1 offen
- Phase 3: 1 entschieden-nicht, 1 teilweise, 3 offen
- Auth-Block (F-04/13/14/18): fully parked

Original "Schulnote 2-" no longer reflects reality; new note would
land at 1- to 2 but is not the point.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-30 12:48:36 +02:00
Micha 5c211faf87 Promote Codex notes to tracked docs with status banners
The three notes from 2026-05-23 had been sitting untracked in docs/
for a week. Variante A from today's review: keep them in docs/ with
explicit status banners and reference them from REPO_MAP.md, so they
stop being silent roommates and become discoverable.

- docs/STRATEGISCHE_BEWERTUNG_2026-05-23.md: historical baseline that
  kicked off the 2026-05-25 audit cycle. Permanent audit anchor and
  "where we stood on 2026-05-23" snapshot. Do not edit further.
- docs/CODEX_KONSOLIDIERUNG_2026-05-23.md: first Codex prompt for the
  audit cycle, content worked through; kept as a Codex-prompt
  template for future consolidation sweeps.
- docs/CODEX_JELLYFIN_REMOVAL_2026-05-23.md: Codex removal pattern,
  task executed 2026-05-25; kept as a template for future stack
  removals (Hermes review 2026-07-25, possibly BentoPDF / paperless-gpt
  follow-ups).

REPO_MAP.md "Wichtige Dokumente" now lists all three with one-line
purpose plus the F-19 prep doc committed earlier today.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-30 12:43:12 +02:00