The Hidden Costs of Self-Hosting: A Realistic Monthly Bill
Cloud

The Hidden Costs of Self-Hosting: A Realistic Monthly Bill

The invoice is the easy half, and it's small. Line it up from published rates, then look at the half no invoice tracks — the migration weekend, the patching, the on-call, the things you now own that used to be someone else's problem.

Published August 29, 202611 min readUpdated Sep 6, 2026

Written by · Full-Stack Agentic AI Software Engineer — AI Agents, Automation & Revenue Systems for GTM/RevOps teams

In brief

What does self-hosting actually cost once you count everything, not just the server invoice?

The line-item bill, modelled from published rates, is small — a Contabo Cloud VPS 4 at €5.50/month plus object storage and email that likely sit inside their free tiers for a modest workload. The costs that don't show up on any invoice are bigger and harder to price: the migration weekend, ongoing patching and monitoring, and being the one who gets paged. Self-hosting doesn't remove cost, it relocates it from a monthly line item to your own calendar.

  • The modelled line-item bill is small: roughly €5.50-6/month for the VPS, with object storage and email likely inside free tiers for a modest workload
  • Free tiers aren't zero risk — they're a ceiling, and this post shows exactly where each one starts charging, from the vendors' own pricing pages
  • Time is the real cost: the migration itself, ongoing patching, and reading monitoring dashboards nobody is paid to read
  • On-call moves from a platform's infrastructure team to whoever owns the box, and that's a genuine shift, not a footnote
  • This isn't an argument against self-hosting — it's the honest other half of the migration model this cluster's pillar post already laid out

Evidence notes

Contabo Cloud VPS 4 pricing

4 vCPU, 8 GB RAM, 100 GB SSD, €5.50/month for the first 24 months — verified on Contabo's own pricing page, September 2026

Cloudflare R2 free tier and overage

Free tier: 10 GB-month storage, 1M Class A ops, 10M Class B ops, zero egress at any tier. Past that: $0.015/GB-month standard storage, $4.50/million Class A ops, $0.36/million Class B ops — checked September 2026

Resend free tier and overage

Free tier: 3,000 emails/month, capped at 100/day, permanent and card-free. Paid starts at $20/month for 50,000 emails — checked September 2026

Continue with purpose

Ask anyone who self-hosts what it costs and they'll quote the server price, because that's the number they can point at. It's also the least interesting number in the whole picture. Build the line-item bill from published rates and it comes out small — small enough that the actual story is everything that never shows up on an invoice at all.

The migration math itself is covered in moving a SaaS off Vercel to a €5.50 VPS, and this post deliberately doesn't repeat it. Folding "the bill" and "the real cost" into one post buries the second under the first. This is the counterweight: line items first, from vendor pricing pages, then the parts nothing invoices. For the operations playbook that sits alongside the hidden costs of self-hosting, see XenGrowth.

What's actually on the invoice each month?

Modelling a small SaaS on a single server — one Contabo Cloud VPS 4, plus object storage and email sized for a modest, real workload rather than a hypothetical maximum — the line-item bill is genuinely short.

Line item

What it covers

Modelled monthly cost

Contabo Cloud VPS 4

4 vCPU / 8 GB RAM / 100 GB SSD, promotional rate, first 24 months

€5.50 (≈ $6)

Automated backups (typical add-on)

Scheduled server-level snapshots

roughly €1.50-3, provider-dependent

Cloudflare R2 (modelled at 20 GB stored)

Object storage, past the 10 GB free tier

20 GB × $0.015/GB-month ≈ $0.30

Resend (modelled at under 3,000 emails/month, under 100/day)

Transactional email, inside the free tier

$0

Cloudflare (DNS/CDN/WAF)

Free tier, unmetered for standard web traffic

$0

Domains (amortized)

Registration/renewal — unrelated to the hosting choice

varies, small

Add it up and the hosting-specific total lands somewhere around €7-9/month for this modelled workload — the VPS, the backup add-on, and a small storage overage, with email contributing nothing because the modelled volume sits inside Resend's free tier. That's a model built on a stated assumption about workload size, not a claim about what any particular app will actually spend; a busier app pushes past these free tiers faster than it looks.

