Docker + Hermes Agent: Two Ways to Play
Event Hooks — Auto-Trigger at Key Moments — easy-to-understand guide based on official docs (updated 2026-08-09)
Docker + Hermes Agent: Zwei Wege, es zu nutzen
Falls du dich je gefragt hast, wie Docker in das Hermes-Agent-Bild passt, bist du hier genau richtig. Es gibt tatsächlich zwei verschiedene Arten, wie diese beiden zusammenspielen können, und es lohnt sich, den Unterschied zu kennen, bevor du docker run tippst.
Die zwei Docker-Modi
- Hermes IN Docker ausführen — der Agent selbst lebt in einem Container. Das ist der Hauptfokus dieses Leitfadens.
- Docker als Terminal-Backend — Hermes läuft auf deinem Host-Rechner, aber jeder Befehl, den es ausführt, passiert in einer einzigen, persistenten Docker-Sandbox. Diese Sandbox überlebt Tool-Aufrufe,
/newund sogar Subagenten, solange der Hermes-Prozess läuft.
Dieser Artikel behandelt Option 1. Das Wichtigste, was du wissen musst: Alle deine Daten (Konfiguration, API-Schlüssel, Sitzungen, Fähigkeiten, Erinnerungen) leben in einem einzigen Verzeichnis auf deinem Host, das im Container unter /opt/data eingehängt ist. Das Image selbst ist zustandslos, du kannst also jederzeit eine neue Version ziehen, ohne dein Setup zu verlieren.
Schnellstart: Ersteinrichtung
Wenn das dein erstes Mal ist, erstelle ein Datenverzeichnis und starte den Container interaktiv, um den Setup-Assistenten auszuführen:
mkdir -p ~/.hermes
docker run -it --rm \
-v ~/.hermes:/opt/data \
nousresearch/hermes-agent setup
Das führt dich durch den Assistenten, der nach deinen API-Schlüsseln fragt und sie in ~/.hermes/.env schreibt. Das musst du nur einmal machen. Nebenbei ist das ein guter Zeitpunkt, ein Chat-System (Telegram, Discord usw.) einzurichten, damit dein Gateway einen Ort zum Reden hat.
⚠️ Ein Wort der Vorsicht: Vermeide browserbasierte VPS-Konsolen für diese Installationsbefehle. Einige Anbieter (wie Hetzner) verstümmeln Sonderzeichen —
:kann als;ankommen,@wird falsch dargestellt, und eingefügte API-Schlüssel können stillschweigend korrumpiert werden. Verbinde dich immer über SSH, um Befehle kopier-sicher einzugeben. Wenn du die Browser-Konsole verwenden musst, tippe die Befehle manuell und überprüfe jedes:,@,=und/doppelt.
Profi-Tipp: Führe im Container einmal hermes setup --portal aus — das Refresh-Token bleibt in deinem eingehängten ~/.hermes-Volume erhalten.
Im Gateway-Modus ausführen
Nach der Konfiguration starte den Container im Hintergrund als persistentes Gateway:
docker run -d \
--name hermes \
--restart unless-stopped \
-v ~/.hermes:/opt/data \
-p 8642:8642 \
nousresearch/hermes-agent gateway run
Port 8642 macht den OpenAI-kompatiblen API-Server und den Health-Endpoint des Gateways zugänglich. Er ist optional, wenn du nur Chat-Plattformen nutzt, aber erforderlich, wenn das Dashboard oder externe Tools das Gateway erreichen sollen.
Was ist neu: Überwachtes Gateway
Hier ist eine große Änderung: Innerhalb des offiziellen Docker-Images ist gateway run jetzt automatisch von s6-overlay überwacht. Wenn das Gateway abstürzt, startet es innerhalb von Sekunden neu, ohne den Container zu verlieren. Das Dashboard (wenn aktiviert) wird ebenfalls mit überwacht.
Du siehst eine einzeilige Brotkrume in docker logs, die das Upgrade bestätigt. Um abzulehnen und das alte Verhalten zu erhalten (Container-Exit = Gateway-Exit), übergib --no-supervise oder setze HERMES_GATEWAY_NO_SUPERVISE=1. Das ist nützlich für CI-Smoke-Tests; für die Produktion ist der überwachte Standard strikt besser.
Harte Stopps in der Tool-Schleife
Eine wichtige Einstellung für unbeaufsichtigte Gateways: tool_loop_guardrails.hard_stop_enabled ist standardmäßig false. Das ist in Ordnung für interaktive Sitzungen, in denen ein Mensch Warnungen sehen kann. Aber in unbeaufsichtigten Bereitstellungen könnten Warnungen allein einen Agenten, der in einer Schleife feststeckt, nicht stoppen. Wenn du ein Schutzschalter-Verhalten möchtest, aktiviere es in der config.yaml deines Profils:
tool_loop_guardrails:
hard_stop_enabled: true
hard_stop_after:
exact_failure: 5
idempotent_no_progress: 5
Den API-Server freigeben
Der API-Server ist durch API_SERVER_ENABLED=true gesteuert. Um ihn über 127.0.0.1 im Container hinaus freizugeben, setze auch API_SERVER_HOST=0.0.0.0 und einen API_SERVER_KEY (mindestens 8 Zeichen — generiere einen mit openssl rand -hex 32):
docker run -d \
--name hermes \
--restart unless-stopped \
-v ~/.hermes:/opt/data \
-p 8642:8642 \
-e API_SERVER_ENABLED=true \
-e API_SERVER_HOST=0.0.0.0 \
-e API_SERVER_KEY="$(openssl rand -hex 32)" \
-e API_SERVER_CORS_ORIGINS='*' \
nousresearch/hermes-agent gateway run
Sicherheitshinweis: Einen Port auf einer internetzugänglichen Maschine zu öffnen, ist ein Risiko. Tu es nicht, wenn du die Konsequenzen nicht vollständig verstehst.
Das Dashboard ausführen
Das integrierte Web-Dashboard läuft als überwachter s6-rc-Dienst neben dem Gateway im selben Container. Setze einfach HERMES_DASHBOARD=1:
docker run -d \
--name hermes \
--restart unless-stopped \
-v ~/.hermes:/opt/data \
-p 8642:8642 \
-p 9119:9119 \
-e HERMES_DASHBOARD=1 \
nousresearch/hermes-agent gateway run
Wenn das Dashboard abstürzt, startet s6-supervise es nach einer kurzen Backoff-Zeit automatisch neu. Seine Ausgabe geht an docker logs <container>.
Wohin die Logs gehen
Für die vollständige Routing-Karte (pro-Profile-Gateways, Dashboard, Boot-Reconciler und containerweite docker logs) schau in den entsprechenden Abschnitt der Doku. Die Kurzfassung: Alles landet letztendlich in docker logs, aber mit klaren Präfixen, damit du weißt, was was ist.
Zusammenfassung
Docker bietet dir eine saubere, aktualisierbare Möglichkeit, Hermes Agent auszuführen. Der Container ist zustandslos, deine Daten leben sicher auf dem Host, und die neue s6-Überwachung bedeutet, dass dein Gateway auch bei einem Absturz in Betrieb bleibt. Ob du ein einfaches Setup oder eine volle Dashboard- + API-Server-Kombination betreibst, die obigen Befehle bringen dich in Minuten dorthin.
📖 Offizielle Dokumentation
この記事は Hermes Agent のOffizielle Dokumentationに基づいています:Offizielle Dokumentation › user-guide/features/hooks