Doku: Dollarzeichen-Falle beim Passwort-Hash in .env dokumentieren

docker-compose interpretiert rohe $-Zeichen im pbkdf2-Hash (.env) selbst
als Variablen-Referenzen und ersetzt sie stillschweigend durch Leerstring
(sichtbar als "WARN variable is not set"). Ergebnis: verstümmelter Hash,
Dashboard bleibt trotz "richtig" eingetragener Werte bei "no auth
providers are registered" haengen. Fix: jedes $ im Hash durch $$ ersetzen.
This commit is contained in:
ARIA
2026-07-19 21:52:37 +00:00
parent 68bdc0968f
commit 8b9aa73f98
2 changed files with 28 additions and 2 deletions
+14
View File
@@ -30,6 +30,20 @@ HERMES_GID=10000
# der braucht HERMES_DASHBOARD_PASSWORD_HASH schon zum Hochfahren (Henne-Ei- # der braucht HERMES_DASHBOARD_PASSWORD_HASH schon zum Hochfahren (Henne-Ei-
# Problem, siehe docker-compose.yml), "hermes-agent" laeuft auch ohne. # Problem, siehe docker-compose.yml), "hermes-agent" laeuft auch ohne.
# Den Output (nicht das Passwort selbst!) hier eintragen. # 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
# 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
# Dashboard startet trotzdem nicht ("no auth providers are registered"),
# obwohl alles "richtig" eingetragen aussieht.
# FIX: jedes einzelne "$" im Hash durch "$$" ersetzen bevor Du ihn hier
# eintraegst, z.B. aus
# pbkdf2:sha256:260000$f2kwriK6aYVRG5$BRps7npu2Tzg...
# wird
# pbkdf2:sha256:260000$$f2kwriK6aYVRG5$$BRps7npu2Tzg...
HERMES_DASHBOARD_USER=admin HERMES_DASHBOARD_USER=admin
HERMES_DASHBOARD_PASSWORD_HASH= HERMES_DASHBOARD_PASSWORD_HASH=
+14 -2
View File
@@ -98,8 +98,20 @@ aussen — kein anderer Rechner kommt mehr direkt ran.
docker exec -it hermes-agent python -c \ docker exec -it hermes-agent python -c \
"from plugins.dashboard_auth.basic import hash_password; print(hash_password('DEIN-PASSWORT'))" "from plugins.dashboard_auth.basic import hash_password; print(hash_password('DEIN-PASSWORT'))"
``` ```
Output (den Hash, nicht das Passwort) in `.env` bei `HERMES_DASHBOARD_PASSWORD_HASH` **ACHTUNG DOLLARZEICHEN-FALLE:** der Hash hat das Format
eintragen, `HERMES_DASHBOARD_USER` nach Belieben setzen (Default `admin`). `pbkdf2:sha256:<n>$<salt>$<hash>` — 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`). Ohne Escaping kommt im Container ein
verstuemmelter Hash an und das Dashboard bleibt bei "no auth providers
are registered" haengen, obwohl alles "richtig" eingetragen aussieht.
**Jedes `$` im Hash durch `$$` ersetzen**, bevor Du ihn in `.env`
eintraegst (z.B. `260000$abc$def` → `260000$$abc$$def`).
Output (den escapeten Hash, nicht das Passwort) in `.env` bei
`HERMES_DASHBOARD_PASSWORD_HASH` eintragen, `HERMES_DASHBOARD_USER`
nach Belieben setzen (Default `admin`).
Der `dashboard.basic_auth`-Block dazu liegt schon fertig in Der `dashboard.basic_auth`-Block dazu liegt schon fertig in
`hermes-agent-config/config.yaml.example` (Platzhalter, die Hermes selbst `hermes-agent-config/config.yaml.example` (Platzhalter, die Hermes selbst
aus den Container-Env-Vars expandiert — kein manuelles Ausfuellen noetig, aus den Container-Env-Vars expandiert — kein manuelles Ausfuellen noetig,