Skip to content
Cloud

Self-Hosting vs Cloud: What Saves More Money in 2026?

A realistic cost comparison between self-hosting on Hetzner/OVH and cloud platforms like AWS/GCP/Azure. Includes hidden costs, 5-year TCO, and a decision framework.

A
Abhishek Patel9 min read

Infrastructure engineer with 10+ years building production systems on AWS, GCP,…

Self-Hosting vs Cloud: What Saves More Money in 2026?
Self-Hosting vs Cloud: What Saves More Money in 2026?

Two Decades of Hosting Economics in One Timeline

The self-hosting vs cloud debate is not new -- it is just louder in 2026. If you squint at the last 25 years, you can trace the exact moments each side took a victory lap and the pendulum swung back. Understanding that history is the fastest way to stop having the same argument on Hacker News every eighteen months.

  • 2000-2006: Colo and bare metal rule. Everyone self-hosts because there is no alternative. Rackspace sells you a 1U for $300/month and you drive to the data center to swap a drive.
  • 2006: AWS launches S3 and EC2. Suddenly "rent a server by the hour" exists. Early adopters are laughed at for paying a premium over owning hardware.
  • 2011-2014: The cloud lap. Heroku, DynamoDB, Lambda. Venture money floods in. "Cattle not pets" becomes gospel. Running your own database is positioned as a character flaw.
  • 2018: Dropbox saves $75M by leaving AWS. Their S-1 filing quantifies the premium. PostgreSQL-on-EC2 vs Aurora starts looking expensive.
  • 2020-2022: Egress sticker shock. 37signals publishes their AWS bill ($3.2M/year), then announces they are leaving the cloud. A cohort of mid-stage SaaS companies do the math on Hetzner and never go back.
  • 2024-2026: Hybrid is the default. Almost nobody is pure-cloud or pure-metal anymore. Cloudflare fronts everything. Hetzner runs the steady-state compute. AWS or GCP hold the one managed service you did not want to operate.

That arc explains why in 2026 the honest answer to "self-host or cloud?" is "both, specifically configured." This guide walks through the numbers that drive that answer -- hardware costs, hidden operational taxes, reliability gaps, and the hybrid patterns that actually work in production. I have run a 200-node Kubernetes cluster on AWS and a scrappy 3-server Hetzner setup serving 50,000 daily users. The right answer always depended on traffic shape, team size, and tolerance for 3 AM pages -- never on ideology.

Raw Cost Comparison: Apples to Apples

Let's compare equivalent configurations across providers. All prices are as of early 2026.

Small Application (2-4 vCPU, 8GB RAM)

ProviderConfigurationMonthly CostBandwidth
Hetzner DedicatedAX41 (6-core, 64GB, 2x512GB NVMe)$4520TB included
Hetzner CloudCPX31 (4 vCPU, 8GB)$1520TB included
OVHRise-1 (4-core, 32GB, 2x500GB)$55Unmetered
AWS EC2c6g.xlarge (4 vCPU, 8GB)$100$0.09/GB out
GCPe2-standard-4 (4 vCPU, 16GB)$97$0.12/GB out
AzureB4ms (4 vCPU, 16GB)$121$0.087/GB out
DigitalOceanPremium (4 vCPU, 8GB)$484TB included

On raw compute, self-hosting is 3-8x cheaper. A Hetzner AX41 at $45/month gives you more compute power than an AWS instance costing $100+ per month. But compute cost is only part of the story.

Full Stack Comparison (App + Database + Cache + CDN)

ComponentSelf-Hosted (Hetzner)Cloud (AWS)
Application Server$45 (dedicated)$100 (c6g.xlarge)
Database$0 (runs on same server)$140 (RDS db.r6g.large)
Redis Cache$0 (runs on same server)$40 (ElastiCache t4g.small)
Load Balancer$0 (Nginx on server)$25 (ALB)
CDN$0 (Cloudflare free)$50 (CloudFront)
Monitoring$0 (Grafana + Prometheus)$30 (CloudWatch)
Backups$5 (Hetzner Storage Box)$20 (EBS snapshots + S3)
Bandwidth (1TB/mo)$0 (included)$90 (data transfer out)
Total$50/month$495/month

That's a 10x difference. For a solo developer or small team running a SaaS with modest traffic, self-hosting saves $5,000+ per year. But this comparison ignores the most expensive resource: your time.

The Hidden Costs of Self-Hosting

The monthly server bill is the easy part. Here's what the spreadsheet misses:

Operational Overhead

  • Server maintenance -- OS patching, security updates, kernel upgrades. Budget 2-4 hours per month per server.
  • Monitoring setup -- Prometheus, Grafana, Alertmanager don't install themselves. Initial setup takes 1-2 days. Ongoing tuning is 2-4 hours per month.
  • Backup management -- configuring automated backups, testing restores (you do test restores, right?), managing retention. 4-8 hours per month.
  • Security -- firewall rules, fail2ban, SSH hardening, TLS certificate rotation, vulnerability scanning. This never ends.
  • On-call burden -- when your Hetzner server's disk fails at 2 AM, nobody pages a SRE team. You're the SRE team.

