Draft, not yet published
Why we host the product on Hetzner instead of AWS, GCP, or Azure
7 July 2026· 6 min read · by Stackbastion
Every time I tell another engineer that we run customer apps on Hetzner, I get the same raised eyebrow. Not AWS? Not “real” cloud? The assumption is that serious infrastructure means one of the big three, and anything else is a hobbyist choice.
It isn’t. Here’s the actual reasoning, including the parts where the big clouds would genuinely be the better call.
To be clear about scope: this post is about the product, the servers where we run our customers’ apps. That’s Hetzner plus Docker plus Caddy plus our own Postgres. This marketing website runs somewhere else entirely, and I explain that split in how we host this site. Don’t mix the two up.
The customer we’re building for
You can’t pick infrastructure without knowing who it’s for.
Our customer built an app with an AI tool. It works, it has real users, and it’s outgrown the platform it was born on. They are not a DevOps team. They don’t want a console with 200 services in it. They want their app to stay up, their data to be safe, and a human to call when it isn’t.
That customer profile decides almost everything. Optimizing for a team that doesn’t exist would be a mistake.
Where AWS, GCP, and Azure actually win
Let me steelman the big clouds first, because they’d be right for a different company.
- Global scale. If you need servers in 30 regions and traffic in the millions of requests per second, hyperscalers are built for exactly that. We don’t need it. Our customers’ apps are regional, and one well-sized box goes a long way.
- Managed everything. Want a managed queue, a managed search cluster, a managed ML pipeline, all wired together? The big clouds have a service for it. That breadth is real and valuable if you use it.
- Compliance certifications on tap. Enterprise procurement often demands a specific cloud’s certification stack. If you’re selling to Fortune 500 IT departments, that matters.
- Elastic bursting. If your load swings 100x in an hour and back down, paying only for what you burn can win. Steady load doesn’t benefit.
If our customers needed those things, this would be a different post. They don’t, so those strengths are features we’d pay for and never use.
Why Hetzner fits better
Now the case for.
Cost, honestly. This is the loud one, so let me use real numbers. A Hetzner CX32 gives you 4 vCPU and 8 GB of RAM for roughly 7 euros a month. Getting comparable compute plus a real Postgres tier on AWS, GCP, or Azure is closer to 60 to 120 dollars a month once you add the managed database, the load balancer, the egress fees, and the bits that quietly bill you. For a small app, that’s a 10x difference on the infrastructure line. When you’re hosting apps for founders who are counting every euro, that gap is the whole business.
Predictable bills. Hetzner charges a flat monthly price. The big clouds charge for compute, storage, egress, requests, and a dozen line items that are hard to predict until the invoice lands. Data egress alone is a notorious surprise: moving data out costs real money and it’s easy to forget. Flat and boring beats cheap-looking and spiky when you’re the one explaining the bill.
Less to get wrong. A hyperscaler console is enormous. Enormous means more ways to misconfigure something, and misconfiguration is the single most common cause of cloud data leaks. A plain Linux box with Docker, Caddy, and Postgres is a small surface. I can hold the whole setup in my head. When something breaks at 3am, “small enough to understand” is worth more than “powerful enough for anything.”
Real control over the data. We run our own Postgres, so we control the backups, the point-in-time recovery, the retention, and where the data physically sits. Hetzner’s data centers are in Germany and Finland, which keeps EU customer data in the EU without extra contortions. On a managed cloud database you get their backup policy and their restore process, take it or leave it.
The trade-off I’m accepting
Choosing Hetzner isn’t free, and pretending otherwise would be dishonest.
On a raw Hetzner box, nothing is set up. No managed database patching. No automatic backups. No one-click restore. No support line that fixes your app. All of that is work, and on a bare VPS that work falls on whoever runs the server.
That’s exactly the work Stackbastion takes on. We install and patch the Postgres, run pgBackRest and restic for backups, test the restores, put monitoring in front of it, and answer the phone when it breaks. The Hetzner saving isn’t “cheap because we skip the hard parts.” It’s “cheap infrastructure, and we do the hard parts ourselves so you don’t.”
If you tried to run a bare Hetzner box yourself without that layer, you’d get the low bill and inherit every one of those jobs. For most non-technical founders that’s a bad trade, which is the whole reason this service exists. There’s more on when self-hosting stops being worth the effort in self-hosting vs PaaS: the real cost.
Why not just use a managed PaaS then?
Fair question. Render and Railway are lovely and they hide the server for you. But you pay a steady premium for that convenience, and you’re still on their backup policy and their limits. We use Railway ourselves for the static marketing site, where the convenience is worth it and there’s no database to babysit. For the product, where the whole value is control over data and cost, owning the box wins.
The bottom line
We chose Hetzner because it fits the customer, not because it’s trendy. Low, predictable cost. A small surface I can actually understand. Real control over where data lives and how it’s backed up. EU data centers by default. The price of that is doing the operational work ourselves, which is precisely the thing we’re selling.
If you want to know what that costs you, it’s on our pricing page. No hyperscaler markup, no surprise egress bill, just a flat monthly price for someone keeping your app alive.
FAQ
Isn’t Hetzner less reliable than AWS?
For a single region, a well-run Hetzner box is very reliable. The big clouds win on multi-region redundancy and exotic failure modes, which most small apps never need. Reliability for a small app comes far more from tested backups and monitoring than from which company owns the data center.
Where is my data physically stored?
In Hetzner’s data centers, which are in Germany and Finland. That keeps EU customer data inside the EU by default, which makes GDPR a lot simpler than shipping data to a US-owned cloud region.
What if I outgrow a single Hetzner server?
A single dedicated Hetzner box (from around 40 euros a month) handles far more load than people expect, often more than an equivalent hyperscaler bill several times its size. If an app genuinely outgrows that, we scale it out on Hetzner or move it. Very few small apps get there.
Can I get my app off Hetzner later if I want?
Yes. We run your app in Docker with standard Postgres, both portable by design. There’s no proprietary lock-in. If you ever want to move to another host or bring it in-house, your app and your data come with you.