--- type: Journal status: ACTIVE owner: Curator last_update: 2026-03-10 --- # Session Log — 2026-03-10: Keycloak Hostname Fix, Git Push Analyse & DOCKER_REGISTRY Fix **Datum:** Di. 10. März 2026 **Agent:** 🧹 Curator / 👷 Backend Developer **Kontext:** Folge-Session zu Keycloak-Härtung vom 09.03.2026 --- ## Übersicht | # | Problem | Status | |---|------------------------------------------------------------------|---------------------------------| | 1 | Git Push fehlgeschlagen | ✅ Analysiert (Netzwerkfehler) | | 2 | Keycloak Admin-Dashboard auf `meldestelle-host` nicht erreichbar | ✅ Root Cause + Fix dokumentiert | | 3 | Alertmanager Permission-Fehler | ✅ Identifiziert | | 4 | `DOCKER_REGISTRY` falsch — Images nicht gefunden | ✅ Behoben | --- ## Problem 1: Git Push fehlgeschlagen **Zeitpunkt:** 2026-03-09 ~15:50 (aus Vortagslogs) ### Symptom ``` fatal: unable to access 'https://git.mo-code.at/mocode-software/meldestelle/' Failed to connect to git.mo-code.at port 443 after 133648 ms: Could not connect to server ``` ### Analyse Zwei separate Ereignisse wurden fälschlicherweise als ein Problem wahrgenommen: 1. **15:50 — Push rejected** (`fetch first`): Normaler Git-Fehler, Remote hatte neue Commits. - Korrekt gelöst durch: `fetch` + `rebase` → `Successfully rebased and updated refs/heads/main` 2. **15:51 — Push nach Rebase fehlgeschlagen**: Netzwerkfehler — `git.mo-code.at:443` war nicht erreichbar ( Pangolin-Tunnel kurzzeitig down). ### Lösung Kein Code-Fix nötig. Sobald der Server wieder erreichbar ist: ```bash curl -I https://git.mo-code.at # Erreichbarkeit prüfen git push origin main # Einfach erneut pushen ``` ### Gelernt > Der Rebase war korrekt und vollständig. Kein `--force`, kein `git reset` nötig. > Pangolin-Tunnel-Ausfälle sind transient — immer zuerst Netzwerk prüfen, bevor Git-Befehle wiederholt werden. --- ## Problem 2: Keycloak Admin-Dashboard auf `meldestelle-host` nicht erreichbar **Zeitpunkt:** 2026-03-10 ~10:17 ### Symptom - Lokal (`localhost:8180/admin`): ✅ funktioniert - Auf `meldestelle-host` (`10.0.0.50:8180/admin`): ❌ nicht erreichbar - Management-Port (`10.0.0.50:9000`): ✅ erreichbar ### Root Cause: `KC_HOSTNAME` ohne Port In der `.env` auf `meldestelle-host`: ```env KC_HOSTNAME=10.0.0.50 # ← Port fehlt! ``` Keycloak 26.x (hostname v2) interpretiert `KC_HOSTNAME` als kanonische Basis-URL. Ohne Port-Angabe erwartet Keycloak Requests auf Port **80** (HTTP-Standard). Der tatsächliche Host-Port ist aber **8180** → Mismatch → Admin-Interface antwortet nicht. **Warum Port 9000 funktioniert:** Der Management-Port (`KC_HTTP_MANAGEMENT_PORT=9000`) ist **nicht** an `KC_HOSTNAME` gebunden und antwortet unabhängig vom Hostname-Mapping immer. **Warum lokal alles funktioniert:** ```env KC_HOSTNAME=localhost # Port 8180 → Container-intern 8080 → passt ``` `localhost` ohne Port funktioniert, weil der Browser/curl den Port aus der URL übernimmt und Keycloak bei `KC_HOSTNAME_STRICT=false` toleranter ist. ### Zusätzliches Problem: Deprecated Variable ```env KC_HOSTNAME_STRICT_HTTPS=false # deprecated seit Keycloak 26.x (hostname v2) ``` Diese Variable wird in Keycloak 26.x ignoriert — kann zu unerwartetem Verhalten führen. ### Fix für `.env` auf `meldestelle-host` ```env # VORHER: KC_HOSTNAME=10.0.0.50 KC_HOSTNAME_STRICT=false KC_HOSTNAME_STRICT_HTTPS=false # deprecated # NACHHER: KC_HOSTNAME=10.0.0.50:8180 KC_HOSTNAME_STRICT=false # KC_HOSTNAME_STRICT_HTTPS entfernt (deprecated in Keycloak 26.x) ``` ### Anwendung des Fixes ```bash # Auf meldestelle-host: nano .env # KC_HOSTNAME=10.0.0.50 → KC_HOSTNAME=10.0.0.50:8180 # KC_HOSTNAME_STRICT_HTTPS=false → Zeile entfernen docker compose -f dc-infra.yaml up -d keycloak # Test nach ~30s: curl -s http://10.0.0.50:8180/admin/ ``` ### Gelernt > `KC_HOSTNAME` in Keycloak 26.x (hostname v2) muss den **vollständigen** Hostnamen inkl. Port > enthalten, wenn kein Standard-Port (80/443) verwendet wird. > `KC_HOSTNAME_STRICT_HTTPS` ist seit Keycloak 26.x deprecated und sollte aus allen `.env`-Dateien > entfernt werden — es wird stillschweigend ignoriert. --- ## Problem 3: Alertmanager Permission-Fehler (Nebenbefund) ### Symptom (aus Docker-Logs) ``` err="open /etc/alertmanager/alertmanager.yaml: permission denied" ``` ### Root Cause Die `alertmanager.yaml` auf dem Host hat falsche Dateiberechtigungen. ### Fix ```bash chmod 644 config/docker/alertmanager/alertmanager.yaml docker compose -f dc-ops.yaml restart alertmanager ``` --- ## Problem 4: `DOCKER_REGISTRY` falsch — Images nicht gefunden **Zeitpunkt:** 2026-03-10 ~13:20 ### Symptom ``` ! Image git.mo-code.at/mocode-software/keycloak:latest manifest unknown ! Image git.mo-code.at/mocode-software/api-gateway:latest manifest unknown Error response from daemon: No such image: git.mo-code.at/mocode-software/keycloak:latest ``` `docker compose --profile all up -d --no-build` schlug fehl — alle custom Images nicht gefunden. ### Root Cause: Falscher Registry-Pfad in `.env` Die Pipeline (`.gitea/workflows/docker-publish.yaml`) pusht Images nach: ``` 10.0.0.22:3000/mocode-software/meldestelle/keycloak:latest ^^^^^^^^^^^^ ``` Die `.env` hatte jedoch: ```env DOCKER_REGISTRY=git.mo-code.at/mocode-software # ← /meldestelle fehlt! ``` Docker suchte also unter `git.mo-code.at/mocode-software/keycloak:latest` — das `/meldestelle/`-Segment fehlte. ### Fix | Datei | Vorher | Nachher | |-------|--------|---------| | `.env` (lokal) | `git.mo-code.at/mocode-software` | `git.mo-code.at/mocode-software/meldestelle` | ### Anwendung auf `meldestelle-host` ```bash nano .env # DOCKER_REGISTRY=git.mo-code.at/mocode-software # ↓ # DOCKER_REGISTRY=git.mo-code.at/mocode-software/meldestelle docker compose --profile all up -d --no-build ``` ### Gelernt > Der Image-Pfad in `DOCKER_REGISTRY` muss exakt dem Pfad entsprechen, unter dem die Pipeline > die Images in die Registry pusht — inklusive aller Namespace-Segmente (`/meldestelle/`). > Beim Einrichten einer neuen Registry immer `docker pull ` manuell testen, > bevor `docker compose up --no-build` verwendet wird. --- ## Offene Punkte | Punkt | Priorität | Beschreibung | |---------------------------------------|------------|-----------------------------------------------------------------| | Keycloak Hostname Fix anwenden | 🔴 Hoch | `.env` auf `meldestelle-host`: `KC_HOSTNAME=10.0.0.50:8180` | | DOCKER_REGISTRY Fix anwenden | 🔴 Hoch | `.env` auf `meldestelle-host`: `DOCKER_REGISTRY=...meldestelle` | | Alertmanager Permission Fix | 🟡 Mittel | `chmod 644` auf alertmanager.yaml | | `KC_HOSTNAME_STRICT_HTTPS` bereinigen | 🟢 Niedrig | Deprecated Variable aus allen `.env`-Dateien entfernen |