Docker packaging layer for bitvora/haven, a personal Nostr relay with private, chat, outbox, and inbox relay support.
haven-docker/
├── AGENTS.md # You are here
├── Dockerfile # Multi-stage build: Go builder → Debian slim + Tor
├── compose.yml # Single-service Docker Compose config
├── start.sh # Entrypoint — optional Tor, then run Haven
├── .env.example # All configuration (99 vars, env-only config)
├── relays_blastr.example.json # Seed relay lists for blastr
├── relays_import.example.json # Seed relay lists for import
├── Makefile # Dev, test, and release targets
├── data/ # Runtime data (mounted volumes)
│ ├── blossom/ # Blossom media storage
│ ├── db/ # Database (badger or lmdb)
│ └── tor/ # Tor hidden service keys
└── .github/workflows/
└── docker-publish.yml # CI: build, push to GHCR, cosign
- Upstream: Haven source is bitvora/haven. This repo only packages it — do not modify Haven's Go code here.
- Config model: All configuration flows through
.env→ container env vars. No config files inside the image. - Single container: One service in
compose.yml. Tor runs inside the same container when enabled. - Version pinning: The Haven version is set via
ARG TAG=andARG COMMIT=in theDockerfile.
| Skill | Path | Purpose |
|---|---|---|
| docker-packaging | .agent/skills/docker-packaging/ |
Dockerfile, compose, builds, volumes |
| haven-config | .agent/skills/haven-config/ |
.env variables, relay JSONs, tuning |
| ci-cd | .agent/skills/ci-cd/ |
GitHub Actions, Makefile release, signing |
| tor-integration | .agent/skills/tor-integration/ |
Tor hidden service setup |