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.
Prerequisites
Section titled “Prerequisites”- 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.)
Run the installer
Section titled “Run the installer”docker run --rm -p 80:80 -p 443:443 \ -v /data/holden:/output \ benjick/holden-installerThe 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.
What the wizard covers
Section titled “What the wizard covers”-
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.
-
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.
-
Credentials — API key and webhook secret are auto-generated. You can customize them if needed.
-
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.
-
Review — Confirm all settings. Advanced options (data directory, poll interval, Traefik network name, etc.) are available here.
-
Generate — The installer writes a
docker-compose.ymlto the output directory (/data/holdenby default).
Start Holden
Section titled “Start Holden”Once the wizard completes, start Holden with the generated file:
cd /data/holden && docker compose up -dFrom here, follow the Deploying Apps guide to add your first app.