Skip to content

Installer

The Holden installer is a web-based setup wizard that runs on your server. It walks you through configuration and generates a docker-compose.yml with everything you need — Holden, Traefik, TLS certificates, and all environment variables.

  • A server with Docker installed
  • Ports 80 and 443 open
  • A domain pointing at your server (optional — Holden can use sslip.io for instant DNS)
  • An S3-compatible bucket for offsite backups (optional — AWS S3, Backblaze B2, MinIO, etc.)
Terminal window
docker run --rm -p 80:80 -p 443:443 \
-e [email protected] \ # for Let's Encrypt certificates
-v /data/holden:/output \
benjick/holden-installer

The installer obtains a temporary TLS certificate and prints a one-time URL to the console:

Open: https://setup.1-2-3-4.sslip.io/?token=abc123...

Open that URL in your browser to start the wizard.

  1. Domain — Enter the domain Holden will be accessible on. The installer validates DNS and pre-fills a sslip.io fallback using your server’s public IP.

  2. GitHub — Optionally provide a GitHub username and Personal Access Token for private repo access and GHCR image pulls. Can be skipped if everything is public.

  3. Credentials — API key and webhook secret are auto-generated. You can customize them if needed.

  4. Backups — Configure the maintenance schedule and local backup retention. Optionally set up offsite backups to an S3-compatible bucket (AWS S3, Backblaze B2, MinIO, etc.) via Restic — encrypted and deduplicated.

  5. Review — Confirm all settings. Advanced options (data directory, poll interval, Traefik network name, etc.) are available here.

  6. Generate — The installer writes a docker-compose.yml to the output directory (/data/holden by default).

Once the wizard completes, start Holden with the generated file:

Terminal window
cd /data/holden && docker compose up -d

From here, follow the Deploying Apps guide to add your first app.