Are the free tiers actually free, or just free for now?

Free right now, and worth watching rather than assuming permanent. R2's free tier covers 10 GB-month of storage plus 1 million Class A and 10 million Class B operations, with zero egress fee at every usage level — that last part is the actual reason R2 gets picked over S3-compatible alternatives, since egress is where S3-style billing usually turns painful. Resend's free tier is tighter: 3,000 emails a month, but capped at 100 a day, which is a ceiling a single busy signup or password-reset day can hit even in a month that's nowhere near 3,000 total.

Service

Free tier ceiling

Cost past that

Cloudflare R2

10 GB-month storage, 1M Class A / 10M Class B ops

$0.015/GB-month storage, $4.50/M Class A ops, $0.36/M Class B ops, $0 egress always

Resend

3,000 emails/month, 100/day cap

$20/month for 50,000 emails on the paid tier

Cloudflare CDN/WAF/DNS

Unmetered for standard web traffic

Video/large-file hosting is against ToS regardless of tier

None of these ceilings are close for a small, single-tenant SaaS. But "free tier" is doing a lot of quiet work in every self-hosting cost comparison, including the model above — if usage tripled, the invoice would still be small, but it wouldn't still show a $0 on those two lines, and a real plan should say so instead of pretending free tiers are a permanent floor.

So where does the real cost actually go?

Into time, mostly, and time doesn't arrive as a line item you can screenshot, which is exactly why so many "I saved money by self-hosting" posts underreport it. Three buckets cover most of it: the migration itself, ongoing maintenance, and being the answer to "who gets paged." There is a longer treatment of the operations side of this in The XenGrowth resource library.

  1. The migration — provisioning, hardening the box, moving the database, testing, cutting over DNS, and watching for errors afterward

  2. Ongoing maintenance — patching the OS, updating the deploy layer, rotating backups, occasionally reading logs when something looks slightly off

  3. Being the answer to "who gets paged" — which used to be a platform's infrastructure team and is now whoever set the alert thresholds

None of these have a clean dollar figure, and manufacturing one — "my time is worth $X/hour, therefore self-hosting cost me $Y" — would be more precise-looking than honest. What can be said without hedging is the shape of where the time goes: hardening the box before anything else touches it (covered fully in how to secure a fresh VPS), the database migration and its verification window, and the DNS cutover — in that order, and each one reliably takes longer in practice than it looks on paper.

What does owning on-call actually mean, day to day?

It means an uptime monitor pings the app on a schedule, and if it doesn't answer, the alert goes to whoever owns the box instead of into a platform's incident queue that someone else is staffed to watch. Most months, nothing happens. The cost isn't the incidents — it's the standing obligation, the fact that you can't fully check out from infrastructure the way you could when a managed platform owned that surface. That's a real cost even in months where nothing ever fires, and it's the part most self-hosting writeups skip past.

  • A managed platform's incident response is invisible by design — that invisibility is itself a feature, and it's easy not to register it until it's gone

  • Self-hosting means choosing your own alert thresholds, which means false alarms are your fault and missed alarms are also your fault

  • There's no shared on-call rotation for a one-person setup, which is fine at small scale and stops being fine the moment it isn't

  • The upside is real: you end up understanding your own failure modes in a way a managed platform's abstraction was specifically built to make unnecessary

Self-hosting doesn't make cost disappear. It moves it from a number you can point to on an invoice to a number you have to notice yourself — hours, attention, the weight of being the one who's on call. Both are real. Only one of them shows up on a bill.

So is it actually cheaper, all in?

On the invoice alone, for the traffic shape this model assumes, yes — by a wide margin against a comparable managed platform's Pro-tier base price alone, before any of its own overage. Counting time honestly narrows that gap, but for most solo operators it doesn't close it, mostly because the time cost is front-loaded into one migration window and thins out fast afterward, leaving patching and monitoring at something closer to minutes a week than hours.

