Last year, one of our clients received a $2,400 Vercel bill for a marketing site with moderate traffic. Not a complex application — a Next.js site with a blog, a contact form, and about 150,000 monthly visitors. The bill was mostly serverless function invocations and bandwidth overages.
We migrated them to a $20/month Hetzner VPS running Coolify. Same performance. Same zero-downtime deployments. Same automatic SSL. Monthly cost went from $2,400 to $20. That is not a typo.
Coolify is not the right choice for everyone. But for the majority of web applications we build, it delivers 95% of the managed platform experience at 5% of the cost. Here is exactly how we set it up and the pitfalls we learned to avoid.
Let us be clear about what you are trading:
What you gain: Full infrastructure control, predictable costs, no vendor lock-in, unlimited projects on one server, no cold starts on serverless functions.
What you lose: Edge network distribution (Coolify serves from one region), automatic scaling beyond your VPS capacity, and the "someone else handles it" peace of mind.
For 90% of the applications we build — B2B SaaS dashboards, marketing sites, internal tools, API backends — edge distribution is unnecessary and automatic scaling is overengineered. A properly configured $40/month VPS handles 500+ concurrent users without breaking a sweat.
The installation is one command, but production readiness takes more thought:
After installation, here is what we configure before deploying a single application:
1. SSH key-based access only
2. Automatic security updates
3. Firewall configuration
4. Swap space (critical for VPS with limited RAM)
That swap configuration is something most guides skip. Without it, a Next.js build on a 4GB VPS will kill the OOM killer during the webpack compilation phase. We learned this the hard way during a production deployment.
Every client project follows the same Coolify deployment pattern:
Key details that make this production-grade:
depends_on with conditions. The app does not start until PostgreSQL and Redis are actually ready, not just "container is running."The biggest risk of self-hosting is data loss. We automate backups with a simple cron job:
Total cost for daily backups of a 2GB database with 30-day retention: about $0.15/month on Backblaze B2.
We still recommend managed platforms in specific situations:
For everything else — and that covers the vast majority of web applications in existence — a $20-40/month VPS with Coolify delivers the same developer experience as platforms charging 10-100x more.
Here is what our typical client infrastructure costs on Coolify:
| Component | Monthly Cost |
|---|---|
| Hetzner VPS (4 vCPU, 8GB RAM) | $18 |
| Backblaze B2 backups | $0.15 |
| Domain name (amortized) | $1 |
| Uptime monitoring (BetterStack) | $0 (free tier) |
| Total | $19.15 |
Compare that to Vercel Pro ($20/user/month + overages), Railway ($5/service + usage), or Heroku ($25-250/dyno). The math is not even close.
We have been running client applications on Coolify for over two years. Across all projects, our aggregate uptime is 99.94%. The 0.06% downtime was caused by a Hetzner datacenter network issue, not Coolify. For a $20/month setup, that is remarkable.
Fametoll Team
Building digital solutions that drive business growth. Follow our blog for insights on web development, technology trends, and best practices.
Let's discuss how we can help bring your project to life.
Start a Project