73137b78d9
# 🗓️ Migration Log – 2026-03-25 ## 🔧 Ziel der Session * Bereinigung und Härtung der bestehenden Container-Architektur * Umstellung auf Git-basierte Stacks (Gitea + Portainer) * Entfernung unnötiger Angriffsflächen (Ports, bridge-Netzwerke) --- ## 🔐 Vaultwarden – Finalisierung ### Änderungen * Migration auf `frontend_net` * Entfernung von Host-Port * Integration über Traefik (`vault.kaleschke.info`) * Nutzung von `ADMIN_TOKEN_FILE` statt Klartext * Entfernung alter `config.json` ### Ergebnis * sauberer, sicherer Betrieb * keine Secrets im Klartext * reproduzierbar über Git --- ## 🗄️ PostgreSQL (postgresql17) – Migration ### Ausgangszustand * lief als Einzelcontainer * im `bridge` Netzwerk * Port `5432` öffentlich * Passwort im Klartext sichtbar ### Änderungen * Migration in Git-Stack (`infra/postgresql17`) * Entfernung von Port-Binding (`5432`) * nur noch im `backend_net` * Einführung von Secret-Datei (`POSTGRES_PASSWORD_FILE`) * Restart-Policy auf `unless-stopped` ### Vorgehen 1. Backup via `pg_dumpall` 2. Zustand via `docker inspect` gesichert 3. Container gestoppt & entfernt 4. neuer Stack über Gitea deployed 5. Funktion geprüft (DB + abhängige Services) ### Ergebnis * Daten unverändert erhalten * kein externer Zugriff mehr möglich * zentrale DB für: * mail-archiver * paperless-ngx --- ## 🍽️ Mealie – Neuaufbau ### Ausgangszustand * Zugriff über Port `9935` * DB im `frontend_net` * Klartext-Passwort in Compose * kein Traefik ### Änderungen #### Architektur * Einführung von `mealie_internal` Netzwerk * `mealie-postgres` nur noch intern erreichbar * `mealie` in: * `frontend_net` (Traefik) * `mealie_internal` (DB) #### Zugriff * Entfernung von Port `9935` * Integration über Traefik (`mealie.kaleschke.info`) #### Secrets * Entfernung von Klartext-Passwort aus Compose * Nutzung von Portainer Environment Variable: * `MEALIE_DB_PASSWORD` ### Besonderheit * `env_file` mit Host-Pfad funktionierte nicht * Ursache: Portainer Git-Stacks haben keinen Zugriff auf `/mnt/...` ### Lösung * Secrets über Portainer UI verwaltet * Compose nutzt `${MEALIE_DB_PASSWORD}` ### Ergebnis * saubere Trennung von App und DB * keine offenen Ports * Git-Repo ohne Secrets --- ## 🔁 DIUN ### Änderungen * Integration ins `frontend_net` * Nutzung von Container-Namen für Gotify --- ## ⚠️ Wichtige Learnings ### Portainer + Git + env_file * Host-Pfade (`/mnt/...`) sind nicht erreichbar * `env_file` daher ungeeignet 👉 Lösung: * Nutzung von Portainer Environment Variables --- ### `_FILE` Support ist nicht universell * Vaultwarden → unterstützt `_FILE` * PostgreSQL → unterstützt `_FILE` * Mealie → unterstützt `_FILE` **nicht** --- ### Migration ohne Risiko * Daten liegen immer im Volume * Container können jederzeit neu gebaut werden * Backup + Inspect vor Änderung ist Pflicht --- ## 🏁 Fazit Alle kritischen Services wurden erfolgreich: * abgesichert * strukturiert * in Git überführt 👉 System ist jetzt: * reproduzierbar * deutlich sicherer * architektonisch sauber
2.0 KiB
2.0 KiB
Migration Log — Homelab GitOps
Dieses Dokument verfolgt den Fortschritt der Migration von bestehenden Docker-Containern hin zu einem GitOps-basierten Setup (Gitea + Portainer)
Status-Legende
- ⏳ = geplant
- 🔄 = in Arbeit
- ✅ = migriert
- ⚠️ = Problem / prüfen
Phase 1 — Kritische Services
| Service | Status | Ziel | Notizen |
|---|---|---|---|
| Vaultwarden | ✅ | Git + Traefik | Migration abgeschlossen |
| PostgreSQL | ✅ | backend_net | Port entfernen |
| DIUN | ✅ | Gotify fix | Netzwerkproblem |
| Mealie | ✅ | internes Netz | DB trennen |
Phase 2 — Anwendungen
| 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 |
Phase 3 — Operations / Tools
| 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 |
Phase 4 — Infrastruktur & Spezialfälle
| Service | Status | Ziel | Notizen |
|---|---|---|---|
| Tailscale | ⏳ | Host | VPN |
| Pi-hole | ⏳ | Host | DNS |
| Plex | ⏳ | Host | Discovery |
| Netdata | ⏳ | Host | Monitoring |
| Glances | ⏳ | Host | Monitoring |
| Netalertx | ⏳ | Host | Netzwerk |
Notizen
- Keine Migration ohne Test
- Immer nur einen Service gleichzeitig
- Rollback muss jederzeit möglich sein