Migrate from Hetzner Cloud Servers to Quake AI Compute
Coming from another cloud?
▸Hetzner·Cloud Servers, Volumes, Snapshots
Cloud Servers
- Servers provisioned individually via Hetzner API (hcloud), not OpenStack Nova flavors; fixed instance types like CX11 (1 vCPU, 2GB RAM, 20GB NVMe).
- No flavor customization; choose from predefined shared/dedicated vCPU series.
- Billing hourly with monthly cap per server (e.g., €3.29/mo cap for CX11), charged even when powered off until deleted, unlike typical OpenStack stop-to-pause billing.
- Custom REST API at api.hetzner.cloud/v1/servers instead of OpenStack Nova /v2.1/servers (different auth, payloads, response formats).
Migrate from Hetzner Cloud servers to Quake AI compute
This guide covers migrating compute workloads from Hetzner Cloud to Quake AI (OpenStack Nova). Hetzner does not support image export, so the recommended approach is rebuild and rsync. Hetzner users typically provision from standard images with configuration management tooling, making rebuild the natural migration path.
Service mapping#
Hetzner to Quake AI
| Hetzner service | Quake AI equivalent | Key difference |
|---|---|---|
| Server Types | Flavors | Fixed predefined types (e.g. CX11, CPX31) with shared_vcpu (noisy neighbors) vs dedicated_vcpu. GET /v1/server_types lists all; no custom... see details |
| Images | Images | Includes system images (OS), user images (snapshots/backups). API /v1/images; create via server action create_image (type=snapshot/backup).... see details |
| Cloud Servers | Instances | Servers provisioned individually via Hetzner API (hcloud), not OpenStack Nova flavors; fixed instance types like CX11 (1 vCPU, 2GB RAM,... see details |
| SSH Keys | Key Pairs | API /v1/ssh_keys; POST public_key, name; inject array of ssh_keys on server create. No private key management; user provides public keys... see details |
| Placement Groups | Server Groups | Only 'spread' type (anti-affinity: servers on different physical hosts); no 'affinity' or policy-based like OpenStack. Max 10 servers/group... see details |
| N/A (No equivalent) | Snapshots | No support for volume snapshots in API or console; explicitly stated 'we do not provide Backups or Snapshots for Volumes' and server... see details |
| Server Snapshots (Image type: snapshot) | Snapshots | Hetzner server snapshots are created via POST /v1/servers/{id}/actions/create_image with type: snapshot. Hetzner recommends powering off... see details |
Prerequisites#
- A Quake AI account with application credentials
- The OpenStack CLI installed and configured
- SSH access to your Hetzner Cloud Servers
- An SSH key pair imported to Quake AI (
openstack keypair create --public-key)
Image portability#
Hetzner Cloud does not provide an API or UI for downloading server snapshots or images. A dd-based workaround exists using rescue mode, but it produces full-disk images regardless of data usage and requires server downtime.
Recommendation: Do not attempt image export. Hetzner servers are typically provisioned from standard images with config management: rebuild is the right approach.
Flavor mapping#
Hetzner uses three CPU families: CX/CPX (shared, ~2:1 ratio), and CCX (dedicated AMD, 4:1 ratio). Shared Hetzner servers map to Quake AI s1a at smaller sizes, but step up to m2a for larger configurations since s1a caps at 8 vCPU / 8 GiB. Dedicated CCX maps cleanly to m2a.
| Hetzner Server | vCPUs | RAM (GiB) | Quake AI Flavor | vCPUs | RAM (GiB) | Notes |
|---|---|---|---|---|---|---|
| CX22 (Shared Intel) | 2 | 4 | s1a.medium | 2 | 4 | Both shared CPU |
| CX32 (Shared Intel) | 4 | 8 | s1a.large | 4 | 8 | Both shared CPU |
| CX42 (Shared Intel) | 8 | 16 | m2a.2xlarge | 8 | 32 | Quake AI has more RAM at this tier |
| CX52 (Shared Intel) | 16 | 32 | m2a.4xlarge | 16 | 64 | Quake AI has more RAM at this tier |
| CPX21 (Shared AMD, pre-2024) | 3 | 4 | s1a.medium | 2 | 4 | Approximate, fewer vCPUs on Quake AI |
| CPX31 (Shared AMD, pre-2024) | 4 | 8 | s1a.large | 4 | 8 | Close match |
| CPX41 (Shared AMD, pre-2024) | 8 | 16 | m2a.2xlarge | 8 | 32 | Quake AI has more RAM |
| CCX13 (Dedicated AMD) | 2 | 8 | m2a.large | 2 | 8 | Exact ratio match |
| CCX23 (Dedicated AMD) | 4 | 16 | m2a.xlarge | 4 | 16 | Exact ratio match |
| CCX33 (Dedicated AMD) | 8 | 32 | m2a.2xlarge | 8 | 32 | Exact ratio match |
| CCX43 (Dedicated AMD) | 16 | 64 | m2a.4xlarge | 16 | 64 | Exact ratio match |
| CCX53 (Dedicated AMD) | 32 | 128 | m2a.8xlarge | 32 | 128 | Exact ratio match |
| CCX63 (Dedicated AMD) | 48 | 192 | m2a.16xlarge | 64 | 256 | No exact match; m2a.16xlarge is larger. If you do not need 48 vCPUs, consider m2a.8xlarge (32 vCPU / 128 GiB). |
Hetzner relaunched its shared plans in June 2024 under new names such as CX22 and CPX22. The CPX rows above reference the pre-2024 series (CPX21 at 3 vCPU, CPX31 at 4 vCPU); the current CPX22 has 2 vCPU. Confirm the vCPU count for your server in the Hetzner Cloud Console before you map it.
Migration approach#
Option 1: Containerized workloads (recommended)#
If your Hetzner servers run Docker containers, migrate images and redeploy.
- Push images to a portable registry:
docker push registry.example.com/MY_APP:latest- Provision a Nova instance on Quake AI:
openstack server create \
--image "Ubuntu-22.04" \
--flavor m2a.xlarge \
--network MY_NETWORK \
--key-name MY_KEY \
--security-group MY_SECURITY_GROUP \
MY_INSTANCE_NAME- Install Docker and deploy:
ssh ubuntu@FLOATING_IP
sudo apt update && sudo apt install -y docker.io
sudo docker pull registry.example.com/MY_APP:latest
sudo docker run -d -p 80:8080 registry.example.com/MY_APP:latestOption 2: Rebuild and rsync (non-containerized)#
- Provision a Nova instance with the same base OS:
openstack server create \
--image "Ubuntu-22.04" \
--flavor m2a.xlarge \
--network MY_NETWORK \
--key-name MY_KEY \
--security-group MY_SECURITY_GROUP \
MY_INSTANCE_NAME- Assign a floating IP:
openstack floating ip create PublicStatic
openstack server add floating ip MY_INSTANCE_NAME FLOATING_IP-
Install your application stack. Replay Ansible playbooks, cloud-init configs, or provisioning scripts.
-
Transfer application data:
rsync -avz --progress -e "ssh -i ~/.ssh/MY_KEY" \
root@HETZNER_IP:/path/to/app/data \
ubuntu@FLOATING_IP:/path/to/app/data- Migrate databases:
pg_dump -h HETZNER_IP -U MY_USER MY_DATABASE | \
psql -h FLOATING_IP -U MY_USER MY_DATABASEKey pair and security setup#
Import your SSH key#
openstack keypair create --public-key ~/.ssh/id_ed25519.pub my-keyTranslate Hetzner Firewalls to security groups#
Hetzner Firewalls apply at the network level or via label selectors. Neutron security groups apply per instance (per port). Translate your rules:
openstack security group create web-tier
openstack security group rule create web-tier \
--protocol tcp --dst-port 22 --remote-ip 0.0.0.0/0
openstack security group rule create web-tier \
--protocol tcp --dst-port 80 --remote-ip 0.0.0.0/0
openstack security group rule create web-tier \
--protocol tcp --dst-port 443 --remote-ip 0.0.0.0/0Validation checklist#
After migrating each workload, verify:
- Application responds correctly on the Quake AI instance
- All expected ports are accessible through the security group
- Data integrity: compare file checksums or row counts between source and destination
- Database connectivity from the application to any migrated databases
- DNS records updated to point to the new Quake AI floating IP
- Monitoring in place (self-managed Prometheus + Grafana)
- cloud-init or configuration management runs cleanly on the new instance
- SSL/TLS certificates installed and renewed
Provider-specific gotchas#
| Topic | Detail |
|---|---|
| Billing for stopped servers | Hetzner charges for powered-off servers; billing covers the reserved capacity regardless of power state. Quake AI similarly bills for provisioned resources while instances are stopped. Keep both source and target running only as long as needed during validation, then decommission the source. |
| Price increase (April 2026) | Hetzner announced pricing changes effective 01.04.2026 affecting both existing products and new orders. Community reports describe increases of roughly 30-50% for cloud servers; Hetzner's official statement does not give a figure. This may be a migration motivator. Verify current pricing at hetzner.com/cloud. |
| ARM instances (CAX) | No ARM equivalent on Quake AI. Workloads on CAX servers must be rebuilt for x86 (AMD EPYC). Check for architecture-specific dependencies in your binaries and containers. |
| Hetzner Robot | This guide covers Hetzner Cloud only. Dedicated server migration (Robot) involves IPMI/KVM access and is a different procedure. |
| Snapshots not portable | Hetzner snapshots are internal-only. Treat them as rollback targets on the source side, not migration artifacts. |
See also#
- Migrating from Hetzner Cloud to Quake AI: full cross-service migration hub
- Coming from Hetzner Cloud: concept translation reference
- Create an instance: full instance provisioning workflow
- Compute migration guides: all provider guides
Usage Guidelines
The sample code, software libraries, command line tools, proofs of concept, templates, and other related technology on this page (including any of the foregoing that is provided by Quake AI personnel) is provided to you as Quake AI Content under the Quake AI Customer Agreement, or the relevant written agreement between you and Quake AI (whichever applies). Do not use this Quake AI Content in your production accounts, or on production or other critical data. You are responsible for testing, securing, and optimizing the Quake AI Content (such as sample code) as appropriate for production grade use based on your specific quality control practices and standards. Deploying Quake AI Content may incur Quake AI charges for creating or using Quake AI chargeable resources, such as running Compute instances or storing data in Object Storage. Your use is also subject to the Acceptable Use Policy.
Comparisons to third-party providers in this material reflect publicly documented behavior as of the validation date below. Pricing, quotas, service limits, and feature availability change frequently on every cloud. Verify provider-specific claims against the provider's own current documentation before relying on them for a procurement, architecture, or migration decision.
For the full policy, see Usage Guidelines.
Last validated: 22.06.2026
Quick answers
- Why does `openstack image save` write a 0-byte file for my boot-from-volume instance?CLI
- Why does `openstack server create` fail with "Only volume-backed servers are allowed for flavors with zero disk"?CLIAPITerraform
- Why does my project still have a 10 GiB Cinder volume after I deleted my instance?CLIAPI
See Also
Compute migration guides
Shares: Flavors, Images
Migrate from Azure Virtual Machines to Quake AI Compute
Shares: Flavors, Images
Migrate from DigitalOcean Droplets to Quake AI Compute
Shares: Flavors, Images
Migrate from AWS EC2 to Quake AI compute
Shares: Flavors, Images
Migrate from GCP Compute Engine to Quake AI compute
Shares: Flavors, Images