Most SaaS founders overpay their cloud provider without noticing. The “cloud tax” eats your margins before you even find product-market fit.
We have been conditioned to believe that unless our small CRUD app runs on a multi-region, auto-scaling AWS EKS cluster, we are doing it wrong.
That is a lie designed to keep you paying for complexity you do not need.
The architecture of a trap
It starts innocently enough. You sign up for AWS or GCP because they give you $1,000 in credits.
You spin up an RDS instance for your database, a few S3 buckets for storage, and maybe a managed Kubernetes service because it feels “professional.”
Then the credits run out.
The bill after the credits
Suddenly you are paying $200 a month for a database that is 99% idle. You are paying for NAT gateways, provisioned IOPS and “management fees” for services that could easily run on a cheap VPS.
You are stuck in a web of proprietary APIs and IAM roles that need a full-time DevOps engineer just to update an environment variable.
A golden cage
Managed services feel like a superpower at the start, but they become a golden cage as you scale. The complexity overhead alone can slow your development velocity to a crawl.
When I look at how AI is changing traditional development, it is clear we need to move faster, not get bogged down in infrastructure molasses.
Enter Coolify: Heroku’s open-source soulmate
The tool I have moved my entire stack to is Coolify.
Coolify is an open-source, self-hostable alternative to Vercel, Heroku and Netlify. It gives you the same “git push to deploy” experience, but it runs on your own hardware.
Whether you have a small ARM VPS on Hetzner (the CAX11 starts around €6/month) or a free ARM instance on Oracle Cloud, Coolify turns it into a private PaaS.
A mindset shift
I recently wrote about how Coolify and Docker are changing SaaS hosting, but the shift goes deeper than a tool change. It is a move toward technical sovereignty.
Why Coolify works for engineers
- Zero vendor lock-in. Your configurations are stored on your server. If Coolify disappeared tomorrow, your Docker containers would keep running.
- Automatic SSL. It handles Let’s Encrypt out of the box. No more messing with Nginx configs or certbot.
- Database management. You can spin up Postgres, MySQL, Redis or MongoDB in one click. They run as containers on your server, so you pay $0 in additional managed service fees.
- Pull request deployments. It creates temporary environments for every PR, like Vercel, but without the “team seat” tax.
The magic of ARM (Graviton and OCI)
Once you have self-hosting in place, ARM is the multiplier that takes the bill from “cheap” to “almost free.” Stop renting x86 and start renting ARM.
What AWS says about Graviton
AWS says its Graviton instances cost up to 20% less than comparable x86 instances.
Oracle’s Always Free tier
The real “cheat code” right now is Oracle Cloud Infrastructure (OCI). Its “Always Free” tier gives you 2 ARM Ampere A1 OCPUs and 12 GB of RAM at no cost, forever.
(Oracle halved this from 4 OCPUs / 24 GB in mid-2026, so size accordingly.) I can run a small production workload (frontend, backend, database and Redis) on that single free instance using Coolify.
The math changes
When you pair ARM efficiency with a self-hosted orchestrator, the math changes. A startup paying $500/month on AWS can often move that entire workload to a sub-$15/month ARM instance on Hetzner, or to OCI’s free tier outright.
That difference goes straight back into your runway or your marketing budget.
Docker and Nix: the engine room
Coolify relies heavily on Docker, which is the industry standard for a reason. It makes sure that what works on my machine works on the server.
As I move deeper into the “vibe coding” era, I’m also looking at how technologies like Nix can make our environments even more stable.
Reproducible environments for agents
Using Nix flakes to define the development environment and Docker to package the runtime gives you a repeatable deployment pipeline.
When I use tools like the Model Context Protocol (MCP), I want my AI agents to have a clear, reproducible environment to work in. Self-hosting doesn’t mean “unprofessional.” It means total control over the stack.
Comparison: the hidden cost of “easy”
Let’s look at the numbers for a standard Laravel or Node.js app with a database and a background worker.
| Line item | Managed path (Vercel + Supabase + AWS S3) | Coolify path (Hetzner VPS) |
|---|---|---|
| Hosting | Vercel Pro: $20/month per developer seat | 4 vCPU ARM / 8GB RAM (CAX21): ~$12.50/month |
| Database | Supabase Pro: $25/month | Included (container on the VPS) |
| Storage / backups | AWS S3 + bandwidth: $15/month | Backups to S3-compatible storage: $1/month |
| Platform | Included | Coolify: $0 (open source) |
| Total | $60+/month (and rising with every user/teammate) | ~$13.50/month |
The gap keeps growing
The “managed” path costs roughly 4x more before you even have your first 100 users, and the gap widens with every teammate and every GB of egress. To run the numbers for your own stack, including the hours you will spend on upkeep, try my self-hosting cost calculator.
The half hour it takes to install Coolify on a fresh Linux box is worth the thousands of dollars saved over the life of the project.
Practical steps to a self-hosted SaaS stack
If you are tired of the cloud tax, here is my recommended path to freedom:
- Grab a VPS. I recommend Hetzner for raw performance per price, or OCI for its generous free tier. Pick an ARM-based instance (Ubuntu 24.04).
- Install Coolify. Run the one-line install command from their documentation. It takes about 5 minutes.
- Connect your Git. Link your GitHub or GitLab account.
- Dockerize your app. If you are using Laravel, it is as simple as adding a
Dockerfile. For Vite or Next.js, Coolify has built-in builders that don’t even need aDockerfile. - Move your DB. Export your managed DB and import it into a Coolify-managed container. Set up S3 backups immediately.
The bottom line
We are entering a cycle where efficiency matters more than ever. The days of “VC-subsidized” infrastructure are over. Whether you are building a small tool or a large enterprise SaaS, you owe it to your bottom line to look at self-hosting.
Who holds the keys
Coolify has matured to the point where the developer experience is close to the big players. The real difference is who owns the keys to the castle.
When you do outgrow a single box, the platform scales with you. I cover that in advanced Coolify deployment strategies.
Key takeaways
- Cloud credits hide the real cost: idle databases, NAT gateways and complexity you don’t need yet.
- Coolify gives you git-push deploys, automatic SSL, one-click databases and PR previews on your own server.
- ARM instances on Hetzner or Oracle’s Always Free tier cut the bill further.
- For a typical small app, the managed path costs roughly 4x more, and the gap grows with your team.
- Start with one throwaway project, then move your real app and its database.
If your cloud bill is growing faster than your users, here’s how I help teams move to self-hosted Coolify on ARM, or drop a note via contact.
What is the most “expensive” mistake you have ever made on a cloud bill: a forgotten NAT gateway or a runaway Lambda function?