diff --git a/docs/MIGRATION_LOG.md b/docs/MIGRATION_LOG.md index 2abc377..7ae2168 100644 --- a/docs/MIGRATION_LOG.md +++ b/docs/MIGRATION_LOG.md @@ -1,70 +1,118 @@ # Migration Log — Homelab GitOps -Dieses Dokument verfolgt den Fortschritt der Migration von bestehenden Docker-Containern hin zu einem GitOps-basierten Setup (Gitea + Portainer) +Dieses Dokument verfolgt den Fortschritt der Migration hin zu einem vollständigen GitOps-Setup (Gitea + Komodo). ## Status-Legende - - ⏳ = geplant -- 🔄 = in Arbeit -- ✅ = migriert +- 🔄 = in Bearbeitung +- ✅ = abgeschlossen - ⚠️ = Problem / prüfen --- -## Phase 1 — Kritische Services +## Sprint 1 — Quick Wins + Vaultwarden ✅ -| Service | Status | Ziel | Notizen | -|---------------|--------|------|--------| - Vaultwarden | ✅ | Git + Traefik | Migration abgeschlossen | -| PostgreSQL | ✅ | backend_net | Port entfernen | -| DIUN | ✅ | Gotify fix | Netzwerkproblem | -| Mealie | ✅ | internes Netz | DB trennen | +| Service | Status | Ergebnis | +|---|---|---| +| Vaultwarden | ✅ | Git-Stack, Traefik, `ADMIN_TOKEN_FILE`, Port entfernt | +| PostgreSQL 17 | ✅ | `backend_net`, Port entfernt, `POSTGRES_PASSWORD_FILE` | --- -## Phase 2 — Anwendungen +## Sprint 2 — postgresql17 + diun/gotify ✅ -| Service | Status | Ziel | Notizen | -|---------------|--------|------|--------| -| Paperless | ⏳ | Traefik | aktuell nicht aktiv | -| Gotify | ⏳ | intern + Traefik | Notification Hub | -| Immich | ⏳ | internes Netz + Proxy | komplex | -| Mail-Archiver | ⏳ | Backend + Proxy | DB gekoppelt | -| Stash | ⏳ | optional | prüfen | +| Service | Status | Ergebnis | +|---|---|---| +| postgresql17 | ✅ | Git-Stack abgeschlossen | +| gotify | ✅ | `GOTIFY_DEFAULTUSER_PASS_FILE`, Traefik aktiv | +| diun | ✅ | **Entfernt** (2026-03-28) — Update-Monitoring via Komodo | --- -## Phase 3 — Operations / Tools +## Sprint 3 — mealie + mail-archiver ✅ -| Service | Status | Ziel | Notizen | -|---------------|--------|------|--------| -| Portainer | ⏳ | Git Stack | zentrale Verwaltung | -| Dozzle | ⏳ | Proxy + Auth | Logs | -| UptimeKuma | ⏳ | Proxy + Auth | Monitoring | -| dashdot | ⏳ | Proxy + Auth | Systemstatus | -| Filebrowser | ⏳ | intern | Zugriff prüfen | -| Scrutiny | ⏳ | Proxy | SMART | -| Code-Server | ⏳ | VPN-only | Sicherheit | -| LuckyBackup | ⏳ | intern | Backup Tool | +| Service | Status | Ergebnis | +|---|---|---| +| mealie | ✅ | internes Netz (`mealie_internal`), Port entfernt, Traefik aktiv | +| mealie-postgres | ✅ | nur internes Netz, isoliert | +| mail-archiver | ✅ | `frontend_net` + `backend_net` (Hybrid), Portainer ENV | --- -## Phase 4 — Infrastruktur & Spezialfälle +## Sprint 4 — Frontend-Stack + Traefik Cleanup + Komodo ✅ -| Service | Status | Ziel | Notizen | -|---------------|--------|------|--------| -| Tailscale | ⏳ | Host | VPN | -| Pi-hole | ⏳ | Host | DNS | -| Plex | ⏳ | Host | Discovery | -| Netdata | ⏳ | Host | Monitoring | -| Glances | ⏳ | Host | Monitoring | -| Netalertx | ⏳ | Host | Netzwerk | +| Service | Status | Ergebnis | +|---|---|---| +| paperless-ngx | ✅ | Traefik aktiv, tls=true, Port entfernt | +| Paperless-AI | ✅ | Traefik aktiv | +| PortainerCE | ✅ | Traefik + Middleware, direkte Ports entfernt — **Legacy**, wird in Sprint 5 abgeschaltet | +| Dozzle | ✅ | Traefik + Middleware, direkte Ports entfernt | +| dashdot | ✅ | Traefik + Middleware, direkte Ports entfernt | +| scrutiny | ✅ | `frontend_net`, Traefik + Middleware, als Git-Stack migriert | +| filebrowser | ✅ | `frontend_net`, Traefik + Middleware, Port entfernt | +| gitea | ✅ | Traefik aktiv, SSH-Port 222 bleibt (dokumentierte Ausnahme) | +| UptimeKuma | ✅ | Traefik aktiv, Port entfernt, Middleware aktiv | +| backrest | ✅ | `traefik.docker.network=frontend_net` korrigiert (war `backend_net`) | +| **Komodo** | ✅ | **Eingeführt als primärer GitOps-Stack-Manager** | +| **Traefik File-Provider** | ✅ | `immich.yml`, `gitea.yml`, `mealie.yml`, `scrutiny.yml`, `vaultwarden.yml.bak` gelöscht — Traefik läuft jetzt 100% auf Docker-Labels | +| **immich Bad Gateway** | ✅ | Traefik nutzt jetzt `immich@docker` statt `immich@file` | + +--- + +## Sprint 5 — Compose-Migration Dockerman-Container 🔄 In Bearbeitung + +| Service | Status | Ziel | +|---|---|---| +| luckyBackup | ⏳ | `frontend_net`, Traefik, Middleware, Port entfernen | +| Stash | ⏳ | Compose-Migration | +| Tailscale-Docker | ⏳ | Compose-Migration, `host`-Netz bleibt (dokumentiert) | +| netdata | ⏳ | Compose-Migration, leere CLAIM-Vars entfernen | +| Plex-Media-Server | ⏳ | Compose-Migration, `host`-Netz bleibt (Discovery) | +| Pi-hole | ⏳ | zuletzt konsolidieren | +| **PortainerCE** | ⏳ | **abschalten** nach vollständiger Komodo-Übernahme | + +--- + +## Sprint 6 — Hardening / Secrets / Volumes ⏳ Offen + +| Aufgabe | Status | +|---|---| +| `immich_default` — `internal: true` setzen | ⏳ | +| `immich_redis` — anonymes Volume → named volume | ⏳ | +| `immich_server` — anonymes Volume prüfen | ⏳ | +| `backrest` — rw-Mount auf konkrete Pfade einschränken | ⏳ | +| `filebrowser` — Mount-Pfad einschränken | ⏳ | +| Redis — named volume | ⏳ | + +--- + +## Wichtige Entscheidungen & Learnings + +### Komodo ersetzt Portainer (2026-03-28) +Komodo ist der primäre GitOps-Stack-Manager. Stacks werden via Gitea synchronisiert und über Komodo deployed. Portainer CE läuft noch als Legacy-UI. + +### Traefik File-Provider Cleanup (2026-03-28) +Statische File-Provider-Configs hatten `@file`-Routen, die mit `@docker`-Routen konkurrierten. In Traefik v3 gewinnt der File-Provider → Immich wurde auf falsche IP geroutet (Bad Gateway). Nach Löschen der statischen Configs läuft alles über Docker-Labels. + +### diun entfernt (2026-03-28) +Update-Monitoring kann über Komodo's eingebaute Update-Notifications abgedeckt werden. + +### Portainer + Git + env_file +Host-Pfade (`/mnt/...`) sind in Portainer/Komodo Git-Stacks nicht verfügbar → `env_file` ungeeignet. Lösung: Stack Environment Variables mit `${VARIABLE}` in der Compose. + +### `_FILE` Support ist nicht universell +| Container | `_FILE` Support | +|---|---| +| Vaultwarden | ✅ ja | +| PostgreSQL | ✅ ja | +| Gotify | ✅ ja | +| code-server | ✅ ja | +| Mealie | ❌ nein → Stack ENV | +| paperless-ngx | ❌ nein für DB-Pass → Stack ENV | --- ## Notizen - - Keine Migration ohne Test - Immer nur einen Service gleichzeitig - Rollback muss jederzeit möglich sein -