1---
2title: Hetzner
3description: Build applications on Hetzner Cloud with Alchemy — Servers running your Effect programs as Services, plus volumes, networks, firewalls, load balancers, and DNS, all in one typed program.
4---
5
6An Alchemy app on Hetzner is one or more **Servers** — real VMs,
7booted in seconds and billed by the hour — running your Effect
8programs as **Services**: bundled with rolldown, copied over SSH, and
9supervised by systemd. No Dockerfile, no ansible, no hand-written
10unit files. Around them you declare the rest of the platform —
11volumes, private networks, firewalls, load balancers, and DNS — in
12the same TypeScript program.
13
14New here? [Set up your project and API token](/hetzner/setup), then
15start the [tutorial](/hetzner/tutorial/part-1).
16
17## Compute
18
19- **[Servers](/hetzner/compute/servers)** — the VM: pick a
20 `serverType`, an `image`, and a `location`; attach SSH keys,
21 networks, firewalls, volumes, and placement groups. Alchemy injects
22 a deploy key so it can reach every server it manages.
23- **[Services](/hetzner/compute/services)** — your code on a Server.
24 An HTTP `fetch` handler (or a background process) deployed as a
25 systemd unit; N Services can share one Server.
26- **[SSH](/hetzner/compute/servers#run-commands-over-ssh)** — typed
27 `exec`/`scp` against any managed Server, usable from deploy-time
28 Effects.
29- **Images & snapshots** — snapshot a Server with `Hetzner.Image`,
30 look up stock images with `Hetzner.findImage`.
31
32## Frontend
33
34- **[Websites](/hetzner/frontend/websites)** — Vite, Astro,
35 Next.js, Nuxt, React Router, SolidStart, SvelteKit, TanStack
36 Start, Waku, Octane, Foldkit, Vocs, and StaticSite. Each builds
37 your app and deploys a systemd
38 [Service](/hetzner/compute/services) on a
39 [Server](/hetzner/compute/servers). Several sites can share one
40 VM. Live URL is `http://{ipv4}:3000`.
41- [`Vite`](/hetzner/frontend/vite), [`Astro`](/hetzner/frontend/astro),
42 [`Next.js`](/hetzner/frontend/nextjs), [`Nuxt`](/hetzner/frontend/nuxt),
43 [`React Router`](/hetzner/frontend/react-router),
44 [`SolidStart`](/hetzner/frontend/solidstart),
45 [`SvelteKit`](/hetzner/frontend/sveltekit),
46 [`TanStack Start`](/hetzner/frontend/tanstack-start),
47 [`Waku`](/hetzner/frontend/waku),
48 [`Octane`](/hetzner/frontend/octane), [`Foldkit`](/hetzner/frontend/foldkit),
49 [`Vocs`](/hetzner/frontend/vocs),
50 [`StaticSite`](/hetzner/frontend/static-site).
51
52## Storage
53
54- **[Volumes](/hetzner/data/volumes)** — network block storage
55 attached to a Server. Mount one into a Service with the
56 `MountVolume` binding and read/write it like a local directory.
57
58## Networking
59
60- **[Networks, Firewalls & Load Balancers](/hetzner/networking)** —
61 private networks with subnets, stateful firewall rules applied to
62 servers, and managed load balancers with health checks and TLS
63 certificates.
64- **Floating & Primary IPs** — stable public addresses that survive
65 server replacement.
66
67## DNS
68
69- **[Zones & records](/hetzner/networking/dns)** — Hetzner DNS zones
70 and record sets as resources, plus `ReadDns`/`WriteDns` bindings
71 for querying and mutating records from deploy-time Effects.
72
73## What are you building?
74
75| You're building | Reach for |
76| ---------------------------------- | ------------------------------------------------------------------------------------------------------------ |
77| An HTTP API on a VM | [Server](/hetzner/compute/servers) + [Service](/hetzner/compute/services) |
78| A Vite SPA | [`Website.Vite`](/hetzner/frontend/vite) — pass `server` to share the VM |
79| An SSR site (Astro, Next, Nuxt, …) | [`Website`](/hetzner/frontend/websites) |
80| A background worker / daemon | [Service](/hetzner/compute/services) with `host.run(...)` — no port, no HTTP |
81| Persistent state on disk | [Volume + MountVolume](/hetzner/data/volumes) |
82| A load-balanced, TLS-terminated app | [Load Balancer + Certificate](/hetzner/networking#load-balancer) |
83| Servers talking privately | [Network](/hetzner/networking#private-networks) + `usePrivateIp` targets |
84| Locking down public access | [Firewall](/hetzner/networking#firewalls) |
85| Your own domain | [Zone + RecordSet](/hetzner/networking/dns) |
86| A stable IP across replacements | Primary IP / Floating IP — see [Networking](/hetzner/networking#floating--primary-ips) |
87| Golden images | `Hetzner.Image` snapshots — see [Servers](/hetzner/compute/servers#snapshots) |
88
89## Where next
90
91- [Setup](/hetzner/setup) — create a Hetzner project, generate an
92 API token, and connect alchemy.
93- [Tutorial](/hetzner/tutorial/part-1) — from empty directory to a
94 Server running an HTTP Service with a mounted Volume and a
95 firewall.
96- [Websites](/hetzner/frontend/websites) — Vite, Astro, Next.js, and
97 other framework sites as a systemd unit.
98- [Providers reference](/providers) — generated API docs for every
99 Hetzner resource Alchemy ships.