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 LB (€7.49/mo), TLS to LB, DNS to LB
Time to set up
1–2 h
Adapter
Snapshot
Fit
6/10

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
    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) 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 runs nothing inside the node.

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; a rolling replace swaps the existing ones.

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 touched: Hetscale only deletes servers it created.

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

Connect read-only