From 73137b78d9f7f7c083b0a2a947901f198b7d509f Mon Sep 17 00:00:00 2001 From: Micha Date: Wed, 25 Mar 2026 19:13:35 +0000 Subject: [PATCH] =?UTF-8?q?Migration=20Log=20=E2=80=93=202026-03-25?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit # 🗓️ 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 --- docs/MIGRATION_LOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/MIGRATION_LOG.md b/docs/MIGRATION_LOG.md index 9c369c1..2abc377 100644 --- a/docs/MIGRATION_LOG.md +++ b/docs/MIGRATION_LOG.md @@ -1,6 +1,6 @@ # 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 von bestehenden Docker-Containern hin zu einem GitOps-basierten Setup (Gitea + Portainer) ## Status-Legende