Migration Log – 2026-03-25

# 🗓️ 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
This commit is contained in:
2026-03-25 19:13:35 +00:00
parent 5027422629
commit 73137b78d9
+1 -1
View File
@@ -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