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

  1. 01
    Move 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.

  2. 02
    Deploy 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.

  3. 03
    Add 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.

  4. 04
    Keep 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.

  5. 05
    Connect 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.

  6. 06
    Observe, 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.

See what Hetscale would have done with your real data — connect read-only, get your report in minutes.

Connect read-only