Skip to content

Migrate from Hetzner Cloud Servers to Quake AI Compute

Migration · Updated Jun 2026

Coming from another cloud?

▸Hetzner·Cloud Servers, Volumes, Snapshots

Cloud Servershigh

  • 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).
Hetzner docs ↗

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 serviceQuake AI equivalentKey difference
Server TypesFlavorsFixed predefined types (e.g. CX11, CPX31) with shared_vcpu (noisy neighbors) vs dedicated_vcpu. GET /v1/server_types lists all; no custom... see details
ImagesImagesIncludes system images (OS), user images (snapshots/backups). API /v1/images; create via server action create_image (type=snapshot/backup).... see details
Cloud ServersInstancesServers provisioned individually via Hetzner API (hcloud), not OpenStack Nova flavors; fixed instance types like CX11 (1 vCPU, 2GB RAM,... see details
SSH KeysKey PairsAPI /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 GroupsServer GroupsOnly '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)SnapshotsNo 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)SnapshotsHetzner 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 ServervCPUsRAM (GiB)Quake AI FlavorvCPUsRAM (GiB)Notes
CX22 (Shared Intel)24s1a.medium24Both shared CPU
CX32 (Shared Intel)48s1a.large48Both shared CPU
CX42 (Shared Intel)816m2a.2xlarge832Quake AI has more RAM at this tier
CX52 (Shared Intel)1632m2a.4xlarge1664Quake AI has more RAM at this tier
CPX21 (Shared AMD, pre-2024)34s1a.medium24Approximate, fewer vCPUs on Quake AI
CPX31 (Shared AMD, pre-2024)48s1a.large48Close match
CPX41 (Shared AMD, pre-2024)816m2a.2xlarge832Quake AI has more RAM
CCX13 (Dedicated AMD)28m2a.large28Exact ratio match
CCX23 (Dedicated AMD)416m2a.xlarge416Exact ratio match
CCX33 (Dedicated AMD)832m2a.2xlarge832Exact ratio match
CCX43 (Dedicated AMD)1664m2a.4xlarge1664Exact ratio match
CCX53 (Dedicated AMD)32128m2a.8xlarge32128Exact ratio match
CCX63 (Dedicated AMD)48192m2a.16xlarge64256No 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#

If your Hetzner servers run Docker containers, migrate images and redeploy.

  1. Push images to a portable registry:
bash
docker push registry.example.com/MY_APP:latest
  1. Provision a Nova instance on Quake AI:
bash
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
  1. Install Docker and deploy:
bash
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:latest

Option 2: Rebuild and rsync (non-containerized)#

  1. Provision a Nova instance with the same base OS:
bash
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
  1. Assign a floating IP:
bash
openstack floating ip create PublicStatic
openstack server add floating ip MY_INSTANCE_NAME FLOATING_IP
  1. Install your application stack. Replay Ansible playbooks, cloud-init configs, or provisioning scripts.

  2. Transfer application data:

bash
rsync -avz --progress -e "ssh -i ~/.ssh/MY_KEY" \
  root@HETZNER_IP:/path/to/app/data \
  ubuntu@FLOATING_IP:/path/to/app/data
  1. Migrate databases:
bash
pg_dump -h HETZNER_IP -U MY_USER MY_DATABASE | \
  psql -h FLOATING_IP -U MY_USER MY_DATABASE

Key pair and security setup#

Import your SSH key#

bash
openstack keypair create --public-key ~/.ssh/id_ed25519.pub my-key

Translate 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:

bash
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/0

Validation 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#

TopicDetail
Billing for stopped serversHetzner 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 RobotThis guide covers Hetzner Cloud only. Dedicated server migration (Robot) involves IPMI/KVM access and is a different procedure.
Snapshots not portableHetzner snapshots are internal-only. Treat them as rollback targets on the source side, not migration artifacts.

See also#

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

Was this page helpful?