Coolify on a single server, app and database together
Most Coolify installs are one server with everything on it. That is fine until the app has to run on two servers; then the database, the uploads and the TLS termination have to move. The half day to a day here is that move, not Hetscale.
- Prerequisite work
- move DB out, registry image, LB, proxy setting
- Time to set up
- half day to a day
- Adapter
- Coolify
- Fit
- 3 → 7/103 today, 7 once the prerequisite work is done
Prerequisites, time and fit are the ADR-0028 row for this case. Hetscale's own setup is about 15 minutes in every case; the rest is work on your side.
Steps
- 01Move the database out
The database, sessions and uploads cannot live on a node of the scaling group. Put them on a separate server or a managed service. Until then the fit is 3 and the group stays fixed.
- 02Deploy from a registry image
The Coolify adapter requires the application to be deployed from a registry image; Docker Compose applications and per-node persistent storage are refused in preflight.
- 03Add a load balancer and set the proxy
Terminate TLS at a Hetzner load balancer; per-node Traefik ACME breaks behind one. Set the Coolify proxy to “None” or an HTTP FQDN.
- 04Keep Coolify off the group
Coolify itself must not run on a node of the group. This server stays the Coolify host; the nodes are separate servers it deploys to.
- 05Connect Coolify and Hetzner
A Coolify API token with read, write and deploy scopes only (never root), plus the Hetzner token. Hetscale creates each node with Coolify’s SSH key, registers and validates it in Coolify, then triggers the deploy.
- 06Observe, rehearse, go Live
The read-only trial first; then one Rehearsal that creates, deploys, health-checks, drains and deletes a node while you watch; then Live with minimum 2.
FAQ for this case
Why is the fit only 3 today?
Because the database on the box means the box cannot be cloned or removed. Once state is external and the app deploys from an image, the same setup is the multi-server case at fit 7.
Does a new node restart my other nodes?
In fleet mode, the day-1 mechanism, the app-wide deploy restarts the whole fleet. Native per-node deploys arrive with the upstream Coolify change once it is released; Hetscale detects the version.