From 96984ca0de114ab9b32a53a586c62da902d0dac2 Mon Sep 17 00:00:00 2001 From: Micha Date: Sun, 12 Apr 2026 17:48:13 +0200 Subject: [PATCH] Finish merge and update borg-ui backup mounts --- HOMELAB_ARCHITECTURE_MASTER_V2.md | 16 +++++++++++++--- docs/MIGRATION_LOG.md | 9 +++++++++ docs/ROLLBACK.md | 10 ++++++++++ docs/SECRETS_MAP.md | 3 +++ 4 files changed, 35 insertions(+), 3 deletions(-) diff --git a/HOMELAB_ARCHITECTURE_MASTER_V2.md b/HOMELAB_ARCHITECTURE_MASTER_V2.md index ca0301d..533d6cd 100644 --- a/HOMELAB_ARCHITECTURE_MASTER_V2.md +++ b/HOMELAB_ARCHITECTURE_MASTER_V2.md @@ -60,7 +60,7 @@ Es gibt **keine künstlichen globalen Zusatznetze** wie `admin_net`, `monitoring Postgres, Redis und ähnliche Dienste laufen ausschließlich in `backend_net` oder einem eigenen internen Compose-Netz. ### P4 — Admin-UIs sind nicht öffentlich -Komodo, filebrowser, scrutiny, UptimeKuma, code-server, Traefik-Dashboard, backrest und beszel sind standardmäßig **Tailscale-only** oder hinter Traefik **mit zentraler Middleware** abgesichert. +Komodo, filebrowser, scrutiny, UptimeKuma, code-server, Traefik-Dashboard, backrest, borg-ui und beszel sind standardmäßig **Tailscale-only** oder hinter Traefik **mit zentraler Middleware** abgesichert. ### P5 — Compose-first Alle produktiven Container werden als Compose verwaltet. Bestehende Dockerman-/Ad-hoc-Container werden schrittweise migriert. @@ -100,7 +100,7 @@ traefik (80/443) │ └── frontend_net ├── öffentliche Apps (vaultwarden, mealie, paperless, immich, gitea, ntfy, homepage) - ├── Admin-UIs mit Middleware (komodo, uptime-kuma, filebrowser, scrutiny, code-server, backrest, beszel) + ├── Admin-UIs mit Middleware (komodo, uptime-kuma, filebrowser, scrutiny, code-server, backrest, borg-ui, beszel) └── Hybrid-Dienste mit Internetbedarf (mail-archiver, ddns-updater) backend_net (internal: true) @@ -148,6 +148,7 @@ Diese Dienste sind **keine Public Apps**: - `code-server` — Traefik + Middleware - `beszel` — beszel.kaleschke.info (Middleware ausstehend) - `backrest` — Traefik + Middleware +- `borg-ui` — borg.kaleschke.info (Middleware) - `Traefik-Dashboard` - `AdGuard Home` — Port 3000 direkt (kein Traefik, nur LAN-Zugang) @@ -263,6 +264,7 @@ Legende Status: | `code-server` | ✅ | `frontend_net` | Traefik + Middleware | `PASSWORD_FILE` aktiv | — | | `PortainerCE` | ⚠️ Legacy | `frontend_net` | Traefik + Middleware | wird durch Komodo abgelöst | abschalten Sprint 5 | | `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` | intern | IMAP-Abruf + DB-Zugang, kein öffentlicher Zugang | — | ### 7.6 Monitoring / Status @@ -465,6 +467,7 @@ Dieses Projekt wird **blockweise** umgesetzt, nicht wild containerweise. | Sprint 5 | `Plex-Media-Server` Compose-Migration + `PortainerCE` abschalten | ✅ Abgeschlossen | | Sprint 6 | Hardening / Secrets / Volumes / Sonderfälle (`immich_default` ✅, Volumes, Mounts, AdGuard Traefik) | ✅ Abgeschlossen | | Sprint 7 | `Authelia` SSO/2FA: Compose + Config im Repo, Traefik ForwardAuth Middleware, NAS-seitige Einrichtung | 🔄 In Bearbeitung | +| Sprint 8 | `borg-ui` Git-Stack + BorgBase Offsite-Backup-Workflow | 🔄 In Bearbeitung | ### 11.3 Regel für jede Änderung 1. Zielbild in diesem Dokument prüfen @@ -553,6 +556,13 @@ Host-Pfade in `env_file` (z.B. `/mnt/...`) sind in Git-Stacks nicht verfügbar. **Regel:** Wenn `_FILE` nicht unterstützt wird → Stack Environment Variable. Kein Secret im Git. +### Borg UI / BorgBase (2026-04-12) +- `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` +- kein separater Borg-CLI-Container nötig, da Borg UI die Borg-CLI bereits im Container mitbringt + | Container | `_FILE` Support | |---|---| | Vaultwarden | ✅ ja | @@ -581,4 +591,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. \ No newline at end of file +`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. diff --git a/docs/MIGRATION_LOG.md b/docs/MIGRATION_LOG.md index 7ae2168..54053e6 100644 --- a/docs/MIGRATION_LOG.md +++ b/docs/MIGRATION_LOG.md @@ -86,6 +86,15 @@ Dieses Dokument verfolgt den Fortschritt der Migration hin zu einem vollständig --- +## Sprint 8 — Borg UI / BorgBase 🔄 In Bearbeitung + +| Service | Status | Ergebnis | +|---|---|---| +| Borg UI | 🔄 | Git-Stack unter `ops/borg-ui/` angelegt; Traefik + Middleware, keine Host-Ports, minimale Source-Mounts (`/mnt/user/appdata` read-only) | +| BorgBase-Anbindung | ⏳ | Nach Deploy: SSH-Key aus Borg UI in BorgBase hinterlegen, Repo anlegen, `repokey-blake2` initialisieren, Job/Schedule im UI setzen | + +--- + ## Wichtige Entscheidungen & Learnings ### Komodo ersetzt Portainer (2026-03-28) diff --git a/docs/ROLLBACK.md b/docs/ROLLBACK.md index bc6bc3f..c0f3b7a 100644 --- a/docs/ROLLBACK.md +++ b/docs/ROLLBACK.md @@ -52,6 +52,16 @@ Wenn ein neuer Stack Probleme macht: 2. alten Container wieder starten 3. Logs prüfen +### Borg UI / BorgBase + +Bei Problemen mit `ops/borg-ui/docker-compose.yml`: + +1. in Gitea auf den letzten funktionierenden Commit zurückgehen +2. Stack in Komodo auf diesen Commit redeployen +3. Persistenz unter `/mnt/user/appdata/borg-ui/` unverändert lassen +4. BorgBase-Repository nicht löschen; Remote-Archive bleiben davon unberührt +5. falls nötig, Restore zunächst aus `/mnt/user/appdata/borg-ui/restore/` testen statt direkt in Produktivpfade zurückzuschreiben + --- ## Datenbank-Rollback diff --git a/docs/SECRETS_MAP.md b/docs/SECRETS_MAP.md index b1c5505..a938e71 100644 --- a/docs/SECRETS_MAP.md +++ b/docs/SECRETS_MAP.md @@ -24,6 +24,7 @@ Dieses Dokument listet alle sensiblen Daten (Passwörter, Tokens, Keys) und dere | Immich (server) | DB Password | Stack ENV `${IMMICH_DB_PASSWORD}` | ✅ | | immich-postgres | DB Password | `immich_db.txt` → `POSTGRES_PASSWORD_FILE` | ✅ | | mail-archiver | Auth Password | Stack ENV `${MAILARCHIVER_AUTH_PASSWORD}` | ✅ | +| Borg UI / BorgBase | Admin-Login, `SECRET_KEY`, SSH-Keys, Repo-Passphrasen | app-intern persistiert unter `/mnt/user/appdata/borg-ui/data/` (DB + SSH-Key-Verzeichnis), nicht im Git | 🔄 | | ~~diun~~ | ~~Gotify Token~~ | ~~Stack ENV~~ | ❌ Container entfernt (2026-03-28) | --- @@ -41,6 +42,8 @@ Dieses Dokument listet alle sensiblen Daten (Passwörter, Tokens, Keys) und dere > **Hinweis:** Mealie, Paperless, mail-archiver und Immich-Server nutzen Stack Environment Variables statt Datei-Mounts, da `_FILE`-Support nicht vorhanden oder unzuverlässig ist. +> **Hinweis zu Borg UI:** Die Anwendung erzeugt bzw. verwaltet ihr Session-Secret, den Admin-Login, SSH-Keys und Repo-Credentials in der persistenten `/data`-Struktur. Damit liegen keine Secrets im Git, aber die Sicherung von `/mnt/user/appdata/borg-ui/data/` ist für Restore und Disaster Recovery Pflicht. + --- ## Regel