If your time is worth $100/hour (conservative for a senior engineer), 15 hours/month of ops work costs $1,500 -- more than the AWS bill you were trying to avoid.

Reliability Gaps

A single Hetzner server gives you approximately 99.9% uptime -- about 8.7 hours of downtime per year. AWS's managed services (RDS, ElastiCache, ALB) offer 99.95-99.99% with automatic failover. If an hour of downtime costs your business $500+ in lost revenue or customer trust, the cloud premium pays for itself.

Scaling Constraints

Self-hosted servers don't auto-scale. If your SaaS lands on Hacker News and traffic spikes 50x, a Hetzner server falls over. On AWS, an Auto Scaling Group spins up additional instances in under a minute. For businesses with unpredictable traffic, this elasticity has real value.

Watch out: Hetzner and OVH don't have SLAs comparable to cloud providers. Hetzner's SLA guarantees 99.9% network availability but doesn't cover hardware failures with the same urgency as AWS. Budget for occasional multi-hour outages during hardware replacement.

The Hidden Costs of Cloud Hosting

Cloud isn't innocent either. These costs sneak up on every team:

  • Data transfer -- AWS charges $0.09/GB for outbound data. A media-heavy site serving 5TB/month pays $450 just in bandwidth. Hetzner includes 20TB for free.
  • Managed service premiums -- RDS costs 40-60% more than running PostgreSQL yourself on EC2. You're paying for automated backups, patching, and failover.
  • NAT Gateway tax -- $32/month per AZ plus $0.045/GB processed. A typical 3-AZ setup costs $96/month before a single byte of application traffic.
  • Vendor lock-in -- using DynamoDB, Aurora, or Lambda deeply ties you to AWS. Migration costs grow exponentially with adoption.
  • Complexity creep -- teams add services because they're available, not because they're needed. A simple app ends up touching 15 AWS services, each with its own billing model.

Outages I Have Actually Debugged on Each Side

Abstract reliability discussions are not useful. Specific incidents are. These all happened to me or to teams I have consulted with between 2022 and 2025.

Hetzner: A Single Bad Drive Killed a Whole Weekend

A single NVMe drive in a Hetzner AX51 started throwing ECC errors on a Saturday night. The RAID-1 mirror masked it to the application, but MD stopped accepting writes when both drives reported inconsistent sectors. Postgres went read-only. Recovery required a ticket to Hetzner's DC-hands team (45 min response), a replacement drive (90 min install), and a resync (3 hours). Total downtime: five hours. On RDS, this would have been a 60-second failover the on-call engineer never woke up for.

AWS: NAT Gateway Bill Spike Nobody Predicted

A Kubernetes cluster with private-subnet workers pulling Docker images from Docker Hub. Every pod start pulled through the NAT Gateway at $0.045/GB processed. During a rolling deploy that restarted 400 pods, the NAT processed 180 GB of image layers in an hour. The next bill had an extra $620 on it that nobody could explain until we enabled VPC Flow Logs. The fix was a VPC endpoint for ECR and a pull-through cache, saving roughly $4,000/month.

Hybrid: DNS TTL Burned 40 Minutes

During a migration from AWS ALB to Hetzner origins, the DNS cutover was supposed to be instant. Cloudflare-proxied records (orange cloud) flip within seconds, but the team had accidentally gray-clouded one subdomain, which exposed Cloudflare's 300-second TTL to end users. 40 minutes of partial-site outage for the long-tail of resolvers. Rule of thumb: always proxy through Cloudflare during DNS cutovers, never rely on low TTLs alone.

When Self-Hosting Wins

  1. Predictable traffic -- your load doesn't spike 10x unexpectedly. You can provision for peak and accept slight over-provisioning.
  2. Bandwidth-heavy workloads -- video streaming, file hosting, CDN origins. Cloud data transfer costs obliterate any compute savings.
  3. Small team, low complexity -- 1-3 developers who are comfortable with Linux administration. The ops overhead is manageable.
  4. Cost is survival -- bootstrapped startups where $400/month vs $50/month is the difference between 12 months of runway and 3.
  5. Data sovereignty -- certain regulations require specific geographic hosting or prohibit US-owned cloud providers.

When Cloud Wins

  1. Unpredictable traffic -- viral growth, seasonal spikes, or event-driven loads that vary 10x or more.
  2. Compliance requirements -- SOC 2, HIPAA, PCI-DSS. Cloud providers offer pre-certified infrastructure. Self-certifying bare-metal is expensive and time-consuming.
  3. Team lacks ops expertise -- if nobody on your team has managed production Linux servers, cloud managed services prevent costly mistakes.
  4. Rapid scaling -- growing from 1,000 to 100,000 users in months. Adding servers on Hetzner takes hours to days. Cloud scales in minutes.
  5. Global distribution -- multi-region deployment across continents. Cloud providers have dozens of regions. Self-hosting in multiple data centers is operationally painful.

