Migrate from Hetzner Cloud Networks to Quake AI
Coming from another cloud?
▸Hetzner·Networks, hcloud_firewall, Load Balancers, Floating IPs
Networks
- Private networks (vSwitch-like but called Networks) created via API, up to 10.0.0.0/8 subnets, attach to servers/LBs.
- CCM supports route controller for pod networking when enabled; no native provider networks like OpenStack.
- Limited to Hetzner regions, IPv4 only for private (IPv6 public).
- Networks are free with no usage charges, unlike potential metering in OpenStack clouds ().
Floating IPs
- Flat monthly billing €3/IPv4 or hourly equivalent, not usage-based per hour ().
- Locked to specific location/zone, cannot move across datacenters unlike global pools in OpenStack ().
- Hot-reassign without server reboot but requires manual OS config (e.g., ifupdown/netplan) post-change ().
- Limits: 10/account default, 20/server max; single assignment at a time ().
Firewalls
- Applies only to Cloud Servers (not Load Balancers), up to 5/server, 500 rules max; free ().
- Default: inbound blocked, outbound allowed; uses label selectors for auto-apply; statefulness not specified but likely stateless given rules ().
- No per-port/per-network granularity like Neutron SG rules; connection limits (80k concurrent/server) ().
- Custom Hetzner API vs Neutron security-groups API.
Migrate from Hetzner Cloud Networks to Quake AI
Hetzner Cloud's private networking, firewall, and floating IP models map closely to Quake AI's OpenStack Neutron. The primary structural addition on Quake AI is the explicit router object: Hetzner handles internet routing implicitly, while Neutron requires you to create a router and attach your subnet to it. Neutron's security group references (--remote-group) also provide a more precise alternative to Hetzner's CIDR-based inter-tier rules.
Service mapping#
Hetzner to Quake AI
| Hetzner service | Quake AI equivalent | Key difference |
|---|---|---|
| Floating IPs | Floating IPs | Flat monthly billing €3/IPv4 or hourly equivalent, not usage-based per hour (). Locked to specific location/zone, cannot move across... see details |
| N/A (No managed NAT service — self-managed Linux NAT server required) | NAT | Hetzner has no managed NAT gateway service. Outbound internet access for private servers requires provisioning a server with a public IP,... see details |
| Cloud Load Balancers | Network | Provisioned via CCM using annotations like load-balancer.hetzner.cloud/location=fsn1 on Services type LoadBalancer. Separate billed... see details |
| Cloud Networking (Private Networks + Floating IPs + Firewalls) | Networking | Hetzner's network model has three main primitives: Private Networks (L3 SDN), Floating IPs (public IP reassignment), and Firewalls... see details |
| Networks | Networks | Private networks (vSwitch-like but called Networks) created via API, up to 10.0.0.0/8 subnets, attach to servers/LBs. CCM supports route... see details |
| N/A (No port resource — server network interfaces managed implicitly via attach action) | Ports | Hetzner has no port concept. Network attachment is managed at the server level via POST /v1/servers/{id}/actions/attach_to_network with an... see details |
| N/A (No router resource — static routes via network routes API) | Routers | Hetzner has no managed router resource. Inter-subnet and internet routing is configured via static routes in the network (POST... see details |
| hcloud_firewall | Security Groups | Stateful rules by direction (in/out), protocol, port; apply_to via server IDs or label_selector (project-wide). Attach via firewall_ids in... see details |
| Private Network Subnets | Subnets | Hetzner subnets are defined with a network_zone (e.g. eu-central) and an IP range within the parent network CIDR via POST... see details |
Prerequisites#
- A Quake AI account with application credentials
- The OpenStack CLI installed and configured
- An inventory of your Hetzner resources: Networks, Subnets, Cloud Firewalls, Floating IPs, Load Balancers, and DNS zones
- An SSH key pair imported to Quake AI (
openstack keypair create --public-key)
Topology mapping#
The mapping is close between Hetzner and Neutron. The main structural difference is the explicit router object required on Quake AI.
| Hetzner concept | Neutron equivalent | Notes |
|---|---|---|
| Network (hcloud Network) | Network | Direct match |
| Subnet (hcloud Subnet) | Subnet | Direct match |
| Primary IP (public IPv4/IPv6) | PublicEphemeral model or floating IP | Primary IPs persist on rescale; floating IPs are separate objects |
| Floating IP | Floating IP | Direct match; implementation differs (see below) |
| Cloud Firewall | Security Group | Stateful, allow-only, applied to servers/labels and ports |
| Server label | Security Group assignment | Labels target firewalls; SGs assign to ports |
| Load Balancer | Self-managed reverse proxy or external edge | Feature comparison below |
| vSwitch (dedicated servers) | No equivalent | Hetzner vSwitch for dedicated servers has no Neutron equivalent |
| No router concept | Router | Hetzner routes implicitly; Neutron requires explicit router creation |
Set up the Neutron equivalent#
openstack network create my-network
openstack subnet create my-subnet \
--network my-network \
--subnet-range 10.0.0.0/24 \
--gateway 10.0.0.1 \
--dns-nameserver 8.8.8.8
openstack router create my-router
openstack router set my-router --external-gateway PublicStatic
openstack router add subnet my-router my-subnetOn Hetzner, you create a Network and Subnet, then attach servers. On Quake AI, you add the explicit router step. This router handles both outbound SNAT and inbound DNAT (via floating IPs).
Security rule translation#
Hetzner Cloud Firewalls and Neutron security groups share the same fundamental model.
| Dimension | Hetzner Cloud Firewall | Neutron Security Group |
|---|---|---|
| Statefulness | Stateful | Stateful |
| Rule model | Allow-only | Allow-only |
| Inbound default | Deny-all | Deny-all |
| Outbound default | Allow-all | Allow-all |
| Applied to | Server or label group | Port |
| Source types | CIDR only | CIDR and Security Group ID |
The notable improvement: Hetzner firewalls can only reference source IPs by CIDR. Neutron security groups support --remote-group references, enabling more precise inter-tier rules that follow instances regardless of IP address changes.
3-tier app example#
Hetzner source:
fw-web: inbound TCP 80/443 from0.0.0.0/0; inbound TCP 22 from admin CIDRfw-app: inbound TCP 8080 from10.0.0.0/24(web-tier subnet CIDR)fw-db: inbound TCP 5432 from10.0.0.0/24(app-tier subnet or specific IPs)
Neutron target (upgraded to security group references):
openstack security group create sg-web
openstack security group rule create sg-web \
--protocol tcp --dst-port 80 --remote-ip 0.0.0.0/0 --ingress
openstack security group rule create sg-web \
--protocol tcp --dst-port 443 --remote-ip 0.0.0.0/0 --ingress
openstack security group rule create sg-web \
--protocol tcp --dst-port 22 --remote-ip ADMIN_CIDR --ingress
openstack security group create sg-app
openstack security group rule create sg-app \
--protocol tcp --dst-port 8080 --remote-group sg-web --ingress
openstack security group create sg-db
openstack security group rule create sg-db \
--protocol tcp --dst-port 5432 --remote-group sg-app --ingressLoad balancer migration#
Replace a Hetzner Load Balancer with a reverse proxy such as HAProxy, Nginx, Caddy, Traefik, or Envoy. Assign a floating IP to the proxy instance and route requests to application instances over a private network.
Configure forwarding, health checks, sticky sessions, redirects, and Proxy Protocol in the proxy. Use Certbot or Caddy for certificate issuance and renewal. Put an external CDN or WAF in front of the proxy when you need an edge service.
Floating IP setup#
Hetzner Floating IPs are the closest conceptual match to Neutron Floating IPs of all five providers.
| Hetzner Floating IP | Neutron Floating IP |
|---|---|
| Static public IPv4 or IPv6 | Static public IPv4 (IPv6 not documented on Quake AI) |
| Re-assignable within network zone (eu-central alone spans the Frankfurt, Nuremberg, and Helsinki datacenter locations, a wider scope than a single Quake AI region) | Re-assignable within region |
| Charged monthly | Included in Quake AI pricing |
| Requires manual OS-level configuration | Assigned automatically via router NAT |
| Up to 10 per account (default) | Operator-configured limits |
The key implementation difference: Hetzner Floating IPs require manual OS-level configuration (adding the IP as an alias on the network interface) and the config does not survive reboot without persistent setup. Neutron Floating IPs work via DNAT on the router. The instance OS sees only its private IP; no OS configuration is needed.
openstack floating ip create PublicStatic
openstack server add floating ip MY_INSTANCE FLOATING_IP_ADDRESSDNS cutover#
Hetzner provides a managed DNS console. Migrate your zones to an external provider.
- Export zone file: From Hetzner DNS Console, export the zone as a BIND-format zone file.
- Clean up TTL mismatches: Hetzner DNS requires that records with the same name and type have identical TTLs. Resolve any inconsistencies before exporting.
- Lower TTLs: Set all records to 300 seconds; wait for the current TTL period to expire.
- Import at new provider: Upload the zone file or use Terraform with the DNS provider.
- Validate:
dig @NEW_NAMESERVER example.com A - Update registrar NS records.
- Monitor for 48 hours and restore TTLs after successful cutover.
Validation checklist#
- Neutron network, subnet, and router are operational (router is the key addition vs. Hetzner)
- Security group rules match your Cloud Firewall rules
- Label-based firewall groups are replaced by security group assignments on the correct ports
- CIDR-based inter-tier rules have been upgraded to security group references where appropriate
- Floating IPs are associated with the correct instance ports (no OS-level config needed)
- Reverse proxy health checks pass for application backends
- TLS renewal automation is in place (certbot or cert-manager)
- DNS records resolve to the proxy floating IP or external edge hostname
- Applications respond correctly through the full network path
Provider-specific gotchas#
| Topic | Detail |
|---|---|
| Bandwidth model | Hetzner includes a monthly transfer allowance that differs between EU and US locations, with per-GB overage. Quake AI includes bandwidth in flavor pricing. For Hetzner workloads within the included allowance, the shift is bandwidth-neutral. See Hetzner pricing |
| No router concept | Hetzner handles routing implicitly. Creating a Neutron router and attaching the subnet is a required explicit step with no Hetzner analog. |
| vSwitch / dedicated servers | Hetzner vSwitch connects Cloud servers to dedicated root servers via private L2 links. No Quake AI equivalent. Dedicated server workloads must migrate to cloud instances. |
| Firewall label targeting | Hetzner applies firewalls to servers by label. Neutron assigns SGs per-port. At scale, use Terraform's openstack_networking_port_v2 resource for declarative assignment. |
| Floating IP OS behavior | On Hetzner, Floating IPs require manual OS config. On Quake AI, Floating IPs are handled transparently by router NAT. No OS configuration needed. |
See also#
- Migrating from Hetzner Cloud to Quake AI: full cross-service migration hub
- Migrate from Hetzner Cloud Servers: compute workload migration
- Network migration guides: all provider guides
- Create a router: the key Neutron object Hetzner does not have
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