Dashboard-Auth: Hermes-eigene Auth nicht mehr Pflicht, Caddy reicht

Dashboard bindet seit dem Caddy-Umbau nur noch auf 127.0.0.1 -- Hermes'
Auth-Gate engagiert sich laut eigener Fehlermeldung NUR bei einem
0.0.0.0-Bind, greift also gar nicht mehr. HERMES_DASHBOARD_PASSWORD_HASH
ist damit optional statt Pflicht (kein docker-compose-Abbruch mehr bei
leerem Wert), der dashboard: basic_auth-Block in config.yaml.example ist
standardmaessig auskommentiert. Caddy (TLS + eigene Basic-Auth) bleibt
die einzige im Normalbetrieb noetige Auth-Schicht. README/.env.example
entsprechend entschlackt -- Hash-Erzeugen + Dollarzeichen-Escaping nur
noch als Fallback dokumentiert, falls der Bind mal wieder auf 0.0.0.0
wandert.
This commit is contained in:
ARIA
2026-07-19 22:15:26 +00:00
parent 68ca43e5ac
commit b1423ffb6e
4 changed files with 73 additions and 110 deletions
+20 -10
View File
@@ -20,20 +20,28 @@ HERMES_GATEWAY_PORT=8447
HERMES_UID=10000
HERMES_GID=10000
# Pflicht seit 19.07.2026, SOBALD hermes-agent-dashboard auf 0.0.0.0 bindet:
# Hermes verweigert sonst den Start hart ("no auth providers are registered").
# HERMES_DASHBOARD_USER ist Klartext (frei waehlbar), HERMES_DASHBOARD_PASSWORD_HASH
# ist NIEMALS das Klartext-Passwort, sondern der Hash daraus. Erzeugen (einmalig):
# NICHT MEHR NOETIG im Normalbetrieb (seit dem Caddy-Umbau, 19.07.2026 spaeter
# Abend): das Dashboard bindet nur noch auf 127.0.0.1, Hermes' eigenes
# Auth-Gate engagiert sich laut eigener Fehlermeldung NUR bei einem 0.0.0.0-
# Bind. Caddy (siehe CADDY_BASIC_AUTH_HASH unten) macht die eigentliche
# Absicherung nach aussen. Einfach leer lassen.
#
# Nur falls der Dashboard-Bind mal wieder auf 0.0.0.0 gestellt wird, ist ein
# Wert hier noetig (sonst verweigert Hermes den Start hart mit "no auth
# providers are registered") — dann zusaetzlich den dashboard:-Block in
# hermes-agent-config/config.yaml.example (bzw. der echten config.yaml)
# einkommentieren. HERMES_DASHBOARD_USER ist Klartext (frei waehlbar),
# HERMES_DASHBOARD_PASSWORD_HASH ist NIEMALS das Klartext-Passwort, sondern
# der Hash daraus. Erzeugen (einmalig, gegen den "hermes-agent"-Container,
# NICHT "hermes-agent-dashboard" — der braucht den Hash schon zum Hochfahren,
# Henne-Ei-Problem):
# docker exec -it hermes-agent python -c \
# "from plugins.dashboard_auth.basic import hash_password; print(hash_password('DEIN-PASSWORT'))"
# WICHTIG: gegen den "hermes-agent"-Container, NICHT "hermes-agent-dashboard" —
# der braucht HERMES_DASHBOARD_PASSWORD_HASH schon zum Hochfahren (Henne-Ei-
# Problem, siehe docker-compose.yml), "hermes-agent" laeuft auch ohne.
# Den Output (nicht das Passwort selbst!) hier eintragen.
#
# ACHTUNG DOLLARZEICHEN-FALLE: der erzeugte Hash hat das Format
# "pbkdf2:sha256:<n>$<salt>$<hash>" - also ZWEI rohe "$"-Zeichen drin.
# Docker Compose interpretiert "$xyz" in .env-Werten selbst als
# ACHTUNG DOLLARZEICHEN-FALLE falls Du's doch brauchst: der erzeugte Hash hat
# das Format "pbkdf2:sha256:<n>$<salt>$<hash>" - also ZWEI rohe "$"-Zeichen
# drin. Docker Compose interpretiert "$xyz" in .env-Werten selbst als
# Variablen-Referenz und ersetzt nicht aufloesbare Teile stillschweigend
# durch Leerstring (sichtbar als "WARN The "xyz" variable is not set"
# beim "docker-compose up"). Ergebnis: ein verstuemmelter Hash, das
@@ -44,6 +52,8 @@ HERMES_GID=10000
# pbkdf2:sha256:260000$f2kwriK6aYVRG5$BRps7npu2Tzg...
# wird
# pbkdf2:sha256:260000$$f2kwriK6aYVRG5$$BRps7npu2Tzg...
# Am schnellsten mit dem sed-Trick:
# sed -i '/^HERMES_DASHBOARD_PASSWORD_HASH=/ s/\$/$$/g' .env
HERMES_DASHBOARD_USER=admin
HERMES_DASHBOARD_PASSWORD_HASH=