Files
hermes-agent/.env.example
T
ARIA 66bcd0dfb1 Dashboard hinter Caddy: TLS (100 Jahre selbstsigniert) + eigene Basic-Auth auf Port 443
Stefans Entscheidung: 0.0.0.0-Bind mit unverschluesseltem Basic-Auth war nur
Testzustand. Jetzt bindet hermes-agent-dashboard wieder auf 127.0.0.1, ein
neuer Caddy-Service (network_mode: host) terminiert TLS auf 443 mit einem
manuell erzeugten selbstsignierten Zertifikat (100 Jahre Laufzeit, kein
Let's-Encrypt-Domain-Zwang) und erzwingt eine zweite, eigene Basic-Auth-Schicht
(bcrypt-Hash in CADDY_BASIC_AUTH_HASH, getrennt von Hermes' pbkdf2-Hash) -
noetig weil Hermes' eigenes Auth-Gate laut Fehlermeldung nur bei 0.0.0.0-Binds
"engagiert". README + .env.example um die Setup-Schritte (Cert-Erzeugung,
Caddy-Hash, $-Escaping-Falle) ergaenzt.
2026-07-19 22:07:17 +00:00

76 lines
4.0 KiB
Bash

# Nach /shared/projects/hermes_agent/.env kopieren und Werte anpassen.
# .env ist in .gitignore und wird NICHT committet.
# Shared Secret zwischen hermes-gateway und Hermes Agent (config.yaml -> api_key).
# Mindestens 32 zufaellige Zeichen, z.B. erzeugen mit:
# openssl rand -hex 32
HERMES_GATEWAY_TOKEN=
# Port auf dem hermes-gateway auf dieser Maschine lauscht. Seit "alles auf
# einer Maschine" nur noch auf 127.0.0.1 gebunden (siehe docker-compose.yml) -
# Hermes Agent selbst (network_mode: host) erreicht das trotzdem ueber
# localhost, kein anderer Rechner kommt mehr direkt ran.
HERMES_GATEWAY_PORT=8447
# UID/GID des Host-Users, dem hermes-data/agent-home gehoeren soll, damit
# Dateien die Hermes im Container schreibt (Sessions, Memory, Config) auf dem
# Host lesbar/schreibbar bleiben. Default 10000 (Hermes' eingebauter Default)
# ist ok wenn Dir das egal ist; setze es sonst auf `id -u`/`id -g` des Users
# der hermes-data/ auf dem Host verwaltet.
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):
# 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
# 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_PASSWORD_HASH=
# Seit 19.07.2026, spaeter Abend: Caddy (Service "caddy" in docker-compose.yml)
# macht TLS-Termination auf Port 443 + eine EIGENE Basic-Auth-Schicht vor dem
# Dashboard (das selbst nur noch auf 127.0.0.1 bindet). Selber HERMES_DASHBOARD_USER
# wie oben, aber ein EIGENER Hash noetig — Caddy will bcrypt, Hermes' Hash ist
# pbkdf2, die Formate sind nicht austauschbar. Erzeugen (einmalig, gleiches
# Klartext-Passwort wie beim Dashboard-Hash oben verwenden, muss aber nicht):
# docker run --rm caddy:2-alpine caddy hash-password --plaintext 'DEIN-PASSWORT'
# Output hier eintragen.
#
# ACHTUNG, GLEICHE DOLLARZEICHEN-FALLE WIE OBEN: ein bcrypt-Hash sieht aus wie
# $2a$14$abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRS
# Docker Compose interpretiert "$xyz" in .env als Variablen-Referenz und
# ersetzt still durch Leerstring ("WARN ... variable is not set"). FIX: jedes
# einzelne "$" durch "$$" ersetzen, z.B.
# $$2a$$14$$abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRS
# Am schnellsten mit demselben sed-Trick wie beim Dashboard-Hash:
# sed -i '/^CADDY_BASIC_AUTH_HASH=/ s/\$/$$/g' .env
CADDY_BASIC_AUTH_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
# wie gpt_mobile/Maid/OpenWebUI direkt gegen Hermes sprechen zu lassen, statt
# nur ueber CLI/Dashboard. Andere Richtung als HERMES_GATEWAY_TOKEN oben!
# Mindestens 32 zufaellige Zeichen, z.B. openssl rand -hex 32.
# API_SERVER_KEY=