Draft, not yet published
Self-hosting vs PaaS: the real cost once you add backups and monitoring
7 July 2026· 5 min read · by Stackbastion
You’ve seen the pitch: a Hetzner box is 5 euros, so why pay Vercel or Render 50? The math looks obvious until you remember that the platform was doing things for you that a bare server doesn’t. Backups, monitoring, restarts, and TLS all have to come from somewhere. Here’s the total cost, done honestly, both ways.
The trap in the €5 server
A PaaS bill bundles a pile of work into one line item. A raw server unbundles it and hands the pieces back to you. Comparing the sticker prices compares two different things.
So let’s not compare a 50 dollar PaaS bill to a 5 euro server. Let’s compare a 50 dollar PaaS bill to a 5 euro server plus everything you now have to add to make it a real production setup.
What a production setup actually needs
Whether you self-host or use a PaaS, a live app needs all of this. The only question is who does it.
- TLS certificates so the site is HTTPS, renewed automatically before they expire.
- Backups of your database, taken on a schedule and kept for long enough to matter.
- A tested restore. A backup you’ve never restored is a guess. You need to actually bring one back.
- Monitoring so you find out about downtime before your users tweet about it.
- Restarts when a process crashes at 3am.
- Security patches on the OS and your dependencies.
- Logs you can search when something breaks.
On a PaaS, most of these come included or as a cheap add-on. On a bare server, every one is a thing you install, configure, and maintain.
The real cost, both ways
Here’s a fair comparison for a small production app. Prices approximate, mid-2026.
| Item | PaaS (Render/Railway/Vercel) | Self-hosted (Hetzner) |
|---|---|---|
| Compute | ~$25/mo instance under load | ~€7/mo VPS |
| Database | ~$15 to $50/mo managed | €0, runs on the same box |
| Backups + PITR | Included or ~$5/mo | You set up pgBackRest (time) |
| TLS | Automatic | Caddy, near-automatic (time) |
| Monitoring | Basic included | Uptime Kuma + node_exporter (time) |
| Restarts | Automatic | Your systemd/Docker config (time) |
| Patching | Handled | Your job, ongoing (time) |
| Cash per month | ~$45 to $80 | ~€7 to €15 |
| Your time | near zero | setup + ongoing upkeep |
The cash gap is real: roughly 50 to 70 dollars a month. Over a year that’s 600 to 850 dollars. Tempting.
Now price the time. A careful first-time setup of backups, monitoring, TLS, and deploys on a bare server is a solid weekend, call it 10 to 15 hours. Then there’s ongoing upkeep: checking backups actually ran, applying patches, responding when something breaks. Call it 2 to 4 hours a month once it’s stable.
If your time is worth 50 euros an hour, that’s 500 to 750 euros of setup, plus 100 to 200 euros a month of upkeep. The first year, self-hosting often costs more in total than the PaaS once you count your hours honestly. After that the server saving pulls ahead, if nothing goes wrong.
The cost nobody puts in the spreadsheet
The line item people forget is the one that hurts most: the untested backup.
Self-hosting is cheap right up until the day your database corrupts and you discover the backup cron job silently failed three weeks ago, or the backup restores but is missing a table. Now the “saving” is gone and you’re rebuilding data by hand, or explaining to users why their data is gone. The PaaS didn’t just save you setup time, it insured you against this. See why an untested backup fails for how this plays out.
That risk is the real difference. Self-hosting isn’t more expensive on an average month. It’s more expensive on the worst month, and the worst month is exactly when you can least afford it.
When self-hosting genuinely wins
Self-hosting is the right call when:
- You already know Linux and enjoy running servers, so the “time cost” isn’t a cost to you.
- Your app is stable and low-drama, so upkeep is light.
- You’ve actually set up and tested backups and monitoring, not just installed the server.
- The monthly saving is meaningful to your budget.
And a PaaS genuinely wins when your time is scarce, your app touches money or personal data where a bad backup is a disaster, or you simply don’t want to be the person who gets paged. For more on where the line sits, see when DIY hosting stops making sense.
Or, we do it for you
We give you the cheap-server economics without the weekend or the worst-month risk: Postgres on Hetzner, with tested backups, point-in-time recovery, monitoring, and a named human on call. You get the low bill and skip the DBA job. See our pricing.
FAQ
Isn’t a €5 server just objectively cheaper than a $50 PaaS?
Only if your time is free and nothing ever breaks. The server is cheaper in cash. Once you add the hours to set up and maintain backups, monitoring, and patches, plus the risk of a bad backup, the first-year total is often close, and sometimes higher. It gets cheaper over time if you keep it running well.
Can’t I just set up backups once and forget them?
That’s the exact trap. A backup job set up once and never checked is how people lose data. Backups fail silently: disks fill, credentials expire, jobs get disabled. The work isn’t the initial setup, it’s the ongoing habit of verifying backups ran and testing that a restore actually works.
How much time does self-hosting really take each month?
Once it’s stable and quiet, often just a couple of hours: checking backups, applying patches, glancing at monitoring. The problem is the unpredictable spikes. One security scramble or one restore drill can eat a whole day. Budget for the average and brace for the occasional bad week.
What’s the cheapest safe option if I don’t want to self-host?
A managed database plus a modest PaaS or a small managed setup. You give up the rock-bottom server price but you buy back your time and offload the backup risk. For many solo founders that trade is worth it, because the thing you’re really short on is hours, not dollars.