Why Self-Hosting Your SaaS Stack Isn't Crazy (If You Do It Right)
Running €2,440 MRR worth of SaaS products on a €40/month server. The real costs, risks, and technical details of self-hosting.
I run €2,440 MRR worth of SaaS products on a single €40/month VPS. My entire operational stack costs less than most people pay for Notion + Vercel + Heroku.
The Cost Comparison
| Service | Cloud Option | Cloud Cost | Self-Hosted |
|---|---|---|---|
| CMS | Ghost Pro | €25/mo | Ghost (Docker) |
| Wiki | Notion Team | €8/user | Outline |
| Project Mgmt | Linear | €8/user | Vikunja |
| File Storage | Dropbox | €12/mo | FileBrowser |
| Search | Algolia | €30/mo | ElasticSearch |
| Reverse Proxy | Cloudflare Pro | €20/mo | Caddy |
| Monitoring | Datadog | €15/mo | Custom scripts |
| Mailgun | €35/mo | Microsoft Graph | |
| Total | ~€195/mo | €40/mo |
Annual savings: €1,860. Over 3 years: €5,580.
My Actual Stack
One VPS: 8GB RAM, 4 vCPUs, 200GB SSD.
- Caddy — reverse proxy with auto-HTTPS
- Docker — every service containerized
- Ghost — blog (you're reading this on it)
- Outline — internal wiki
- Vikunja — project management
- ElasticSearch — full-text search
- FileBrowser — file management
- Custom Python — email, social posting, monitoring
Total RAM: ~5.2GB. CPU usually at 2-3%. The server is bored.
The Risks
Server Goes Down
Automated daily backups to OneDrive. Full rebuild from backup in under 2 hours. All Docker configs in git.
Security Breach
- UFW firewall — only ports 22, 80, 443
- SSH key-only authentication
- All services behind Caddy (no direct port access)
- Encrypted secrets vault (AES-256)
- Fail2ban + automatic security updates
As secure as AWS? No. Secure enough for a blog and project manager? Yes.
Bus Factor
Everything documented. Docker compose files, Caddy config, backup scripts — all in git with READMEs.
Scaling
I serve hundreds of users, not millions. A single VPS handles it with headroom. When I need to scale, I'll migrate the specific service that needs it.
When Self-Hosting Makes Sense
- You're technical (Docker and SSH are in your vocabulary)
- You're bootstrapping (every €100/month matters)
- You want control (no vendor lock-in, no surprise pricing)
- Your scale is modest (under 10,000 users)
- You value learning
When It Doesn't
- You're not technical
- You need five-nines uptime
- You're scaling fast
- Compliance requires it (SOC2, HIPAA, PCI)
- Your time is worth more than the savings
The 30-Minute Setup
- Get a VPS — Hetzner, Contabo, DigitalOcean. €10-40/month.
- Install Docker —
apt install docker.io docker-compose-v2 - Install Caddy — automatic HTTPS, simple config
- Point DNS — A records for subdomains → VPS IP
- Docker compose up — each service gets its own file
- Set up backups — daily cron to offsite storage
- Set up firewall — UFW, allow only SSH + HTTP + HTTPS
The Bottom Line
Self-hosting trades money for time and expertise. If you have the skills and modest scale, it's one of the highest-leverage things you can do as an indie builder.
I save €1,860/year. I have full control. I understand my infrastructure. When something breaks, I know where to look.
That's not crazy. That's engineering.
Considering open-sourcing my Docker setup. Let me know if that'd be useful.