Hetzner Cloud is the first compute provider supported by CNAP. Hetzner offers high-performance cloud servers at significantly lower prices than hyperscalers, with data centers in Europe and the US.
Regions
| Region | Location | ID |
|---|
| Falkenstein | Germany (Bavaria) | fsn1 |
| Nuremberg | Germany (Bavaria) | nbg1 |
| Helsinki | Finland | hel1 |
| Ashburn | US East (Virginia) | ash |
| Hillsboro | US West (Oregon) | hil |
The default region for CNAP-managed machines is Falkenstein (fsn1).
Instance types
CNAP filters available instance types based on your plan:
Free tier
| Type | CPU | Memory | Disk | Arch | Price/hour |
|---|
cax11 | 2 vCPU | 4 GB | 40 GB | ARM64 | €0.004 |
cx23 | 2 vCPU | 4 GB | 40 GB | x86 | €0.006 |
cpx22 | 3 vCPU | 4 GB | 80 GB | x86 (dedicated) | €0.008 |
Pro tier
All Hetzner Cloud server types are available, including:
| Type | CPU | Memory | Disk | Arch | Price/hour |
|---|
cax21 | 4 vCPU | 8 GB | 80 GB | ARM64 | €0.007 |
cax31 | 8 vCPU | 16 GB | 160 GB | ARM64 | €0.013 |
cx33 | 4 vCPU | 8 GB | 80 GB | x86 | €0.011 |
cx43 | 8 vCPU | 16 GB | 160 GB | x86 | €0.021 |
cpx32 | 4 vCPU | 8 GB | 160 GB | x86 (dedicated) | €0.016 |
ARM64 types (cax*) offer the best price-to-performance ratio. Use them unless your workloads require x86.
BYOM (bring your own key)
All instance types available in your Hetzner Cloud account, with no restrictions.
Billing model
Hetzner bills per hour, rounded up. Servers are billed as long as they exist, even when powered off. This is why CNAP’s suspend feature snapshots and deletes the server instead of just stopping it.
| State | Cost (cx23, 40 GB) |
|---|
| Running | ~€4.11/month |
| Powered off | ~€4.11/month (same — Hetzner bills for the server object) |
| Suspended (snapshot) | ~€0.40/month (snapshot storage at €0.01/GB) |
| Deleted | €0/month |
Snapshot pricing
Hetzner charges €0.01 per GB per month for snapshots. Snapshots are compressed — you pay for actual used space, not total disk capacity.
| Disk size | Snapshot cost/month |
|---|
| 40 GB | ~€0.40 |
| 80 GB | ~€0.80 |
| 160 GB | ~€1.60 |
How CNAP uses Hetzner
When CNAP provisions a machine on Hetzner:
- Creates a server via the Hetzner Cloud API with a cloud-init script
- Cloud-init installs Kubernetes, configures the worker, and joins your cluster
- The machine appears in your dashboard within ~2 minutes
- CNAP monitors the machine and handles its lifecycle (scaling, suspend, delete)
CNAP uses its own Hetzner Cloud API token for managed machines. For BYOM, your token is used instead.
Hetzner Cloud API key (BYOM)
To use your own Hetzner account:
- Create an API token in the Hetzner Cloud Console with Read & Write permissions
- Go to Compute in the CNAP dashboard
- Click Add Credential and paste your token — CNAP validates it immediately
- Click Create Config, select your credential, and choose a region
- Machines provisioned with this config appear in your Hetzner Console and bill to your account
CNAP manages the Kubernetes lifecycle — you manage the Hetzner billing. No machine quotas or TTL limits apply to BYOM machines.
Your API token is stored securely in an external secrets manager. CNAP re-validates all tokens hourly and notifies you if a token becomes invalid (for example, if it was revoked or expired in the Hetzner Console).
Limitations
- No volume attachment on suspend/resume: Hetzner Volumes use server IDs for attachment. If you use Hetzner CSI Volumes (not local storage), additional handling may be needed on resume. Local storage and LINSTOR volumes work without issues.
- Powered-off servers still bill: Unlike AWS/GCP, stopping a Hetzner server doesn’t reduce costs. Use CNAP’s suspend feature instead.
- IPv6 only on some VMs: Cheapest Hetzner plans may only include IPv6. CNAP handles this via the cluster’s internal networking.