Docker Compose on a single server

The largest audience on Hetzner runs plain Docker or Docker Compose on one server, and most of it has no load balancer. That is the whole prerequisite work here: a Hetzner load balancer in front of the box, TLS moved to it, DNS pointed at it. Hetscale’s own setup takes about 15 minutes in every case; the rest of the one to two hours is on the Hetzner side.

Prerequisite work
Hetzner load balancer (€7.49 per month, Hetzner list price, September 2026), TLS to it, DNS to it
Time to set up
1–2 h
Adapter
Snapshot
Fit
6/10

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

  1. 01
    Check what lives on the disk

    The database is already external. Make sure uploads, sessions and caches are too: anything on the node’s disk is lost when a node is removed. If something still lives there, move it first; until then the group stays at a fixed size.

  2. 02
    Add a Hetzner load balancer

    Create one (€7.49 per month, Hetzner list price, September 2026) with a health check on your app’s health endpoint and put the existing server behind it. Hetscale reads this check as the readiness signal.

  3. 03
    Move TLS to the load balancer

    Terminate TLS at the load balancer with a managed certificate and let the box serve plain HTTP behind it. Per-node certificates break as soon as a second node exists.

  4. 04
    Point DNS at the load balancer

    Traffic now enters through the load balancer; your server is a target. Nothing else changes.

  5. 05
    Connect read-only

    Start the 14-day Observe trial. The day-0 report tells you whether a group of two to four nodes fits your load, as a range.

  6. 06
    Snapshot the seed and run one Rehearsal

    Hetscale snapshots your server as release v1, creates one node from it, waits for the load balancer health check, drains and deletes it while you watch. The snapshot stays in your project; it contains everything on the disk, including .env files.

  7. 07
    Go Live with a floor of 2

    Set minimum 2, maximum what the report suggests. Two nodes means one can fail while the other serves.

FAQ for this case

Do I have to leave Docker Compose?

No. Each node boots from the snapshot and your restart policies bring the containers up. Hetscale installs nothing on the node; its only first-boot step removes Coolify’s monitoring container where one exists, and does nothing otherwise.

How do I deploy a new version?

Deploy to a designated server as you do today and take a new snapshot on request, or let your CI update the release pointer. New nodes boot from the current release; running nodes keep theirs until they leave or you replace them one at a time from the group’s Servers page.

Does the single server keep running during setup?

Yes. Nothing changes until you move a group out of Observe, and even then your existing server is never shut down or deleted: Hetscale only deletes servers it created, and yours only if you later promote it to a managed member.

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

Connect read-only