Skip to main content
docker/docker-compose.yml runs the ingest server in a container against the local backend by default. It needs no Sia node, no wallet, and nothing beyond Docker itself.

The local-backend path

The encryption key and archived data live in the obsidianlog-data named volume. They survive docker compose restart/down (without -v), so you only run step 2 once. The key lands in that volume rather than a host keychain because a bare container has no keychain daemon to talk to. The same file-based fallback described in Security Model kicks in automatically. To ship real logs instead of the curl smoke test, see Sending Logs with Vector.

Optional: self-hosted indexd

The sia Compose profile adds indexd + the PostgreSQL database it requires, matching indexd’s own official example. It’s off by default. docker compose up alone never starts it:
indexd itself needs its own one-time setup first (indexd’s own documented flow, not an ObsidianLog step):
Then run obsidianlog init interactively, choose the Sia backend, and enter http://localhost:9982 at the indexer URL prompt in place of the https://sia.storage default. Onboarding happens inline, no separate command needed. See Bring Your Own Indexer for when this is the right choice.