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, and the application moves to a server Coolify does not run on. The half day to a day here is that move, not Hetscale.
- Prerequisite work
- move DB out, app off the Coolify host, load balancer, proxy setting
- Time to set up
- half day to a day
- Adapter
- Snapshot of the seed Coolify deploys to
- Fit
- 3 → 7/103 today, 7 once the prerequisite work is done
Prerequisites, time and fit are this case's row in the onboarding cases table. 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 node group. Put them on a separate server or a managed service. Until then the fit is 3 and the group stays fixed.
- 02Move the app off the Coolify host
Coolify must not run on the server Hetscale copies: a copy would boot a second Coolify. Add a fresh server to Coolify and deploy the application there; it becomes the seed, and this server stays the Coolify host. No registry image is needed: the seed’s snapshot carries what Coolify built.
- 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.
- 04Connect read-only and answer “Coolify”
Start the 14-day Observe trial with a read-only Hetzner token and answer “Coolify” to how you deploy. Hetscale asks for no Coolify token and calls no Coolify API.
- 05Take release v1
When you take the first release you also confirm that Coolify runs on another server. Hetscale snapshots the seed; every new server boots from the snapshot with one fixed first-boot step that removes Coolify’s Sentinel container, so Coolify never mistakes a copy for the seed. The snapshot holds the .env files Coolify writes and stays in your Hetzner project.
- 06Rehearse, go Live, release after each deploy
One Rehearsal creates a node from the snapshot, health-checks, drains and deletes it while you watch; then Live with minimum 2. After each Coolify deployment, take a new release and replace the older servers.
FAQ for this case
Why is the fit only 3 today?
Because the database on the box means the box cannot be copied or removed. Once state is external and the app runs on a server Coolify does not run on, the same setup is a 7.
Does a new node restart my other nodes?
No. A new node boots from the snapshot of your seed, and Coolify deploys nothing to it, so the servers Coolify runs are not touched. Your own Coolify deployments update the seed as they do today; the copies change only when you take a new release and replace them.
How do I deploy a new version?
Deploy in Coolify as you do today. When the deployment has finished, take a new release on the group’s Deployment tab, then replace the older servers. New servers boot from the current release, never from Coolify.