2026-06-04 fix hermes-docker-kraken: runs via compose, not docker run

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Alexey Martemyanov
2026-06-04 15:22:59 +06:00
co-authored by Cursor
parent 472d311834
commit aab5aa46a7
+69 -14
View File
@@ -1,7 +1,7 @@
---
title: Hermes Docker on Kraken
created: '2026-05-23'
updated: '2026-05-29'
updated: '2026-06-04'
type: tech
namespace: personal
tags: [hermes, docker, kraken, infra, how-to]
@@ -15,23 +15,78 @@ related:
## Key Rule
Hermes runs via **`docker run`**, NOT `docker compose`. No compose file.
Hermes runs via **`docker compose`** from the `hermes-build/` directory.
## Launch Pattern
## Directory Layout (on Kraken)
```bash
docker run -d \
--name hermes \
--restart unless-stopped \
-v ~/.hermes:/root/.hermes \
... \
hermes-image:tag
```
/srv/.../docker/
├── hermes-build/ ← build + run from here
│ ├── Dockerfile ← clones upstream NousResearch/hermes-agent
│ ├── docker-compose.yml ← canonical compose file
│ ├── config.yaml ← unused at build time (runtime config is in hermes/config/)
│ └── .env ← all secrets/API keys (sourced by compose)
└── hermes/
└── config/ ← mounted as /opt/data (HERMES_HOME) inside container
```
(Add actual flags from the running container: `docker inspect hermes`)
## Compose File (`hermes-build/docker-compose.yml`)
```yaml
services:
kraken:
build:
context: .
dockerfile: Dockerfile
image: hermes-kraken:latest
container_name: hermes-kraken
stdin_open: true
tty: true
restart: unless-stopped
volumes:
- /srv/.../docker/hermes/config:/opt/data
- /home/kraken/obsidian:/vault:rw
environment:
- HERMES_ALLOW_ROOT_GATEWAY=1
env_file:
- .env
command: gateway
network_mode: host
```
## Managing the Container
```bash
cd /srv/dev-disk-by-uuid-49e8f586-3839-4c5d-a1e1-58bfc3579ade/docker/hermes-build
docker compose up -d # start
docker compose down # stop
docker compose pull # pull new image (if from registry)
docker compose build # rebuild image from Dockerfile
docker compose restart # restart
docker compose logs -f # follow logs
```
## Image
Built locally from `Dockerfile` — clones **upstream** `NousResearch/hermes-agent`
(`--depth=1` from `main`). Not a custom fork. To update Hermes:
```bash
cd /srv/.../docker/hermes-build
docker compose build --no-cache
docker compose up -d
```
## Volumes
| Host path | Container path | Purpose |
|-----------|----------------|---------|
| `hermes/config/` | `/opt/data` | `HERMES_HOME` — config, sessions, skills, memory |
| `/home/kraken/obsidian` | `/vault` | Obsidian vault read/write access |
## Notes
- Using `docker run` keeps restart behavior explicit
- No compose means no accidental `docker compose down` wipes it
- Config/memory volume: `~/.hermes` on Kraken host
- `network_mode: host` — port 8642 is directly on the Kraken host, no port mapping needed
- `HERMES_ALLOW_ROOT_GATEWAY=1` — required since container runs as root
- All secrets in `hermes-build/.env` (not committed)