Overview
“You can run production workloads on a €5/month VPS” sounds like a lie from 2010. But with modern lightweight software and sensible architecture, it’s genuinely achievable for many use cases. This guide sets realistic expectations and practical strategies.
What €5/Month Gets You
The baseline budget VPS across providers:
| Provider | Plan | vCPU | RAM | Storage | Notes |
|---|---|---|---|---|---|
| Hetzner | CX11 | 1 | 2 GB | 20 GB NVMe | Best price/performance |
| Netcup | RS 1000 | 1 | 2 GB | 20 GB SSD | Good for EU users |
| Oracle Free | Always Free | 1-4 | 6-24 GB | 200 GB | ARM, requires juggling |
| Contabo | VPS S | 2 | 4 GB | 50 GB SSD | No NVMe |
These specs exceed what most shared hosting offered 10 years ago. The key is using lightweight software and not wasting resources.
What You Can Realistically Run
On a Single €5 VPS
- Web applications: Small to medium Node.js, Python, or Go applications
- Static sites: Next.js, Gatsby, Hugo — easily handled
- Databases: PostgreSQL or SQLite for low-to-medium traffic
- Self-hosted services: Home automation, bookmark managers, pastebins, link shorteners
- VPN servers: WireGuard uses almost no resources
- CI/CD runners: GitHub Actions runners, small GitLab runners
- Personal cloud: Nextcloud (with storage constraints)
What You Cannot Realistically Run
- High-traffic WordPress (use managed WordPress hosting instead)
- Large language models (unless using quantization + minimal setup)
- Video transcoding (Docker + ffmpeg is resource intensive)
- Multiple concurrent heavy applications
Software Choices That Matter
Your VPS resources are finite. Choose software that respects that:
Instead of Nginx + Node.js, Consider:
- Static site generators — Hugo, Zola, Astro build at deploy time
- Caddy — simpler than nginx, automatic TLS, less memory
- Deno Deploy / Cloudflare Workers — offload to edge for heavy apps
Instead of PostgreSQL, Consider:
- SQLite — surprisingly capable, zero configuration, minimal resource usage
- Redis — for caching (1 MB RAM baseline)
- SurrealDB — modern, lightweight, single-file
Instead of Ubuntu Server, Consider:
- Alpine Linux — minimal base, tiny RAM footprint, fast boot
- Debian minimal — stable, known, minimal install
- Arch Linux — always fresh packages, but requires maintenance
Container Overhead is Real
Docker adds ~50-100 MB RAM overhead per container. Running 5 containers on a 2 GB VPS means 500 MB just for Docker infrastructure. Use Docker Compose sparingly on small VPS plans.
Practical Architecture for €5/Month
Option 1: Single Server with Coolify
Deploy Coolify on a Hetzner CX11. It handles:
- GitHub/GitLab integration
- Automatic TLS
- Docker container management
- Database provisioning (SQLite, PostgreSQL)
This is the “Heroku for €5” approach. Your single VPS runs multiple apps via Docker containers managed by Coolify.
Option 2: Bare Metal (No Docker)
Skip Docker entirely. Install packages directly:
sudo apt install caddy postgresql sqlite3
Running Caddy + PostgreSQL + your app (compiled binary) directly uses far less RAM than Docker + containers.
Option 3: Hybrid
- €5 VPS for lightweight services: VPN, DNS sinkhole (Pi-hole), monitoring (Uptime Kuma), RSS reader
- Separate €5 VPS for your main application
Two cheap VPS is often better than one expensive one for isolation and reliability.
What to Avoid
Don’t Run These on €5 VPS
- cPanel / Plesk — control panels are resource monsters
- Multiple databases — each PostgreSQL instance uses 100+ MB baseline
- Elasticsearch — needs 2 GB minimum for any serious use
- Jenkins — heavy Java overhead
- Two heavy Node.js apps — each app with dependencies easily hits 200-400 MB
Don’t Expect
- High availability — one VPS = one point of failure
- Fast compiles — 1 vCPU is slow for builds
- Large storage — 20 GB fills quickly (OS ~5 GB, Docker images ~5 GB, your data ~10 GB)
- Massive traffic — 20 TB bandwidth sounds infinite but a popular link can burn through it
Budget Optimization Tips
Use SQLite by Default
SQLite is the most deployed database in the world. For most applications, it performs as well or better than PostgreSQL, uses a fraction of the RAM, and has no daemon to manage.
-- Your existing PostgreSQL code
SELECT * FROM users WHERE email = 'aaron@example.com';
-- SQLite handles this identically
-- With better performance for reads
-- And similar performance for writes at this scale
Use a Static Site Generator
If you’re building a website or blog, use Hugo or Astro. Build locally or in CI, deploy the static files to your VPS. No runtime server needed — just Caddy serving static files.
Monitor Resources
Install htop and check regularly:
sudo apt install htop
htop
Set up monitoring with Uptime Kuma on the same VPS (it’s lightweight) to get alerts when resources are running low.
Clean Up Docker Regularly
Docker images accumulate:
# Remove unused images, containers, and networks
docker system prune -a -f
# Remove dangling images only (faster)
docker image prune -f
Recommended Budget Stack
| Layer | Choice | Rationale |
|---|---|---|
| VPS | Hetzner CX11 | Best value, NVMe storage |
| OS | Ubuntu LTS minimal | Stability + community |
| Web server | Caddy | Auto-TLS, simple config |
| Database | SQLite (default), PostgreSQL (if needed) | Zero config, low RAM |
| Container management | Coolify (optional) | Heroku-like UX for self-host |
| Monitoring | Uptime Kuma | Lightweight, self-hosted |
| Backups | Restic + external storage | 30-second setup |
Realistic Performance Expectations
A well-configured €5 VPS should handle:
- 100-500 daily visitors for a typical web app
- 10-20 concurrent users without slowdowns
- Background jobs (cron, small queues) without impact
- Git deployments via CI/CD pipeline
If you’re exceeding these, consider:
- Adding a CDN (Cloudflare free tier) to offload static assets
- Moving to a €10-15 VPS for more headroom
- Offloading heavy services to dedicated free tiers (Oracle Free for databases, etc.)
Summary
Self-hosting on €5/month is viable for:
- Personal projects and portfolios
- Small business websites with modest traffic
- Developer infrastructure (VPN, CI runners, monitoring)
- Learning and experimentation
It’s not viable for:
- High-traffic production applications
- Businesses requiring SLA guarantees
- Applications with heavy compute or storage needs
The key is choosing lightweight software, avoiding Docker overhead where possible, and knowing when to scale up.