Kamal

Kamal already assumes a host list; the inventory gives it one before every deploy, and node.created triggers the deploy of each new host. The one to two hours are that deploy step and the load balancer.

Prerequisite work
a deploy step that keeps the host list
Time to set up
1–2 h
Adapter
Webhook
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
    Put a load balancer in front

    A Hetzner load balancer with a health check, TLS terminated at it. Kamal’s own proxy on each host serves plain HTTP behind it.

  2. 02
    Build the host list from the inventory

    Before every deploy, build Kamal’s host list from the inventory instead of keeping it by hand; a new server still comes with node.created.

  3. 03
    Deploy on node.created

    On the signed node.created event, run the deploy for that host and report it ready; the load balancer health check then decides when the node serves.

  4. 04
    Hold the deploy lock while Kamal rolls the fleet

    Take the group’s deploy lock with a TTL before the deploy and release it at the end, so scaling waits; healing still runs.

FAQ for this case

Is there a native Kamal adapter?

No, and none is planned: Kamal runs from your machine or CI with your own SSH key, which Hetscale never holds. The webhook adapter serves it, and the Kamal page shows the setup.

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

Connect read-only