7.1 KiB
| type | status | owner | last_update |
|---|---|---|---|
| Journal | ACTIVE | Curator | 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:
- 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
- 15:51 — Push nach Rebase fehlgeschlagen: Netzwerkfehler —
git.mo-code.at:443war nicht erreichbar ( Pangolin-Tunnel kurzzeitig down).
Lösung
Kein Code-Fix nötig. Sobald der Server wieder erreichbar ist:
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, keingit resetnö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:
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:
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
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
# 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
# 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_HOSTNAMEin Keycloak 26.x (hostname v2) muss den vollständigen Hostnamen inkl. Port enthalten, wenn kein Standard-Port (80/443) verwendet wird.KC_HOSTNAME_STRICT_HTTPSist 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
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:
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
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_REGISTRYmuss exakt dem Pfad entsprechen, unter dem die Pipeline die Images in die Registry pusht — inklusive aller Namespace-Segmente (/meldestelle/). Beim Einrichten einer neuen Registry immerdocker pull <full-image-path>manuell testen, bevordocker compose up --no-buildverwendet 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 |