VPS
Self-host Composery on your own Linux server with Docker Compose.
Run Composery on any Docker-capable Linux server - Hetzner (cheapest), a DigitalOcean Droplet (the most common n8n choice), Hostinger, Vultr, Contabo, Linode, or your own box. Install Docker, then choose two things: the init system, and whether Composery owns its TLS edge.
For a dashboard over Docker instead of raw Compose (Coolify, Dokploy, CapRover) or a fully managed VM (Elestio), see Other PaaS & self-hosted platforms.
- Init -
systemdruns as PID 1 (the closest shape to Composery Cloud; needs a privileged container with host cgroup access) orsupervisor(works on any host, including rootless or locked-down ones). Selected byCOMPOSERY_INITincompose.yml. - TLS - bundle Caddy for automatic HTTPS when Composery owns the domain, or run with no proxy when your own reverse proxy or a platform terminates TLS.
That gives four recipes:
| Recipe | When |
|---|---|
| systemd + Caddy | Recommended VPS - Hetzner/DigitalOcean-style host with a domain. Cloud parity. |
| systemd, no proxy | Privileged host where your own proxy terminates TLS. |
| supervisor + Caddy | Locked-down or rootless host with a domain. |
| supervisor, no proxy | Quick trial, or behind your own proxy. Also the docker run quickstart. |
If unsure: a VPS with a domain wants a Caddy variant; use systemd when the host allows privileged containers and host cgroups, otherwise supervisor.
One-paste install (cloud-init)
To skip the SSH steps entirely, paste
templates/user-data/user-data.yaml
into the server's user data field when you create it (DigitalOcean, Hetzner, Vultr,
Linode, ...). Point DNS at the server and set your domain in the file first; the server
boots with Composery behind Caddy over HTTPS. It installs Docker and runs the
supervisor + Caddy recipe on first boot.
Deploy (Caddy variants)
- Point DNS
A/AAAArecords at the server; open inbound TCP80and443. - Install Docker Compose.
- Copy the recipe folder, then edit
Caddyfile(your domain) and, optionally,composery.env(pre-register a password). docker compose up -d.
Open https://<your-domain>/ide/.
Deploy (no-proxy variants)
docker compose up -dThis serves plaintext HTTP on 8080. Do not expose it to the public internet without TLS
in front - either put a reverse proxy that terminates HTTPS ahead of 8080, or bind it to
localhost only ("127.0.0.1:8080:8080" in compose.yml) and route from your proxy.
For a one-off trial without Compose:
docker run -d --name composery -p 8080:8080 -v composery_data:/data \
ghcr.io/sloikodavid/composery:latestNotes
- systemd variants require a privileged container with host cgroup access.
- State is stored in the
composery_dataDocker volume; Caddy certificate state incaddy_data. - Register the initial password in the browser on first visit, or set
COMPOSERY_PASSWORD/COMPOSERY_HASHED_PASSWORDincomposery.env(single-quote values containing$). See Configuration. - Upgrade with
docker compose pull && docker compose up -d. Back upcomposery_databefore major upgrades.