Files
homelab-infra/docs/MIGRATION_LOG.md
T

4.9 KiB

Migration Log — Homelab GitOps

Dieses Dokument verfolgt den Fortschritt der Migration hin zu einem vollständigen GitOps-Setup (Gitea + Komodo).

Status-Legende

  • = geplant
  • 🔄 = in Bearbeitung
  • = abgeschlossen
  • ⚠️ = Problem / prüfen

Sprint 1 — Quick Wins + Vaultwarden

Service Status Ergebnis
Vaultwarden Git-Stack, Traefik, ADMIN_TOKEN_FILE, Port entfernt
PostgreSQL 17 backend_net, Port entfernt, POSTGRES_PASSWORD_FILE

Sprint 2 — postgresql17 + diun/gotify

Service Status Ergebnis
postgresql17 Git-Stack abgeschlossen
gotify GOTIFY_DEFAULTUSER_PASS_FILE, Traefik aktiv
diun Entfernt (2026-03-28) — Update-Monitoring via Komodo

Sprint 3 — mealie + mail-archiver

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

Sprint 4 — Frontend-Stack + Traefik Cleanup + Komodo

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_defaultinternal: 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

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)

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