For the packaged bundle
- Docker and Docker Compose for the packaged bundle
- Or Kubernetes plus Helm for cluster installs
This guide covers the serious self-hosted rollout path. Start with Compose when you want the smallest explicit baseline. Use Kubernetes or Helm when the cluster is already the requirement.
| Shape | Best fit | What it buys you |
|---|---|---|
| Compose | The smallest explicit self-hosted baseline | A packaged split-role stack with smokeable local ops wrappers and fewer moving parts than a cluster rollout |
| Raw Kubernetes manifests | Teams that want the plain cluster baseline without Helm abstraction | Direct control over the manifests and kustomize path |
| Helm | Teams whose config, secrets, and release workflow already live in Helm | Chart-based configuration that fits an existing cluster deployment model |
cd deploy/compose cp .env.example .env
docker compose up -d docker compose ps docker compose logs -f urgentry-api
bash deploy/compose/smoke.sh up
printf '%s\n' \ 'COMPOSE_PROFILES=columnar' \ 'URGENTRY_BUILD_TAGS=netgo,osusergo,clickhouse' \ 'CLICKHOUSE_PASSWORD=change-me-columnar' >> .env docker compose up -d --build
urgentry:latest image once per run./urgentry self-hosted preflight --control-dsn "$URGENTRY_CONTROL_DATABASE_URL" --telemetry-dsn "$URGENTRY_TELEMETRY_DATABASE_URL" ./urgentry self-hosted status --control-dsn "$URGENTRY_CONTROL_DATABASE_URL" --telemetry-dsn "$URGENTRY_TELEMETRY_DATABASE_URL" ./urgentry self-hosted maintenance-status --control-dsn "$URGENTRY_CONTROL_DATABASE_URL"
bash deploy/compose/ops.sh preflight bash deploy/compose/ops.sh status bash deploy/compose/ops.sh maintenance-status
bash deploy/compose/backup.sh /tmp/urgentry-backup bash deploy/compose/restore.sh /tmp/urgentry-backup bash deploy/compose/upgrade.sh
Use the Kubernetes and Helm guide if you are going cluster-first, the HA baseline if you are checking posture, or maintenance mode if you are writing the operator runbook.