Install with Docker Compose¶
Run Deployment Dashboard on any Linux or Windows host with Docker installed. For a zero-config local trial, see the Quickstart. For an overview of deployment shapes and shared prerequisites, see the Install & deploy landing.
1. Get the stack¶
Fetch the compose file and env template โ no clone, images pull from GHCR. Safe to paste as one block:
curl -fsSLO https://raw.githubusercontent.com/kostiantyn-matsebora/deployment-dashboard/main/compose/docker-compose.yaml
curl -fsSLO https://raw.githubusercontent.com/kostiantyn-matsebora/deployment-dashboard/main/compose/.env.example
cp .env.example .env
PowerShell
Replace the trailing \ line-continuations with backticks (`).
Pin a release
Replace main in the URLs with the tag (e.g. .../v0.20.0/compose/...) โ see Pinning a release version.
2. Configure & run¶
Pick the tab for your profile, set the listed variables in .env, then run its command.
โ ๏ธ Set every variable in the table before starting. Compose substitutes empty strings for missing values, so the containers crash-loop instead of failing fast.
-
Single host ยท bundled PostgreSQL
The simplest production shape โ the stack owns its database in a Docker volume.
Variable Set to API_KEYWrite-endpoint secret ( X-Api-Key)POSTGRES_USERBundled DB user POSTGRES_PASSWORDBundled DB password
Then point your CI/CD at http://<host>:8080/api/deployments โ see Integrate your CI/CD.
-
App tier ยท external managed PostgreSQL
Connects to an external managed PostgreSQL (e.g. Azure Database for PostgreSQL) and scales the app tier behind the gateway.
Variable Set to API_KEYWrite-endpoint secret ( X-Api-Key)POSTGRES_USERExternal DB user POSTGRES_PASSWORDExternal DB password POSTGRES_HOSTExternal DB hostname
Then point your CI/CD at http://<host>:8080/api/deployments โ see Integrate your CI/CD.
-
full + Fetcher ยท pull-mode ingestion
- How โ polls the GitHub Deployments API and posts to the dashboard's internal ingest. Outbound-only โ nothing accepts inbound traffic.
- When โ you can't add a push step to pipelines, or the network forbids inbound WAN traffic.
Variable Set to API_KEYWrite-endpoint secret ( X-Api-Key)POSTGRES_USERBundled DB user POSTGRES_PASSWORDBundled DB password GITHUB_TOKENRead-only GitHub PAT โ see Configuration โ Fetcher โ GitHub token permissions GITHUB_REPOSowner/repo,owner/repoto poll
First start runs a bounded backfill, so the matrix fills after a poll cycle or two. Other fetcher options have sane defaults โ see Configuration โ Fetcher.
GitHub token scope
Read-only โ the Fetcher never writes. Classic vs fine-grained PAT permissions are documented once in Configuration โ Fetcher โ GitHub token permissions.
-
standalone + Fetcher ยท pull-mode ingestion
- How โ polls the GitHub Deployments API and posts to the dashboard's internal ingest. Outbound-only โ nothing accepts inbound traffic.
- When โ you can't add a push step to pipelines, or the network forbids inbound WAN traffic.
Variable Set to API_KEYWrite-endpoint secret ( X-Api-Key)POSTGRES_USERExternal DB user POSTGRES_PASSWORDExternal DB password POSTGRES_HOSTExternal DB hostname GITHUB_TOKENRead-only GitHub PAT โ see Configuration โ Fetcher โ GitHub token permissions GITHUB_REPOSowner/repo,owner/repoto poll
First start runs a bounded backfill, so the matrix fills after a poll cycle or two. Other fetcher options have sane defaults โ see Configuration โ Fetcher.
GitHub token scope
Read-only โ the Fetcher never writes. Classic vs fine-grained PAT permissions are documented once in Configuration โ Fetcher โ GitHub token permissions.
Running from local source¶
Building from a clone is a contributor workflow โ see CONTRIBUTING.md โ Local setup.
Pinning a release version¶
By default the stack pulls latest (tracks main). For a reproducible deploy, pin in .env:
No leading v
The git tag v0.20.0 publishes images as 0.20.0. Each GitHub Release also attaches a compose bundle (deployment-dashboard-compose-vX.Y.Z.zip). Full process: RELEASING.md.