Docker Deployment
KalamDB publishes jamals86/kalamdb:latest on Docker Hub. The image includes kalamdb-server, kalam-cli, and a kalam symlink. The server listens on port 2900 inside the container.
Note: Some older Docker Hub overview text references port
8080or thekalamstackGitHub org. The commands below match the current image. Canonical Hub readme source:docker/REPO-README.mdin the KalamDB repo.
Quick start — copy-paste
Run a single-node server on host port 2900, bootstrap auth, and log in:
Save the access_token from the login response.
Verify from the host with auth/status (recommended). The /v1/api/healthcheck endpoint is localhost-only when reached through Docker port publishing — use this from inside the container instead:
Admin UI: http://127.0.0.1:2900/ui — log in as admin / AdminPass123!.
Useful environment variables for local Docker runs:
| Variable | Purpose |
|---|---|
KALAMDB_SERVER_HOST | Bind address inside the container — use 0.0.0.0 when publishing ports |
KALAMDB_JWT_SECRET | JWT signing secret — use at least 32 characters in shared environments |
KALAMDB_ALLOW_REMOTE_SETUP | Allow first-time auth setup from the host when running in Docker |
KALAMDB_SECURITY_CORS_ALLOWED_ORIGINS | CORS origins for the Admin UI (compose files default to * for local demos) |
Avoid KALAMDB_ROOT_PASSWORD for first-time Docker setup on the host: it can mark the server as configured while host login still fails. Use POST /v1/api/auth/setup instead (as in the quick start above).
Single node with Docker Compose
Download the compose file, create a compatible server.toml (the checked-in docker/run/single/server.toml in the KalamDB repo is missing required sections for current server builds), then start:
By default the compose file maps ${KALAMDB_PORT:-8088}:2900. Setting KALAMDB_PORT=2900 publishes the API at http://127.0.0.1:2900.
Bootstrap and verify:
Friendly alias for the compose file only: kalamdb.org/docker-compose.yml redirects to the GitHub source. You still need a compatible server.toml beside it.
3-node cluster
Default host ports:
| Node | HTTP API | Raft gRPC |
|---|---|---|
| node 1 | 8081 | 9091 |
| node 2 | 8082 | 9092 |
| node 3 | 8083 | 9093 |
Verify node 1 from the host:
Windows PowerShell
docker run with bootstrap:
Compose (after creating docker-compose.yml and the server.toml from the single-node section above):
CLI inside the container
The image ships with kalam and kalam-cli:
CLI state defaults to /data/.kalam inside the container so credentials persist with the /data volume.
Persistence and cleanup
Data is stored under /data in the container. The quick-start docker run command uses the named volume kalamdb_data.
Notes
- Keep
KALAMDB_JWT_SECRETnon-default in shared environments. - For first login/setup in Docker, review Authentication & Bootstrap.
- For OIDC issuer trust, review OIDC & Issuer Trust.
- Official image: jamals86/kalamdb on Docker Hub