, 3 min read

We've moved to Hetzner

[Update Dec 8, 2024: Since writing this article and making this move Hetzner has changed their limits and pricing. Since people have been asking, I posted an update Hetzner policy changes, regret?. I’ve also updated the numbers below accordingly. TL;DR: Does it change the benefit or decision for us? Nope!]

After almost 10 years at Digital Ocean, we’ve moved our entire infrastructure to Hetzner’s US-based data center in Virginia.

This is a big change. We have over 20 different web apps, APIs, background daemons, and databases all working loosely together. Plus I have 10 years of experience running infrastructure in Digital Ocean’s cloud.

Ever feel that things are getting better, faster, cheaper, but those benefits aren’t being passed along to you?

That’s how I felt looking back at Digital Ocean. I checked our billing and we paid the same price for the same server 10 years ago as we do today.

This feeling first came over me when I started hearing people rave about Hetzner in talks, tutorials and other deployment stories. I knew them as a German cloud company and they do have a high value proposition. But my customer base is more US-focused with Europe as a solid second biggest market. I wanted to keep our infrastructure in US-East as it is.

Then someone pointed out that Hetzner opened two US-based data centers recently. Oh really?

Now you have my attention

If you have never visited their cloud-VM pricing and SKU page, you may be shocked. You’d see a 2 vCPU x 2 GB server for €4.49/mo (original price €4.35/mo). More impressively there’s the 8 vCPU x 16 GB server for €29.99/mo (original price: €25.20/mo). That server costs $112/mo at Digital Ocean, $205/mo at AWS, and $320/month at Azure. Wow. This is the one we’re using for Talk Python currently.

The important question is are they any good? Well, we’re going to find out since we have already moved. The first couple of days have been great and without issue.

But I did do some testing and here is what I found. Some people said Hetzner may be affordable but they might be running low-grade hardware because they are so cheap. Let’s test it. The two important axises for me are bandwidth (especially outbound) and CPU performance.

I found two great tools. Both of these run in Docker so they stay isolated which is perfect:

  1. CPU: lgaborini/benchmarkbash
  2. Bandwidth: moutten/speedtest-cli

I ran those on two identical servers in both Hetzner and Digital Ocean. Here are the results. Hetzner had 8x faster bandwidth and 1.2x faster CPUs and 4.5x cheaper monthly costs.

The speedtest CLI is extra good. Internally, it runs speedtest.net and when it’s done, you get the full reports for both the Hetzner run and Digital Ocean run.

Let’s give it a try

After these comparisons, Hetzner sure seems to be worth considering. The data center is just down the street from my prior Digital Ocean one and the cost is nearly 5x cheaper. While it’s not our primary reason, a bonus here is that we’ll save almost $1,500/year in hosting fees. For better faster servers and networks.

Finally, this move was sufficiently easy because our entire re-architecting our deployment models to self-contained and depend less on the specific aspects and APIs of whatever host we’re running on. If we have a nice large Linux server, we’re good to go. This is something I’ve been thinking a lot about recently and plan on writing much more. Please subscribe to our RSS feed or join the free Talk Python newsletter to follow the stories.

Thanks for reading! Before you go, consider checking out one of our courses or listening to one of our podcast episodes.