Close Dawarich backup and egress follow-ups

This commit is contained in:
2026-06-26 10:15:46 +02:00
parent 3956ab7e75
commit a54657a365
15 changed files with 143 additions and 31 deletions
+29 -2
View File
@@ -18,14 +18,41 @@ Dieses Dokument beschreibt externe Anbieter und Konten, von denen Betrieb, Recov
| GitHub Mirror | Externer Repo-Mirror `michaelkaleschke-spec/homelab-infra` (privat) | mittel/hoch | Gitea-Verlust abfederbar, aber Bare-Metal-Bootstrap braucht Read-Zugang (PAT oder SSH-Deploy-Key); ohne diesen ist der Mirror im DR nicht klonbar | GitHub-Konto; Push-PAT liegt in Gitea-Mirror-Settings; **Read-PAT/Deploy-Key fuer DR muss zusaetzlich offline im DR-Kit liegen** | Mirror-Status regelmaessig pruefen; lokalen Clone als zweite Kopie behalten; Read-PAT mit Scope `repo:read` separat erzeugen und im DR-Kit ablegen |
| Tailscale | Remote-/Operator-Zugang | hoch | Remote-Zugriff erschwert, lokale Bedienung bleibt | Tailnet-Konto; Node `Kallilabcore`, IPv4 `100.80.98.33` | Break-glass per LAN und physischem Zugriff; Tailnet-Recovery-Codes sichern |
| GMX SMTP | Authelia Notifier, Vaultwarden-Einladungen, Ops-Report-Mail | mittel | Mail-Notifier und Vaultwarden-Einladungen fallen aus; Login selbst nicht zwingend | GMX-Konto; SMTP-Secrets liegen hostseitig | ntfy/zweiter SMTP als Fallback pruefen |
| OpenAI API | Paperless-GPT LLM/Vision-OCR (Dokumenttext/-bilder) **und** n8n Mail->LLM->Gitea-Workflow (GMX-Mailinhalt bis ~8000 Zeichen) | mittel | Automatische Dokument-Titel/Tags/Korrespondenten/LLM-OCR und die n8n-Mail-Extraktion fallen aus; Paperless und n8n laufen sonst weiter | je eigener OpenAI-API-Key ausserhalb Repo (Paperless-GPT Stack-ENV; n8n Credentials Store) | Keys in Vaultwarden/Komodo sichern, bei Offenlegung rotieren; Kosten/Usage im OpenAI-Projekt beobachten. **Datenklasse/Retention/Loeschpfad je Egress-Pfad noch offen** (`docs/HOMELAB_REVIEW_MATRIX.md` Domaene 12, `docs/MASTER_TODO.md`) |
| OpenAI API | Paperless-GPT LLM/Vision-OCR (Dokumenttext/-bilder) **und** n8n Mail->LLM->Gitea-Workflow (GMX-Mailinhalt bis ~8000 Zeichen) | mittel | Automatische Dokument-Titel/Tags/Korrespondenten/LLM-OCR und die n8n-Mail-Extraktion fallen aus; Paperless und n8n laufen sonst weiter | je eigener OpenAI-API-Key ausserhalb Repo (Paperless-GPT Stack-ENV; n8n Credentials Store) | Keys in Vaultwarden/Komodo sichern, bei Offenlegung rotieren; Kosten/Usage im OpenAI-Projekt beobachten. Datenklasse/Retention/Loeschpfad stehen unten in "Data Privacy / Egress-Kontrollen"; konkrete OpenAI-Projekt-Settings bleiben live zu pruefen |
| Let's Encrypt | TLS-Zertifikate | hoch | Cert-Erneuerung faellt aus | automatisch via Traefik und Cloudflare DNS-Challenge | Cert-Expiry Alert einrichten; Cloudflare-Token und Traefik-Storage pruefen |
| Container Registries | Image Pulls von Docker Hub, GHCR, LSCR, Gitea Registry u. a. | mittel | Redeploy/Update blockiert | ueberwiegend oeffentlich; keine produktiven Registry-Tokens im Repo | Gepinnte Digests und lokale Runtime helfen kurzfristig; Updates geplant und einzeln deployen |
| Plex Konto | Plex native Auth, Claim und Client-Zugriff ueber `plex.kaleschke.info` | mittel | Plex-Web/App-Login und Clients koennen ausfallen; LAN-Medienpfade bleiben lokal | Plex-Konto ausserhalb Repo; `PLEX_CLAIM` nur fuer Setup | Plex Remote Access bleibt aus; externer Zugriff laeuft ueber Traefik/443. Konto-Recovery separat sichern |
| Mobile Push | ntfy (self-hosted) und ggf. mobile Plattform-Pushes; Egress = Alert-Payloads/Topic-Namen an Upstream-Push | niedrig/mittel | Alerts erreichen Mobilgeraete ggf. nicht | App-/Device-seitig | Kritische Alerts zusaetzlich in Grafana/Glance sichtbar halten; Payloads/Topics ohne PII/Pfade/Secrets halten (Naming-Regel offen, `docs/HOMELAB_REVIEW_MATRIX.md` Domaene 12) |
| Mobile Push | ntfy (self-hosted) und ggf. mobile Plattform-Pushes; Egress = Alert-Payloads/Topic-Namen an Upstream-Push | niedrig/mittel | Alerts erreichen Mobilgeraete ggf. nicht | App-/Device-seitig | Kritische Alerts zusaetzlich in Grafana/Glance sichtbar halten; Payloads/Topics ohne PII/Pfade/Secrets halten; konkrete Live-Namen periodisch screenen |
| healthchecks.io (Cloud) | Externer Dead-Man's-Switch fuer Host-down-/Backup-Stillstand: Borg-Pre-Hook, baerchen-Nearline-Pull, geplanter Monitoring-Watchdog (#8); interne Job-Checks laufen self-hosted | mittel | Stiller Ausfall von Borg-/Nearline-Lauf wird nicht extern sichtbar; Backups selbst laufen weiter | healthchecks.io-Account; Ping-/Capability-URLs als Host-Secrets (`docs/SECRETS_MAP.md`) | Datenklasse = operative Metadaten (Check-Name/Timing); Naming ohne PII/Pfade/Secrets. Skripte sind endpoint-agnostisch -> bei Bedarf auf self-hosted `hc.kaleschke.info` umstellbar. Bewusste Architektur (DECISIONS 2026-06-23): Host-down-Waechter bleiben extern |
| Operator-DR-Workstation | Bare-Metal-Recovery-Arbeitsplatz (Gaming-PC Windows, lokaler Repo-Clone `G:\Gitea_Clone\homelab-infra`) | kritisch | Ohne Workstation kein Borg-Extract, kein Hetzner-Zugriff, kein Repo-Bootstrap; der Unraid-Host ist im Bare-Metal-Fall gerade weg | Operator-PC, WSL2 + Borg-Client, SSH-Key fuer Hetzner Storage Box, Offline-Kopie der Borg-Passphrase | Setup als bewusste DR-Vorbedingung pflegen (siehe Abschnitt "DR-Workstation Bare-Metal-Kit") |
## Data Privacy / Egress-Kontrollen
Stand: 2026-06-26, gegen Repo und offizielle Anbieter-Doku eingeordnet. Diese
Tabelle beschreibt erlaubte externe Pfade und die erwartete Datenhygiene. Sie
ersetzt keine Live-Kontrolle der konkreten Account-Schalter.
| Egress-Pfad | Repo-Beleg | Datenklasse | Token / Account | Retention beim Dritten | Loesch-/Export-/Opt-out-Pfad | Naheliegende Optimierung |
|---|---|---|---|---|---|---|
| Paperless-GPT -> OpenAI API | `apps/paperless-gpt/docker-compose.yml`, `docs/SERVICE_CATALOG.md` | Dokumenttext, Dokumentbilder, Metadaten, ggf. personenbezogene Inhalte | `OPENAI_API_KEY` als Stack-ENV/Host-Secret | OpenAI API: Standard-Retention bis zu 30 Tage fuer API Inputs/Outputs; Responses-API Application State standardmaessig 30 Tage; API-Daten werden laut OpenAI standardmaessig nicht zum Training genutzt, sofern nicht explizit opt-in | App deaktivieren oder Provider wechseln; API-Key rotieren/loeschen; OpenAI-Projekt/Logs pruefen; ZDR nur fuer geeignete Accounts/Endpoints beantragen; bei Responses-API `store=false`/Feature-Nutzung bewusst setzen, falls die App dies unterstuetzt | Nur Allowlist/Tags an Paperless-GPT senden; keine sensiblen Dokumenttypen ohne bewusste Freigabe |
| n8n Mail -> OpenAI -> Gitea | n8n-Workflow-JSONs und `docs/SERVICE_CATALOG.md`; Live-Aktivitaet separat pruefen | GMX-Mailinhalt bis Workflow-Limit, extrahierte Aufgaben/Metadaten | n8n Credential Store: GMX/OpenAI/Gitea-Credentials; `N8N_ENCRYPTION_KEY` fuer Restore noetig | OpenAI wie oben; Gitea speichert erzeugte Issues lokal und ggf. im GitHub-Mirror, falls dort committed/gespiegelt | Workflow deaktivieren; Credentials rotieren/loeschen; n8n Credential-Export nur verschluesselt behandeln; Gitea-Issues loeschen/exportieren | Workflow standardmaessig inaktiv halten oder Mail-Absender/Ordner allowlisten; Prompts auf minimale Datenweitergabe kuerzen |
| GMX IMAP/SMTP | Authelia/Vaultwarden/Mail-Archiver/n8n Mailpfade in Service-Doku | E-Mail-Inhalte, Absender/Empfaenger, SMTP-/IMAP-Metadaten | GMX-Konto + Host-Secrets | GMX: Content-/Nutzungsdaten werden nach 180 Tagen Inaktivitaet geloescht; bei Kuendigung werden Userdaten geloescht, sofern keine gesetzlichen Aufbewahrungsfristen greifen | GMX Account verwalten/kuendigen; Mails via IMAP/POP3/Export sichern; personenbezogene Accountdaten im Kundencenter exportieren | n8n/Mail-Archiver nur mit dediziertem Postfach oder dedizierten Ordnern betreiben; keine privaten Vollpostfaecher ungefiltert an LLM-Workflows geben |
| healthchecks.io Cloud | Externe Borg-/Nearline-/Host-down-Waechter in `docs/MASTER_TODO.md`, `ops/h-drive-nearline/README.md` | Checknamen, Ping-Zeitpunkte, IP-/Log-Metadaten, Capability-URLs | healthchecks.io-Account; Ping-URLs als Host-Secrets | Healthchecks.io: inaktive Accounts werden nach Hinweis geschlossen; Daten koennen nach Loeschung/Account-Schliessung bis zu 2 Monate in DB-Backups wiederherstellbar sein | Checks/Account loeschen; Capability-URLs rotieren; Pfad bei Bedarf auf self-hosted `hc.kaleschke.info` umstellen | Checknamen abstrakt halten, keine Hostpfade/Personennamen/Secrets im Namen oder Payload |
| ntfy / Mobile Push | `ops/ntfy`, Monitoring/Alertmanager-Bridge, Service-Doku | Alert-Payloads, Topicnamen, ggf. operative Metadaten | ntfy-User/Topic/Device; mobile Push ueber App-Plattform | ntfy: Nachrichten werden standardmaessig 12h gecached, Attachments 3h; bei Play/App-Store-Versionen koennen Metadaten/Inhalte ueber FCM laufen | Payload loeschen/Cache abwarten; mobile Push abmelden; F-Droid-App oder Self-host/Instant-Delivery nutzen, wenn FCM vermieden werden soll | Payloads weiter minimieren: keine PII, keine Pfade, keine Secrets, keine aussagekraeftigen internen Hostnamen |
| Borg -> Hetzner Storage Box | Borg-Scope, `ops/borg-ui/BACKUP_SCOPE.md`, `docs/RESTORE_MATRIX.md` | Verschluesselte Offsite-Kopie aller Borg-Quellen inkl. personenbezogener Appdaten und Secrets | Hetzner-Konto, Storage-Box-SSH-Key, Borg-Passphrase | Retention liegt primaer in Borg-Retention; Hetzner verarbeitet als Dienstleister nach DPA/Produktstandort, Non-Cloud-Produkte laut Hetzner innerhalb EU | Borg prune/delete/compact; Storage-Box-Daten loeschen/Account kuendigen; Crypto-Shred durch Vernichtung der Borg-Passphrase/Keys als letzte Kontrolle | DPA im Hetzner-Account aktuell halten; Restore und Loesch-/Prune-Lauf periodisch belegen |
| GitHub Mirror | `docs/EXTERNAL_DEPENDENCIES.md`, Gitea-Push-Mirror | Repo-Inhalt: Infrastruktur-Code/Doku, keine Secret-Werte; ggf. interne Host-/Pfadnamen | GitHub-Konto; Push-PAT in Gitea; DR-Read-Deploy-Key offline | GitHub behandelt private Repos als vertraulich; konkrete Repo-/Account-Loeschung ueber GitHub-Settings, Actions-Artefakt-Retention separat falls genutzt | Mirror deaktivieren/Repo loeschen; PAT/Deploy-Key widerrufen; Audit-/Access-Listen exportieren, soweit Account/Plan es erlaubt | Mirror weiter privat halten; Branch-/Token-Inventar live pruefen; Secret-Scanner gegen History laufen lassen |
Quellen fuer Anbieter-Regeln:
- OpenAI API Data Controls: `https://developers.openai.com/api/docs/guides/your-data`
- OpenAI Enterprise Privacy/API Retention: `https://openai.com/enterprise-privacy/`
- GMX Privacy/Data Collection: `https://www.gmx.com/company/privacypolicy/`, `https://www.gmx.com/company/data-collection/mail-client/`
- GMX Export: `https://support.gmx.com/account/managing/export-data.html`
- Healthchecks.io Privacy: `https://healthchecks.io/privacy/`
- ntfy Privacy: `https://docs.ntfy.sh/privacy/`
- Hetzner DPA/Data Protection: `https://docs.hetzner.com/general/company-and-policy/data-protection-at-hetzner/`
- GitHub private repo confidentiality/deletion/export: `https://docs.github.com/site-policy/github-terms/github-terms-of-service`
## Kritische Secrets ausserhalb des Repos
Authoritativ ist `docs/SECRETS_MAP.md`. Diese Liste markiert nur externe Abhaengigkeiten.