HOMELAB_ARCHITECTURE_MASTER_V2.md aktualisiert
This commit is contained in:
@@ -548,6 +548,90 @@ Damit ist sofort klar:
|
|||||||
- welche Ausnahmen bewusst dokumentiert sind
|
- welche Ausnahmen bewusst dokumentiert sind
|
||||||
|
|
||||||
---
|
---
|
||||||
|
## ⚠️ Erweiterte Learnings (Portainer + GitOps)
|
||||||
|
|
||||||
|
### Secrets in Portainer Git-Stacks
|
||||||
|
|
||||||
|
Bei Deployments über Portainer mit Git-Repositories gilt:
|
||||||
|
|
||||||
|
* Host-Pfade in `env_file` (z. B. `/mnt/...`) sind **nicht verfügbar**
|
||||||
|
* Portainer-Container hat keinen Zugriff auf diese Pfade
|
||||||
|
|
||||||
|
#### Konsequenz
|
||||||
|
|
||||||
|
* `env_file` ist für Secrets ungeeignet in diesem Setup
|
||||||
|
|
||||||
|
#### Standardlösung
|
||||||
|
|
||||||
|
* Verwendung von **Portainer Environment Variables**
|
||||||
|
* Compose nutzt Variablen:
|
||||||
|
|
||||||
|
* `POSTGRES_PASSWORD: ${VARIABLE_NAME}`
|
||||||
|
|
||||||
|
👉 Ergebnis:
|
||||||
|
|
||||||
|
* keine Secrets im Git
|
||||||
|
* funktionierender Git-Deployment-Flow
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Umgang mit `_FILE` Variablen
|
||||||
|
|
||||||
|
Nicht alle Container unterstützen `_FILE`-basierte Secrets.
|
||||||
|
|
||||||
|
#### Übersicht
|
||||||
|
|
||||||
|
* Vaultwarden → unterstützt `_FILE`
|
||||||
|
* PostgreSQL → unterstützt `_FILE`
|
||||||
|
* Mealie → unterstützt `_FILE` **nicht**
|
||||||
|
|
||||||
|
#### Regel
|
||||||
|
|
||||||
|
* Wenn `_FILE` nicht unterstützt wird:
|
||||||
|
→ Nutzung von Environment Variables über Portainer
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Netzwerk-Standard für Apps mit Datenbanken
|
||||||
|
|
||||||
|
#### Architektur-Regel
|
||||||
|
|
||||||
|
* App → `frontend_net` + internes Netzwerk
|
||||||
|
* Datenbank → nur internes Netzwerk (`internal: true`)
|
||||||
|
|
||||||
|
#### Beispiel (Mealie)
|
||||||
|
|
||||||
|
* `mealie` → `frontend_net` + `mealie_internal`
|
||||||
|
* `mealie-postgres` → nur `mealie_internal`
|
||||||
|
|
||||||
|
👉 Vorteil:
|
||||||
|
|
||||||
|
* Datenbank vollständig isoliert
|
||||||
|
* keine externe Erreichbarkeit möglich
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Migrations-Standard für kritische Services
|
||||||
|
|
||||||
|
Bei Änderungen an Datenbanken oder Core-Services:
|
||||||
|
|
||||||
|
#### Vorgehen
|
||||||
|
|
||||||
|
1. Backup erstellen (`pg_dumpall`)
|
||||||
|
2. aktuellen Zustand sichern (`docker inspect`)
|
||||||
|
3. neue Compose in Git definieren
|
||||||
|
4. Container stoppen & entfernen
|
||||||
|
5. neuen Stack deployen
|
||||||
|
6. Funktion prüfen (Logs + abhängige Services)
|
||||||
|
|
||||||
|
#### Grundsatz
|
||||||
|
|
||||||
|
* Daten liegen im Volume → bleiben erhalten
|
||||||
|
* Container sind austauschbar
|
||||||
|
|
||||||
|
👉 Ziel:
|
||||||
|
|
||||||
|
* risikoarme Migration ohne Datenverlust
|
||||||
|
|
||||||
## Schlussformel
|
## Schlussformel
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user