Skip to content

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_KEY Write-endpoint secret (X-Api-Key)
    POSTGRES_USER Bundled DB user
    POSTGRES_PASSWORD Bundled DB password
docker compose --profile full up -d

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_KEY Write-endpoint secret (X-Api-Key)
    POSTGRES_USER External DB user
    POSTGRES_PASSWORD External DB password
    POSTGRES_HOST External DB hostname
docker compose --profile standalone up -d

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_KEY Write-endpoint secret (X-Api-Key)
    POSTGRES_USER Bundled DB user
    POSTGRES_PASSWORD Bundled DB password
    GITHUB_TOKEN Read-only GitHub PAT โ€” see Configuration โ†’ Fetcher โ†’ GitHub token permissions
    GITHUB_REPOS owner/repo,owner/repo to 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.

docker compose --profile full-pull up -d
  • 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_KEY Write-endpoint secret (X-Api-Key)
    POSTGRES_USER External DB user
    POSTGRES_PASSWORD External DB password
    POSTGRES_HOST External DB hostname
    GITHUB_TOKEN Read-only GitHub PAT โ€” see Configuration โ†’ Fetcher โ†’ GitHub token permissions
    GITHUB_REPOS owner/repo,owner/repo to 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.

docker compose --profile standalone-pull up -d

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:

DASHBOARD_VERSION=0.20.0

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.