Where the trade stops being obviously good is if your time is worth more, per hour, than the gap between the two bills divided by the hours self-hosting actually takes. For a lot of solo founders that math still favors self-hosting, because the hours are concentrated up front. For a funded team whose payroll already covers someone to own infrastructure, the math flips just as fast the other way — and paying the platform premium is the more rational call there, not a lesser one. XenGrowth on governed AI marketing workflows covers the AI agents and marketing automation side of this.

What's the actual difference against staying on a managed platform?

It's worth stating plainly what the comparison actually is, rather than leaving it implied. A managed platform's Pro-tier seat price alone runs well past the entire modelled bill in this post, before any of that platform's own metered overage even enters the picture. That gap is real and it's the reason this whole cluster of posts exists. But a gap on the invoice isn't the same claim as a gap in total cost, and conflating the two is exactly the mistake this post is trying to correct for.

The honest version: the invoice gap is large and immediate. The time-cost gap is smaller than it looks and mostly front-loaded into the migration itself. Whether the two together add up to a genuinely better deal depends on how much you value the hours, and on whether the traffic shape is the steady, predictable kind this whole model assumes in the first place — spiky, unpredictable traffic changes the math in the platform's favor regardless of the invoice.

What's the cost of things going wrong, not just things going right?

Every number above assumes a boring month — nothing crashes, nothing needs restoring, no security patch is urgent enough to interrupt anything else. That's a real assumption, and it's worth naming instead of leaving implicit, because the modelled bill looks very different across a year that includes one bad week than across twelve boring ones.

  • A failed restore test costs nothing but the hour it takes to run — a failed restore during a real incident costs the entire outage window on top of the data loss it was supposed to prevent

  • A missed security patch usually costs nothing at all — until it's the one that mattered, at which point the cost is whatever the resulting incident actually costs, not a subscription line item

  • A misconfigured alert threshold costs a little sleep from false positives, or a missed real incident from being tuned too loose — both are real costs with no dollar figure attached

  • None of these are priced into the modelled bill above, because they're contingent, not recurring — but contingent isn't the same as zero, and a fair account of self-hosting's real cost has to say so

What do you actually own now that you didn't before?

Ownership is the honest word, and it cuts both ways. You own the OS patch schedule now, which means a kernel CVE is your problem to notice, not a background item on a platform's infrastructure team's board. You own the backup restore process — which is worth testing deliberately, once, specifically so the first real test isn't during an actual emergency. You own the decision of when to upgrade the box, because nothing upgrades it for you the way autoscaling silently would have. None of these are individually hard. Collectively, they're a checklist that used to not exist for you at all. On AI search, GEO and discovery specifically, XenGrowth on building one SEO and GEO content system is worth reading.

  • OS and security patching — scheduled, not automatic, which means it only happens if it's on the calendar

  • Backup verification — a backup nobody has restored from is a theory, not a backup

  • Capacity planning — deciding when 4 vCPU and 8 GB stops being enough is now a judgment call, not a slider a platform moves for you

  • Dependency and base-image updates for the deploy layer, the reverse proxy, and every container image the app builds from

What's actually worth deciding before the migration weekend, not during it?

Don't self-host to save money if saving money is the only reason. It works, on the modelled numbers above, but it's a slow, unglamorous kind of working — a few dollars a month, quietly, adding up over a year. The reason it's worth it for the operators who stick with it usually isn't the number. It's understanding, container by container, exactly what the app depends on to stay up — a kind of knowledge a managed platform is specifically designed to make unnecessary. If that tradeoff doesn't interest you on its own terms, the invoice savings alone probably aren't enough to justify the weekend it costs to get there.

Write down, before you start, which costs you're willing to own and which you're not. That decision framework is laid out properly in my rule for deciding what to self-host, and it's worth doing that exercise before the migration, not during it — during it, the pressure to get the app back online makes you say yes to owning everything. Decide in advance which pieces you'd rather keep paying someone else for, regardless of price. Email is a common one people never seriously consider self-hosting. Your list will look different, and that's fine, as long as you actually write it down instead of discovering it under duress at 2am.