The Hybrid Approach: Best of Both

The smartest teams in 2026 aren't choosing sides -- they're combining both:

  • Self-host the baseline -- your steady-state compute (app servers, databases) on Hetzner or OVH at predictable costs.
  • Cloud for burst and managed services -- use Cloudflare for CDN and DDoS protection (free tier is generous). Use AWS for specific managed services you'd rather not operate (SES for email, S3 for object storage).
  • Cloudflare Workers for edge logic -- authentication, redirects, A/B testing at the edge, without provisioning origin servers.

Pro tip: Tools like Coolify, Dokku, and CapRover make self-hosting almost as easy as PaaS platforms. Coolify in particular gives you a Vercel-like deployment experience on your own servers. If your main objection to self-hosting is operational complexity, these tools eliminate 80% of it.

5-Year Total Cost of Ownership

ScenarioSelf-Hosted (5yr)Cloud (5yr)Savings
Solo dev, simple SaaS$3,000$29,700$26,700 (self-host)
Small team (3 devs), moderate traffic$12,000 + 900 hrs ops$42,000Depends on hourly rate
Growth stage, 100k users$36,000 + 2,400 hrs ops$72,000Break-even at $15/hr ops
Enterprise, compliance needs$60,000 + audit costs$120,000Cloud wins (audit savings)

The breakeven point depends heavily on how you value operations time. If you have dedicated ops engineers already on payroll, self-hosting is almost always cheaper. If ops time comes from your product engineers, the effective cost is much higher.

Frequently Asked Questions

Is Hetzner reliable enough for production?

Yes, with caveats. Hetzner's network uptime is excellent -- comparable to major cloud providers. Hardware failures happen but are handled within hours. The main gap is automatic failover: if a server dies, you're responsible for recovery. Mitigate this with redundant servers, automated health checks, and DNS failover using Cloudflare. Thousands of SaaS companies run production on Hetzner without issues.

How much does self-hosting really save per year?

For a typical small SaaS application, self-hosting on Hetzner costs $50-150/month versus $400-800/month on AWS. That's $3,000-7,800/year in savings on infrastructure alone. However, you need to subtract the cost of operations time -- typically 10-20 hours per month. If that time costs more than the savings, cloud is cheaper.

Can I self-host and still pass SOC 2 audits?

Technically yes, but it's significantly harder. SOC 2 requires documented controls for physical security, access management, and incident response. Cloud providers inherit many controls from their own certifications. Self-hosting means you need to document and demonstrate every control yourself. Most startups pursuing SOC 2 find cloud hosting saves 100-200 hours of audit preparation.

What about DigitalOcean or Linode as a middle ground?

DigitalOcean and Linode (now Akamai) offer a middle ground: cloud-like simplicity with more predictable pricing. They cost 50-70% less than AWS for equivalent compute and include bandwidth. The tradeoff is a smaller service catalog -- no equivalents to Lambda, DynamoDB, or SQS. For straightforward web applications, they're excellent choices that avoid both cloud bill shock and bare-metal ops burden.

How do I migrate from cloud to self-hosted?

Start with stateless application servers -- containerize your app and deploy on Hetzner using Docker or Kubernetes. Keep your database on managed cloud services initially (the hardest component to self-manage). Migrate the database last, after you've built confidence with self-hosted operations. Use Cloudflare as your CDN and DNS provider for zero-downtime migration via DNS cutover. Budget 2-4 weeks for a complete migration.

Does self-hosting work for globally distributed users?

It's harder but feasible. Use Cloudflare's global CDN for static assets and edge caching. For dynamic content, you'll need servers in multiple regions -- Hetzner has data centers in Germany, Finland, the US, and Singapore. For true global coverage, a hybrid approach works better: self-host in your primary region and use cloud provider edge locations for global distribution.

Choose Based on Your Constraints, Not Ideology

The self-hosting vs cloud debate generates strong opinions, but the right answer is boring and pragmatic. If you're a bootstrapped solo developer with Linux experience and predictable traffic, self-hosting on Hetzner saves real money. If you're a funded startup scaling fast with compliance requirements and no dedicated ops team, cloud is worth the premium. Most teams benefit from a hybrid: self-host the predictable baseline, use cloud for burst capacity and managed services, and put Cloudflare in front of everything. Don't optimize for ideology. Optimize for your team's constraints, your budget, and your tolerance for 3 AM pages.

A

Written by

Abhishek Patel

Infrastructure engineer with 10+ years building production systems on AWS, GCP, and bare metal. Writes practical guides on cloud architecture, containers, networking, and Linux for developers who want to understand how things actually work under the hood.

Related Articles

Enjoyed this article?

Get more like this in your inbox. No spam, unsubscribe anytime.

Comments

Loading comments...

Leave a comment

Stay in the loop

New articles delivered to your inbox. No spam.