Dashboard-Auth: Hermes verweigert 0.0.0.0-Bind ohne registrierten Auth-Provider

Hermes' eigenes Auth-Gate blockt den Container-Start hart, wenn --host 0.0.0.0
gesetzt ist aber keine Auth konfiguriert wurde. Basic-Auth-Block in
config.yaml.example ergaenzt, dashboard-Service bekommt HERMES_DASHBOARD_USER
+ HERMES_DASHBOARD_PASSWORD_HASH als Pflicht-Env, .env.example dokumentiert
die Hash-Erzeugung ueber Hermes' eingebautes plugins.dashboard_auth.basic.
This commit is contained in:
ARIA
2026-07-19 21:37:03 +00:00
parent 633cf205ef
commit 11341c8521
3 changed files with 42 additions and 5 deletions
+11
View File
@@ -20,6 +20,17 @@ 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,
# im laufenden Dashboard-Container):
# docker exec -it hermes-agent-dashboard python -c \
# "from plugins.dashboard_auth.basic import hash_password; print(hash_password('DEIN-PASSWORT'))"
# Den Output (nicht das Passwort selbst!) hier eintragen.
HERMES_DASHBOARD_USER=admin
HERMES_DASHBOARD_PASSWORD_HASH=
# Optional: NUR setzen wenn Du Hermes' EIGENEN OpenAI-kompatiblen API-Server
# aktivierst (siehe API_SERVER_HOST/API_SERVER_KEY-Kommentar im
# hermes-agent-Service in docker-compose.yml) — z.B. um einen mobilen Client
+11 -5
View File
@@ -187,11 +187,17 @@ services:
environment:
- HERMES_UID=${HERMES_UID:-10000}
- HERMES_GID=${HERMES_GID:-10000}
# ACHTUNG (Stefan, 19.07.2026): auf Wunsch testweise auf 0.0.0.0 geoeffnet,
# weil SSH-Tunnel/SSL-Setup Probleme machte. Hermes' eigene Empfehlung war
# eigentlich 127.0.0.1 + `ssh -L 9119:localhost:9119 <diese-maschine>`, weil
# das Dashboard API-Keys/Config im Klartext ausliefert. MUSS vor laengerem
# Betrieb hinter Auth (Caddy/nginx Basic-Auth o.ae.) — siehe README.
# Pflicht seit 19.07.2026: Hermes verweigert den 0.0.0.0-Bind mit hartem
# Exit, wenn kein Auth-Provider registriert ist ("Refusing to bind
# dashboard to 0.0.0.0 — ... no auth providers are registered"). Diese
# beiden Werte fuettern den dashboard.basic_auth-Block in
# hermes-agent-config/config.yaml.example (dort auch die Anleitung zum
# Hash-Erzeugen).
- HERMES_DASHBOARD_USER=${HERMES_DASHBOARD_USER:-admin}
- HERMES_DASHBOARD_PASSWORD_HASH=${HERMES_DASHBOARD_PASSWORD_HASH:?HERMES_DASHBOARD_PASSWORD_HASH muss in .env gesetzt sein - siehe .env.example. Ohne Auth-Provider verweigert Hermes den 0.0.0.0-Bind komplett.}
# Stefans Wunsch vom 19.07.2026: weiter auf 0.0.0.0, weil SSH-Tunnel/SSL
# Probleme machte — jetzt aber MIT registriertem Basic-Auth-Provider (s.o.),
# sonst kommt der Container laut Hermes' eigenem Auth-Gate gar nicht hoch.
command: ["dashboard", "--host", "0.0.0.0", "--no-open"]
networks:
+20
View File
@@ -31,3 +31,23 @@ model:
# Gateway prüft das als "Authorization: Bearer <api_key>" — der OpenAI SDK
# (den Hermes intern nutzt) setzt den Header automatisch aus diesem Feld.
api_key: "${HERMES_GATEWAY_TOKEN}"
# ─── Dashboard-Auth ─────────────────────────────────────────────────────
# Seit 19.07.2026 Pflicht: Hermes verweigert den Bind des Dashboards auf
# 0.0.0.0 komplett, wenn kein Auth-Provider registriert ist ("Refusing to
# bind dashboard to 0.0.0.0 — the auth gate engages on non-loopback binds,
# but no auth providers are registered"). Ohne diesen Block bindet's nur
# noch auf 127.0.0.1 (Tunnel), egal was im docker-compose `command:` steht.
#
# Hash EINMALIG erzeugen (im laufenden Dashboard-Container, NICHT das
# Klartext-Passwort committen oder in .env schreiben — nur den Hash):
# docker exec -it hermes-agent-dashboard python -c \
# "from plugins.dashboard_auth.basic import hash_password; print(hash_password('DEIN-PASSWORT'))"
# Ergebnis nach .env als HERMES_DASHBOARD_PASSWORD_HASH eintragen.
#
# ${HERMES_DASHBOARD_USER} / ${HERMES_DASHBOARD_PASSWORD_HASH} werden wie
# oben von Hermes selbst aus den Container-Env-Vars expandiert.
dashboard:
basic_auth:
username: "${HERMES_DASHBOARD_USER}"
password_hash: "${HERMES_DASHBOARD_PASSWORD_HASH}"