The invoice was never the whole story — it's just the part that fits neatly into a screenshot. If you're weighing this trade for your own product and want a second opinion on where the real costs would land, that's exactly the kind of audit I take on through services.

Further reading from XenGrowth

Where this work meets go-to-market

If the hidden costs of self-hosting is part of a growth programme rather than a standalone build, XenGrowth's operator guides is the companion reading.

What's missing from that comparison?

Four questions on the lines people leave out when they compare a VPS bill to a platform bill. Most of them aren't hosting costs at all.

1 / 4
The plan is one VPS. What's the most commonly forgotten second line?

Apply this article

How to turn insights into execution

A practical sequence for teams turning concepts into production outcomes.

Self-HostingCloud CostsVPSInfrastructureDevOpsSaaS Economicscloud

Audit your current state

Map the bottlenecks and constraints connected to the article’s core problem.

Choose one bounded change

Test the most useful recommendation on one workflow before widening the scope.

Measure what changed

Keep the parts that improve the work, document what failed, and make the next decision from evidence.

Next step

Need help applying this in your stack?

I can translate these patterns into a concrete implementation plan for your team.

Discuss implementationBack to blog

Replies usually within 24 hours.

Next Steps

Continue reading

10 Mistakes That Break a Self-Hosted SaaS

None of these ten show up as a single dramatic outage. They show up as a disk that quietly fills, a rollback that turns out to be impossible, a backup nobody ever restored. Here's the mechanism behind each one, and the fix.

Navigate

Moving a SaaS Off Vercel to a €5.50 VPS: What the Numbers Actually Look Like

Nobody publishes their real Vercel invoice, so most migration posts trade in vibes instead of arithmetic. This one builds the comparison from Vercel's and Contabo's own published rates, states every assumption out loud, and shows exactly where the two lines cross.

Navigate

The Backup Strategy Every Self-Hosted SaaS Needs (3-2-1, Applied)

3-2-1 is easy to nod along to and easy to get wrong in the specific way that only shows up on the day you need it. Here's what it actually means for one VPS running Postgres and Docker volumes, not the generic version you've already skimmed past twice.

Navigate

My Rule for Deciding What to Self-Host and What to Keep Paying For

Self-hosting everything is a bad idea, and I can point to the exact service where I decided that on purpose. Here's the actual rule I use, not a survey of options — and the one counterexample that explains why the rule exists.

Navigate

The Simplest Production Architecture for a Bootstrapped SaaS

One box, a handful of managed pieces around the edges, and a very short list of things you're not allowed to build yet. Here's the architecture, priced out to $20 a month, and the exact signal that tells you when to add each thing you skipped.

Navigate

My Free Monitoring Stack for Self-Hosted Apps

Vercel gives you monitoring whether you ask for it or not. A VPS gives you a blank terminal and the assumption you'll figure it out. Here's what to actually watch on a self-hosted box, with tools that cost nothing, and why watching from the box itself is the one setup that will lie to you.

Navigate

Should Your Database Live on the Same VPS as Your App?

The pitch for co-location is real: no network hop, no egress bill, one box to back up. So is the failure mode — one OOM event takes the app and the database down together, because they were never separate to begin with.

Navigate

What Happens If Your VPS Dies? My Disaster Recovery Plan

"The server died" isn't one scenario, it's at least five, and they don't require the same response. A disk failure and a compromised box both end with the same VPS gone, but only one of them means your backups might be compromised too. Here's the plan for each, written down before any of them happen, not after.

Navigate

Best VPS Providers for Coolify: Contabo, Hetzner and the 2026 Price Shift

Every 'best VPS for Coolify' post still says Hetzner is the cheap option. That stopped being reliably true in June 2026 for two of its most popular tiers, and nobody's updated the recommendation yet.

Navigate

The 80/20 Self-Hosting Stack for Indie Hackers

Most self-hosting advice is all-or-nothing: run everything yourself, or don't bother. Neither is right. Here's the specific 20% of self-hosting effort that actually delivers 80% of the savings, and the parts not worth touching.

Navigate