DEV Community

Rozoom News Editor for Rozoom News

Posted on Originally published at news.rozoom.app

Hetzner Cloud Review 2026: Four Years, Three Servers, and Every Bill Explained

The oldest server in our account was created on 29 September 2022 and is still running. It has never been migrated, rebuilt or restored. Two more boxes joined it since, the newest three weeks ago. That is the entire basis of this review: three machines, four years, one invoice a month, and a list of things that went wrong that is almost entirely our own fault.

Most Hetzner reviews are a pricing table with adjectives. This one is the bill, itemised, plus the parts of the bill that are easy to miss, and the honest account of what we broke.

What we actually run

Box Type Created Job
1 CX32, 4 vCPU / 8 GB Sep 2022 Legacy multi-site host, eleven small sites, mail
2 CX22, 2 vCPU / 4 GB Nov 2023 Three containerised storefronts plus three CI runners
3 CX23, 2 vCPU / 4 GB Oct 2026 Static blog, analytics, a relay service

No load balancers, no managed anything, no Kubernetes. Three Linux boxes, Docker, and a reverse proxy. Four years of uptime that we did not have to think about is the headline finding, and it is worth saying clearly before the complaints start: in four years, not one of our outages was caused by Hetzner.

The bill, every line

These figures come from the Hetzner pricing API, read the day this was published, in EUR excluding VAT.

Line item Price
CX23, 2 vCPU / 4 GB / 40 GB €5.49/mo
CAX11, Arm, 2 vCPU / 4 GB / 40 GB €5.99/mo
CPX22, 2 vCPU / 4 GB / 80 GB €19.49/mo
Primary IPv4 address €0.50/mo
IPv6 free
Included traffic, EU locations 20 TB/mo
Traffic over the allowance €1.00/TB
Automated backups +20% of the server price, 7 slots
Snapshots and custom images €0.0143/GB/mo
Block storage volumes €0.0572/GB/mo
Floating IP €3.00/mo

Two of those lines deserve a paragraph each, because they are the two that quietly take your money.

The floating IP line

A floating IP costs €3.00 a month, six times the price of the primary IPv4 on the server, and it is billed whether or not anything is attached to it. We found two of them on our account left over from a migration that had finished months earlier, routing nothing. Deleting them cut €6 a month, which on a fleet whose cheapest box is €5.49 is a whole extra server.

Go and look at your floating IPs now. If one is unattached, it is not a spare, it is a subscription.

The traffic line is genuinely generous

20 TB per month included, per server, in the European locations, and €1.00 per TB beyond it. For comparison, the equivalent allowance at the big US clouds is measured in hundreds of gigabytes and the overage is priced per gigabyte, typically around €0.09. At a terabyte of egress a month, the difference is between a rounding error and a bill that doubles.

This is the single strongest reason to run anything bandwidth-shaped - media, backups, a package mirror, an analytics endpoint - on Hetzner rather than on a hyperscaler. We looked at the alternatives in Best VPS for self-hosting in 2026.

What went wrong in four years

Every incident below was ours. We are listing them because they are the ones you will hit too, and none of them appear in a feature comparison.

1. The images ship with no swap

A CI runner on box 2 went offline and stayed offline for ten days. The symptom read like an unreachable machine. The cause was a build that allocated more than the 4 GB available, the kernel OOM-killer taking the runner process, and systemd not retrying. The box had been up for 85 days with zero swap, because the stock image does not configure any.

A 4 GB swapfile in /etc/fstab fixed it permanently, and the same build then completed:

fallocate -l 4G /swapfile && chmod 600 /swapfile
mkswap /swapfile && swapon /swapfile
echo '/swapfile none swap sw 0 0' >> /etc/fstab
Enter fullscreen mode Exit fullscreen mode

If you run builds on a 4 GB box, do this on day one. Treat "service has been down for days" on a Hetzner box as a possible OOM before you treat it as a network problem.

2. Docker build cache ate two thirds of the disk

On a 38 GB disk, 24 GB was Docker build cache. Nothing warns you; the box simply starts failing writes. docker system prune -af --volumes on a schedule, or at minimum a disk alert, is not optional on a 40 GB plan.

3. fail2ban banned our own bridge

A host started answering 503 to everything. fail2ban had matched traffic coming from the Docker bridge, which is to say from our own reverse proxy, and banned the gateway address. Whitelist your bridge networks in ignoreip before you deploy fail2ban next to Docker, not after.

4. The plan you budgeted for may not be orderable

The CX line's availability flips through the day, per location. We read the API at midday and the €5.49 plan was unavailable across all three European locations; five hours later it was orderable in two of them. The prices[] array lists locations you cannot order in, which makes a price look like an offer when it is only a record. The live signal is server_types[].locations[].available, and GET /v1/datacenters has returned HTTP 410 since June 2026, so there is no second source to check.

What Hetzner still does not sell

As of this month's changelog, and this is the honest reason not to choose them:

  • No managed database. No equivalent of RDS or managed Postgres. You run the database, you handle the failover, you own the backups.
  • No managed Kubernetes. There is an official cloud controller manager and a CSI driver, which make a self-managed cluster pleasant, but the control plane is yours to operate.
  • Thin managed everything else. Object storage and storage boxes exist; load balancers, networks and firewalls exist and work. Beyond that the catalogue is deliberately short, and 2026 added features, not products.
  • Fewer regions. Three European locations plus a handful elsewhere. If your users are in Asia or South America, latency is a real argument against.
  • Support is a ticket, not a phone call. In four years we have opened almost none, which is its own kind of answer, but do not expect an account manager.

Backups: the checkbox we leave off, and why

Hetzner's automated backups cost 20% of the server price and keep 7 slots. On a €5.49 box that is €1.10 a month, which is cheap enough that the default advice should be to turn it on.

We leave it off, and the reasoning is worth copying only if the second half applies to you: snapshots of a whole server restore a whole server, which is the wrong unit when what you need back is one database and one config directory. Our backups go to S3-compatible object storage on a schedule, versioned, and they get restore-tested. If you are not going to build that, turn the checkbox on today. An untested €1.10 backup beats a disciplined plan you never wrote.

Who should use Hetzner, and who should not

Use it if you run your own stack, your traffic is bandwidth-heavy, your users are in Europe, and you would rather spend an hour on apt than €200 a month on managed services. The price-to-performance is not a marginal win, it is a factor of three or four, and the hardware has been boring in the best sense.

Do not use it if you need a managed database with a support contract behind it, a control plane somebody else gets paged for, or a region in Asia. The money you save will go straight back out as your own time, and if your time is the scarce resource, that trade is bad.

For us, across four years and three machines, the verdict is simple: the infrastructure has never been the problem. Everything on the incident list above we did to ourselves, and every one of those mistakes would have cost more to make somewhere else.


Originally published at news.rozoom.app.

Top comments (0)