Skip to content

Hetzner

An Alchemy app on Hetzner is one or more Servers — real VMs, booted in seconds and billed by the hour — running your Effect programs as Services: bundled with rolldown, copied over SSH, and supervised by systemd. No Dockerfile, no ansible, no hand-written unit files. Around them you declare the rest of the platform — volumes, private networks, firewalls, load balancers, and DNS — in the same TypeScript program.

New here? Set up your project and API token, then start the tutorial.

  • Servers — the VM: pick a serverType, an image, and a location; attach SSH keys, networks, firewalls, volumes, and placement groups. Alchemy injects a deploy key so it can reach every server it manages.
  • Services — your code on a Server. An HTTP fetch handler (or a background process) deployed as a systemd unit; N Services can share one Server.
  • SSH — typed exec/scp against any managed Server, usable from deploy-time Effects.
  • Images & snapshots — snapshot a Server with Hetzner.Image, look up stock images with Hetzner.findImage.
  • Volumes — network block storage attached to a Server. Mount one into a Service with the MountVolume binding and read/write it like a local directory.
  • Networks, Firewalls & Load Balancers — private networks with subnets, stateful firewall rules applied to servers, and managed load balancers with health checks and TLS certificates.
  • Floating & Primary IPs — stable public addresses that survive server replacement.
  • Zones & records — Hetzner DNS zones and record sets as resources, plus ReadDns/WriteDns bindings for querying and mutating records from deploy-time Effects.
You’re building Reach for
An HTTP API on a VM Server + Service
A background worker / daemon Service with host.run(...) — no port, no HTTP
Persistent state on disk Volume + MountVolume
A load-balanced, TLS-terminated app Load Balancer + Certificate
Servers talking privately Network + usePrivateIp targets
Locking down public access Firewall
Your own domain Zone + RecordSet
A stable IP across replacements Primary IP / Floating IP — see Networking
Golden images Hetzner.Image snapshots — see Servers
  • Setup — create a Hetzner project, generate an API token, and connect alchemy.
  • Tutorial — from empty directory to a Server running an HTTP Service with a mounted Volume and a firewall.
  • Providers reference — generated API docs for every Hetzner resource Alchemy ships.