Aktualisierung

Aktualisierung meiner Doku
This commit is contained in:
2026-04-15 12:21:02 +02:00
parent 736aef160e
commit d362a9ab4c
3 changed files with 203 additions and 145 deletions
+22 -14
View File
@@ -3,7 +3,7 @@
> **Single Source of Truth** für Docker-Netzwerkarchitektur, Sicherheitsregeln, Zielbild und Migration des Kallilabcore-Homelabs.
> **Arbeitsregel für KI-Assistenten:** Dieses Dokument immer zuerst lesen, bevor Fragen zu Containern, Netzwerken, Traefik, Tailscale, Migration oder Security beantwortet werden.
**Stand:** 2026-03-29 | **Aktueller Sprint:** 7 (Authelia SSO/2FA) — Sprints 16 abgeschlossen
**Stand:** 2026-04-15 | **Aktueller Schwerpunkt:** GitOps / Borg / Workflow-Konsolidierung
---
@@ -37,7 +37,7 @@
| TLS | Let's Encrypt via Cloudflare DNS Challenge |
| Certresolver | `le` |
| Compose-Standard | Komodo (GitOps, Stack aus Gitea) |
| Legacy | Portainer CE (in Ablösung durch Komodo, Sprint 5) |
| Legacy | Portainer CE entfernt; Komodo ist alleiniger Stack-Manager |
| Homelab-Compose-Pfad | `/mnt/user/services/homelab/` |
| Secrets-Pfad | `/mnt/user/appdata/secrets/` |
| Grundsatz | Keine neuen Dockerman-Einzelcontainer |
@@ -66,7 +66,7 @@ Komodo, filebrowser, scrutiny, UptimeKuma, code-server, Traefik-Dashboard, backr
Alle produktiven Container werden als Compose verwaltet. Bestehende Dockerman-/Ad-hoc-Container werden schrittweise migriert.
### P6 — Secrets nie im Klartext
Passwörter, Tokens und API-Keys gehören in Secret-Dateien unter `/mnt/user/appdata/secrets/` oder als Komodo/Portainer Environment Variables mit `${VARIABLE}` in der Compose.
Passwörter, Tokens und API-Keys gehören in Secret-Dateien unter `/mnt/user/appdata/secrets/` oder als Komodo Stack Environment Variables mit `${VARIABLE}` in der Compose.
### P7 — `restart: unless-stopped` ist Pflichtstandard
Jeder produktive Container nutzt `restart: unless-stopped`, außer eine Ausnahme ist dokumentiert.
@@ -74,7 +74,7 @@ Jeder produktive Container nutzt `restart: unless-stopped`, außer eine Ausnahme
### P8 — Least Privilege
- `security_opt: ["no-new-privileges:true"]` standardmäßig ergänzen
- `privileged: true` nur mit dokumentierter Begründung
- Docker-Socket standardmäßig vorsichtig behandeln; **Komodo/PortainerCE sind dokumentierte Ausnahmen**
- Docker-Socket standardmäßig vorsichtig behandeln; **Komodo ist dokumentierte Ausnahme**
---
@@ -166,7 +166,7 @@ Wenn ein Dienst im `frontend_net` hängt, heißt das **nicht automatisch öffent
1. Keine produktiven Dienste im Docker-Default-`bridge`
2. Keine direkten Host-Ports für Web-UIs außer dokumentierte Ausnahmen
3. `restart: unless-stopped` als Standard
4. Secrets als Datei / `_FILE` oder Komodo/Portainer Environment Variables mit `${VAR}`
4. Secrets als Datei / `_FILE` oder Komodo Stack Environment Variables mit `${VAR}`
5. `no-new-privileges:true` ergänzen, wo praktikabel
6. `traefik.docker.network=frontend_net` immer explizit setzen
7. Admin-Dienste immer mit `dashboard-auth@file,secure-headers@file`
@@ -262,7 +262,7 @@ Legende Status:
|---|---|---|---|---|---|
| `komodo` | ✅ | `frontend_net` | Traefik + Middleware | primärer GitOps-Stack-Manager | — |
| `code-server` | ✅ | `frontend_net` | Traefik + Middleware | `PASSWORD_FILE` aktiv | — |
| `PortainerCE` | ⚠️ Legacy | `frontend_net` | Traefik + Middleware | wird durch Komodo abgelöst | abschalten Sprint 5 |
| `PortainerCE` | ❌ entfernt | - | - | 2026-03-29 abgeschaltet | historisch; nicht mehr deployen |
| `filebrowser` | ✅ | `frontend_net` | Traefik + Middleware | aktiv via `files.kaleschke.info` | Mounts einschränken (Block F) |
| `borg-ui` | 🔄 | `frontend_net` | Traefik + Middleware | Git-Stack für Borg/BorgBase-Backups; Borg UI bündelt Borg-CLI im Container | BorgBase-SSH-Key hinterlegen, erstes Repo initialisieren, Quell-Mounts bei Bedarf gezielt erweitern |
| `mail-archiver` | ✅ | `frontend_net`, `backend_net` | intern | IMAP-Abruf + DB-Zugang, kein öffentlicher Zugang | — |
@@ -281,7 +281,7 @@ Legende Status:
| Container | Status | Ziel |
|---|---|---|
| `Plex-Media-Server` | ⏳ Dockerman | Compose-Migration, `host`-Netz bleibt (Discovery) |
| `PortainerCE` | ⚠️ Legacy | abschalten nach vollständiger Komodo-Übernahme |
| `PortainerCE` | ✅ abgeschlossen | 2026-03-29 abgeschaltet |
### 7.8 Entfernte Container
@@ -300,6 +300,7 @@ Legende Status:
| `netalertx` | 2026-03-28 | nicht mehr aktiv |
| `luckyBackup` | 2026-03-28 | nicht mehr aktiv; Backup via backrest |
| `Stash` | 2026-03-28 | nicht mehr aktiv |
| `PortainerCE` | 2026-03-29 | abgeschaltet; Komodo ist alleiniger Stack-Manager |
---
@@ -444,7 +445,6 @@ labels:
| `scrutiny` | `privileged: true` | SMART-Datenzugriff auf Laufwerke |
| `beszel-agent` | `host` | direkter Host-Zugriff für System-Monitoring nötig |
| `Komodo` | Docker-Socket Zugriff | Stack-Deployments benötigen Socket |
| `PortainerCE` | Docker-Socket | Legacy-UI; wird durch Komodo abgelöst |
| `gitea` | SSH-Port 222 direkt gebunden | Git-SSH-Zugang; kein HTTP-Proxy für SSH möglich |
| `ddns-updater` | bleibt in `frontend_net` statt `backend_net` | braucht Cloudflare-API-Zugang; `backend_net` ist `internal: true` |
| `mail-archiver` | `frontend_net` + `backend_net` | braucht Internetzugang für IMAP-Abruf (GMX, Gmail) und DB-Zugang |
@@ -479,10 +479,18 @@ Dieses Projekt wird **blockweise** umgesetzt, nicht wild containerweise.
7. erst dann nächster Schritt
### 11.4 Source-of-Truth-Hierarchie
1. **Dieses Dokument**
2. Compose-Dateien im Git-Repo
3. operative Checklisten
4. ad-hoc Notizen / Chat
1. **Gitea Online (origin/master)**
2. lokaler Clone / GitHub Desktop
3. Compose-Dateien im Git-Repo
4. Komodo als Deploy-Consumer
5. operative Checklisten und Notizen
### 11.5 Operativer Git-Workflow
- Gitea Online ist der verbindliche Sollzustand.
- Lokal wird standardmäßig über GitHub Desktop gearbeitet.
- Komodo deployt aus Gitea und ist kein Bearbeitungsort.
- Webhooks sind aktiv: Ein Push kann unmittelbar einen Komodo-Deploy auslösen.
- Wenn online in Gitea editiert wurde, muss vor der nächsten lokalen Änderung zuerst Fetch origin und danach Pull origin erfolgen.
---
@@ -518,9 +526,9 @@ Komodo ist nun der primäre GitOps-Stack-Manager:
- **Komodo Core** läuft als Docker-Stack (`ops/komodo/docker-compose.yml`)
- **Komodo Periphery** läuft auf dem Unraid-Host für direktes Server-Management
- Stacks werden via Gitea synchronisiert und über Komodo deployed
- Portainer CE läuft noch als Legacy-UI und wird in Sprint 5 abgeschaltet
- Portainer CE ist abgeschaltet; Komodo ist der alleinige aktive Stack-Manager
**Vorteil gegenüber Portainer:** Sauberer GitOps-Flow ohne Web-Editor; alle Stack-Änderungen laufen über Git.
**Betriebsregel:** Alle Stack-Änderungen laufen über Git; Komodo konsumiert nur den Stand aus Gitea.
### AdGuard Home — Ablösung von Pi-hole (2026-03-28)
`binhex-official-pihole` wurde entfernt und durch `AdGuard Home` + `unbound` ersetzt:
+33 -30
View File
@@ -1,53 +1,56 @@
# Homelab Infrastructure (KalliLab CORE)
Dieses Repository ist die zentrale Quelle ("Single Source of Truth") für die komplette Infrastruktur meines Homelabs.
Dieses Repository ist die zentrale Quelle ("Single Source of Truth") fuer die komplette Infrastruktur meines Homelabs.
## 🚨 WICHTIG Einstieg
## WICHTIG - Einstieg
Vor jeder Änderung lesen:
Vor jeder Aenderung lesen:
1. 👉 HOMELAB_ARCHITECTURE_MASTER_V2.md
2. 👉 docs/WORKFLOW.md
1. `HOMELAB_ARCHITECTURE_MASTER_V2.md`
2. `docs/WORKFLOW.md`
## Architektur
- Host: Unraid
- Container: Docker (Compose)
- Container: Docker Compose
- Reverse Proxy: Traefik v3 (100% Docker-Labels, kein File-Provider mehr)
- Zugriff: Tailscale (VPN)
- DNS: AdGuard Home + Unbound
- GitOps: Gitea + Komodo (Stack-Manager)
- GitOps: Gitea + Komodo
## Grundprinzipien
- Alle Änderungen erfolgen über Git (Komodo deployed automatisch aus Gitea)
- Keine produktiven Container außerhalb von Compose
- Traefik ist der einzige öffentliche Einstiegspunkt
- Admin-Dienste sind nicht öffentlich erreichbar (nur via VPN oder Auth)
- Secrets werden niemals im Repository gespeichert
- Gitea Online ist der operative Sollzustand.
- Der lokale Clone ist die Arbeitskopie.
- Komodo deployed automatisch aus Gitea und ist kein Bearbeitungsort.
- Keine produktiven Container ausserhalb von Compose.
- Traefik ist der einzige oeffentliche Einstiegspunkt.
- Secrets werden niemals im Repository gespeichert.
## Repository-Struktur
- `core/` Basisdienste (Gitea)
- `security/` sicherheitskritische Dienste (Vaultwarden)
- `infra/` Datenbanken & technische Services (PostgreSQL, Redis, DDNS-Updater)
- `apps/` Anwendungen (Immich, Paperless, Mealie, Homepage, ...)
- `ops/` Monitoring & Tools (Komodo, Scrutiny, Uptime-Kuma, Backrest, ...)
- `host-services/` Dienste mit Host-Netz (AdGuard, Beszel, Tailscale, ...)
- `traefik/` Reverse Proxy Konfiguration
- `docs/` Dokumentation & Prozesse
- `env/` Beispiel-Umgebungsvariablen
- `core/` -> Basisdienste (Gitea)
- `security/` -> sicherheitskritische Dienste
- `infra/` -> Datenbanken und technische Services
- `apps/` -> Anwendungen
- `ops/` -> Monitoring und Tools
- `host-services/` -> Dienste mit Host-Netz
- `traefik/` -> Reverse Proxy Konfiguration
- `docs/` -> Dokumentation und Prozesse
- `env/` -> Beispiel-Umgebungsvariablen
## Workflow
## Kurz-Workflow
1. Änderung im Repository (Git)
2. Commit & Push nach Gitea
3. Komodo deployed automatisch (GitOps)
4. Testen
5. Dokumentation aktualisieren
1. In GitHub Desktop `Fetch origin`.
2. Wenn noetig `Pull origin`.
3. Lokal aendern.
4. Commit erstellen.
5. `Push origin`.
6. Komodo-Webhook und Ergebnis pruefen.
7. Doku bei Bedarf aktualisieren.
## Status
GitOps-Migration (Sprint 14) abgeschlossen. Komodo ist primärer Stack-Manager.
> ⚠️ Portainer CE läuft noch als Legacy-UI wird in Sprint 5 abgeschaltet.
- Komodo ist der primaere und einzige produktive Stack-Manager.
- Portainer CE ist abgeschaltet und kein Teil des aktiven Betriebs mehr.
- Der verbindliche Detailablauf steht in `docs/WORKFLOW.md`.
+148 -101
View File
@@ -1,6 +1,6 @@
# Workflow GitOps / No-Drift Regeln
# Workflow - GitOps / No-Drift Regeln
Dieses Dokument definiert den verbindlichen Arbeitsablauf für Änderungen an der Homelab-Infrastruktur.
Dieses Dokument definiert den verbindlichen Arbeitsablauf fuer Aenderungen an der Homelab-Infrastruktur.
---
@@ -8,7 +8,8 @@ Dieses Dokument definiert den verbindlichen Arbeitsablauf für Änderungen an de
Es darf **keine dauerhafte Abweichung** zwischen:
- Git-Repository
- Gitea Online
- lokalem Clone
- Komodo-Stacks
- laufenden Docker-Containern
- Host-Konfiguration
@@ -17,45 +18,124 @@ geben.
**Grundsatz:**
> Git ist die einzige Quelle der Wahrheit.
> Gitea Online ist die operative Quelle der Wahrheit.
---
## Die wichtigste Regel
## Betriebsmodell
Änderungen werden immer in dieser Reihenfolge durchgeführt:
Die Rollen sind bewusst getrennt:
1. **Änderung im Repository** (Gitea)
2. **Commit**
3. **Push**
4. **Deploy über Komodo** (GitOps-Sync)
5. **Test**
6. **Dokumentation aktualisieren**
- **Gitea Online** ist `origin` und damit der verbindliche Sollzustand.
- Der **lokale Clone** ist die Arbeitskopie fuer Aenderungen.
- **Komodo** deployed aus Gitea und ist kein Bearbeitungsort.
- Der **Host** ist Laufzeit, nicht Quelle der Wahrheit.
### Operative Hierarchie
1. `origin/master` in Gitea
2. lokaler Clone auf dem Windows-PC
3. Komodo-Deployments / Webhooks
4. laufende Container und Host-Dateien
Wenn diese Ebenen voneinander abweichen, gewinnt immer zuerst Git und nicht der manuelle Live-Zustand.
---
## Standard-Workflow
Aenderungen werden immer in dieser Reihenfolge durchgefuehrt:
1. Lokal synchronisieren
2. Lokal aendern
3. Commit erzeugen
4. Push nach Gitea
5. Komodo reagiert automatisch per Webhook
6. Ergebnis testen
7. Doku pruefen und nachziehen
---
## Standardwerkzeug fuer den Alltag
Der bevorzugte lokale Workflow ist:
- **GitHub Desktop** fuer `Fetch`, `Pull`, `Commit`, `Push`
- Editor nach Wahl fuer Datei-Aenderungen
- Gitea Web fuer Historie, Review und kleine Notfaelle
- Komodo nur fuer Deploy-Status, Logs und Stack-Sicht
### Tagesablauf mit GitHub Desktop
Vor lokaler Arbeit:
1. GitHub Desktop oeffnen
2. `Fetch origin`
3. wenn noetig `Pull origin`
Nach lokaler Arbeit:
1. Aenderungen pruefen
2. Commit mit sauberer Nachricht
3. `Push origin`
4. Komodo-Webhook im Hinterkopf behalten
---
## Wenn online in Gitea gearbeitet wurde
Web-Aenderungen in Gitea sind erlaubt, aber nicht der Normalfall.
Wenn online etwas geaendert wurde, gilt **vor der naechsten lokalen Arbeit**:
1. GitHub Desktop oeffnen
2. `Fetch origin`
3. `Pull origin`
4. erst dann lokal weiterarbeiten
Sonst entsteht Drift zwischen Gitea Online und lokalem Clone.
---
## Komodo-Regeln
Komodo ist in diesem Setup:
- primaeres Deployment-Werkzeug
- GitOps-Consumer fuer die Stacks
- Monitoring- und Status-Werkzeug
### Deshalb gilt
- Stack-Konfiguration nur im Repository anpassen
- nicht im Komodo-Web-Editor arbeiten
- Pushes koennen automatisch einen Komodo-Deploy ausloesen
- wenn Komodo und Git voneinander abweichen, gewinnt Git
---
## Verbotene Arbeitsweise
Folgende Dinge sind grundsätzlich zu vermeiden:
Folgende Dinge sind grundsaetzlich zu vermeiden:
- Änderungen direkt im Komodo- oder Portainer-Web-Editor
- Änderungen direkt per `docker run`
- Änderungen an laufenden Containern ohne Repo-Anpassung
- Aenderungen direkt im Komodo-Web-Editor
- Aenderungen direkt per `docker run`
- Aenderungen an laufenden Containern ohne Repo-Anpassung
- spontane Host-Hotfixes ohne Nachdokumentation
- Secrets im Git-Repository
- mehrere Services gleichzeitig migrieren
- mehrere kritische Dienste gleichzeitig migrieren
---
## Erlaubte Arbeitsweise
Erlaubt und gewünscht sind:
Erlaubt und gewuenscht sind:
- Änderungen an Compose-Dateien im Git-Repo
- Commit + Push vor jedem Deploy
- Komodo als primäres Deployment-Werkzeug (GitOps)
- Portainer CE nur noch als Legacy-UI (wird in Sprint 5 abgeschaltet)
- Host-Hotfixes nur im Ausnahmefall sofortige Nachpflege im Repo
- Aenderungen an Compose-Dateien im Git-Repo
- Commit + Push vor jedem produktiven Deploy
- GitHub Desktop als Standardweg fuer den lokalen Sync
- Gitea Web fuer Review, Historie und kleine Hotfixes
- Host-Hotfixes nur im Ausnahmefall mit sofortiger Nachpflege im Repo
---
@@ -67,10 +147,11 @@ Erlaubt und gewünscht sind:
Beispiele:
- laufender Container wurde manuell verändert
- laufender Container wurde manuell veraendert
- lokaler Clone ist nicht mehr auf dem Stand von `origin/master`
- Komodo-Stack entspricht nicht mehr dem Repo
- Host-Dateien wurden angepasst, aber nicht dokumentiert
- Traefik dynamic config wurde lokal geändert, aber Git weiß nichts davon
- Traefik dynamic config wurde lokal geaendert, aber Git weiss nichts davon
### Regel
@@ -79,52 +160,36 @@ Wenn Drift erkannt wird, gilt:
1. Drift **nicht ignorieren**
2. Drift **sofort benennen**
3. entscheiden:
- Repo an Realität anpassen **oder**
- Realität an Repo zurückführen
- Repo an Realitaet anpassen
- oder Realitaet an Repo zurueckfuehren
4. erst danach weiterarbeiten
---
## Ausnahmefall: Hotfix auf dem Host
Manchmal ist ein Live-Hotfix nötig. Das ist erlaubt, aber nur unter diesen Bedingungen:
Manchmal ist ein Live-Hotfix noetig. Das ist erlaubt, aber nur unter diesen Bedingungen:
1. Hotfix nur wenn der Dienst sonst nicht funktioniert
2. Änderung sofort dokumentieren
3. Änderung danach ins Git-Modell überführen
2. Aenderung sofort dokumentieren
3. Aenderung danach ins Git-Modell ueberfuehren
4. kein stiller Dauerzustand
### Pflicht bei Hotfixes
- Was wurde geändert?
- Wo wurde es geändert?
- Warum war es nötig?
- Muss diese Änderung ins Repo übernommen werden?
- Was wurde geaendert?
- Wo wurde es geaendert?
- Warum war es noetig?
- Muss diese Aenderung ins Repo uebernommen werden?
- Ist ein Rollback dokumentiert?
---
## Komodo-Regeln
## Ausnahme: Traefik Dynamic Config
Komodo ist in diesem Setup:
> **Diese Dateien werden von Komodo nicht automatisch deployed.**
- **primäres** Deployment-Werkzeug (GitOps)
- Stack-Manager (sync aus Gitea)
- Monitoring-/Status-Werkzeug
### Deshalb gilt
- Stack-Konfiguration nur im Repository anpassen
- Komodo sync auslösen statt manuell deployen
- Wenn Komodo und Git voneinander abweichen, gewinnt Git
---
## ⚠️ Ausnahme: Traefik Dynamic Config
> **Diese Dateien werden von Komodo NICHT automatisch deployt.**
Komodo deployt ausschließlich `docker-compose.yml`-Dateien. Die Traefik-Konfigurationsdateien unter `traefik/dynamic/` im Git-Repo werden **nicht** automatisch auf den Host übertragen.
Komodo deployed ausschliesslich `docker-compose.yml`-Dateien. Die Traefik-Konfigurationsdateien unter `traefik/dynamic/` im Git-Repo werden **nicht** automatisch auf den Host uebertragen.
### Betroffene Dateien
@@ -134,31 +199,15 @@ Komodo deployt ausschließlich `docker-compose.yml`-Dateien. Die Traefik-Konfigu
| `traefik/dynamic/tls.yml` | `/mnt/user/appdata/traefik/dynamic/tls.yml` |
| `traefik/dynamic/dashboards.yml` | `/mnt/user/appdata/traefik/dynamic/dashboards.yml` |
### Pflicht-Workflow bei Änderungen an Traefik Dynamic Config
### Pflicht-Workflow bei Aenderungen an Traefik Dynamic Config
1. Datei im Git-Repo (`traefik/dynamic/`) ändern
1. Datei im Git-Repo (`traefik/dynamic/`) aendern
2. Commit + Push
3. **Manuell auf den Host kopieren:**
```bash
cp /mnt/user/homelab-infra/traefik/dynamic/middlewares.yml \
/mnt/user/appdata/traefik/dynamic/middlewares.yml
```
4. Traefik lädt dynamic config automatisch neu (kein Neustart nötig)
5. Änderung testen
3. Datei manuell auf den Host kopieren
4. Traefik laedt dynamic config automatisch neu
5. Aenderung testen
> **Merksatz:** Git-Commit allein reicht hier nicht. Ohne den manuellen Kopier-Schritt wirkt die Änderung nicht.
### Warum so?
Die `dynamic/`-Dateien definieren Traefik-Middlewares (z. B. Authelia ForwardAuth, Security-Headers). Alle anderen Services referenzieren diese via `@file`-Suffix. Wenn die Dateien auf dem Host fehlen oder veraltet sind, schlagen alle Dienste mit `authelia@file` oder `secure-headers@file` still fehl.
---
## Portainer-Regeln (Legacy)
> ⚠️ Portainer CE ist in Ablösung. Abschaltung geplant in Sprint 5.
Portainer ist **nicht** mehr die Quelle der Wahrheit und wird nur noch als Fallback-UI genutzt.
> **Merksatz:** Git-Commit allein reicht hier nicht. Ohne den manuellen Kopier-Schritt wirkt die Aenderung nicht.
---
@@ -166,19 +215,20 @@ Portainer ist **nicht** mehr die Quelle der Wahrheit und wird nur noch als Fallb
- Secrets liegen niemals im Repository
- Secrets liegen unter `/mnt/user/appdata/secrets/`
- Secrets werden über Datei-Mounts mit `_FILE` Variablen oder Komodo Stack Environment Variables eingebunden
- Secrets werden ueber Datei-Mounts mit `_FILE` Variablen oder Komodo Stack Environment Variables eingebunden
- Rechte: `chmod 600`
- Secret-Namen und Pfade werden in `docs/SECRETS_MAP.md` dokumentiert
---
## DNS-Regeln für Container
## DNS-Regeln fuer Container
Nicht alle Container können externe DNS-Namen auflösen. Standardmäßig nutzt Docker `127.0.0.11` als internen DNS-Resolver. In bestimmten Netzwerk-Setups schlägt externe Namensauflösung damit fehl (`server misbehaving`).
Nicht alle Container koennen externe DNS-Namen aufloesen. Standardmaessig nutzt Docker `127.0.0.11` als internen DNS-Resolver. In bestimmten Netzwerk-Setups schlaegt externe Namensaufloesung damit fehl (`server misbehaving`).
### Regel
Container die **externe Domains auflösen müssen** (z. B. für ACME/Let's Encrypt, GitHub, externe APIs, DDNS-Updates) erhalten explizit:
Container die **externe Domains aufloesen muessen** erhalten explizit:
```yaml
dns:
- 1.1.1.1
@@ -192,20 +242,16 @@ dns:
| `traefik` | ACME Let's Encrypt (`acme-v02.api.letsencrypt.org`) |
| `ddns-updater` | IP-Erkennung (ipify.org) + Cloudflare API |
### Interne Services (kein `dns:` nötig)
Container, die nur Docker-interne Hostnamen auflösen (z. B. `authelia`, `redis`, `postgres`), benötigen keinen expliziten DNS-Eintrag.
---
## Dokumentationspflicht
Nach jeder erfolgreichen Migration oder relevanten Änderung müssen diese Dateien geprüft werden:
Nach jeder erfolgreichen Migration oder relevanten Aenderung muessen diese Dateien geprueft werden:
- `docs/MIGRATION_LOG.md`
- `docs/SECRETS_MAP.md`
- `docs/ROLLBACK.md`
- `HOMELAB_ARCHITECTURE_MASTER_V2.md` (falls Architektur betroffen)
- `HOMELAB_ARCHITECTURE_MASTER_V2.md` falls Architektur betroffen ist
---
@@ -213,33 +259,34 @@ Nach jeder erfolgreichen Migration oder relevanten Änderung müssen diese Datei
Jede Migration wird als Sprint behandelt. Ein Sprint umfasst immer:
1. Ist-Zustand prüfen
2. Zielzustand definieren (in `HOMELAB_ARCHITECTURE_MASTER_V2.md`)
1. Ist-Zustand pruefen
2. Zielzustand definieren
3. Compose-Datei im Repo anpassen
4. Commit + Push
5. Deploy über Komodo
6. Test
7. Dokumentation aktualisieren
8. Sprint abschließen
4. lokal synchronisieren und aendern
5. Commit + Push
6. Deploy ueber Komodo
7. Test
8. Doku aktualisieren
9. Sprint abschliessen
> Nie mehrere kritische Dienste gleichzeitig ändern.
> Nie mehrere kritische Dienste gleichzeitig aendern.
---
## Rollback-Regel
Jede Änderung muss rückrollbar sein. Vor jedem Deploy muss klar sein:
Jede Aenderung muss rueckrollbar sein. Vor jedem Deploy muss klar sein:
- wie der letzte funktionierende Zustand aussieht
- welcher Commit der letzte stabile Stand ist
- ob Datenpfade unverändert bleiben
- wie der Dienst im Fehlerfall zurückgenommen wird
- ob Datenpfade unveraendert bleiben
- wie der Dienst im Fehlerfall zurueckgenommen wird
Wenn Rollback nicht klar ist, wird nicht deployt.
Wenn Rollback nicht klar ist, wird nicht deployed.
---
## Arbeitsregel für KI-Assistenten
## Arbeitsregel fuer KI-Assistenten
Wenn mit einer KI gearbeitet wird, gilt immer:
@@ -249,12 +296,12 @@ Wenn mit einer KI gearbeitet wird, gilt immer:
> 3. die betroffene Compose-Datei
> 4. ggf. `docs/MIGRATION_LOG.md`
Erst danach dürfen Änderungen vorgeschlagen werden.
Erst danach duerfen Aenderungen vorgeschlagen werden.
---
## Merksatz
> Erst syncen, dann aendern.
> Erst Git, dann Deploy.
> Erst Wahrheit, dann Aktion.
> Kein Drift, kein Chaos.
> Kein Drift, kein Chaos.