A client’s Vercel bill crossed $140 in a single month earlier this year. The workload was a marketing site, a small API, and a Postgres database. The actual compute behind all of that would fit on a $6 VPS with most of the box idle. I moved the whole thing to Coolify on a Hetzner server over a weekend, and the monthly cost dropped to under $12 including backups. Nothing about the app changed. Only the middleman did.

Coolify is an open-source platform as a service that you run on your own hardware. It gives you the Heroku workflow (git push, automatic builds, SSL, databases) without the Heroku or Vercel pricing model. I have been running production apps on it for over a year now. Here is what it does well, what it costs in money and in time, and where it falls short.

What Coolify Actually Is

Coolify is a web dashboard and deployment engine, written mostly in PHP, that sits on top of Docker. You install it on a VPS, point it at a Git repository, and it builds and runs your app as containers. It handles the reverse proxy, TLS certificates, environment variables, health checks, and rollbacks. If you have ever used Heroku, the mental model is identical, except the servers are yours.

It is free and open source under the Apache license. The maintainer, Andras Bacsai, ships releases at a pace that would embarrass most funded startups. There is also a paid cloud version where the Coolify team hosts the control plane for you, starting around $5 per month for two servers, but the self-hosted control plane costs nothing.

The one requirement that matters: you need to be comfortable with containers. The official Coolify documentation assumes working Docker knowledge throughout, so treat it as your first stop if anything here feels unfamiliar.

Installing Coolify on a VPS

The install is one command on a fresh Ubuntu or Debian box:

curl -fsSL https://cdn.coollabs.io/coolify/install.sh | bash

The script installs Docker if it is missing, pulls the Coolify containers, and starts the dashboard on port 8000. From there you finish setup in the browser: create an admin account, name your first server, done. On a clean Hetzner or DigitalOcean box the whole thing takes about five minutes.

Coolify’s docs recommend at least 2 CPUs and 2 GB of RAM for the server running the control panel, and that is honest. The dashboard itself plus the proxy and a couple of databases will eat most of a 1 GB machine. My default starting box is a Hetzner CX32 or a DigitalOcean 2 GB droplet, both in the $6 to $8 per month range. Moving a production workload between hosts is the part people fear most, and the website migration playbook covers the DNS cutover sequence step by step.

Abstract network of deployment pipelines connecting a central server node to database and application containers, no text labels

Push-to-Deploy: The Git Workflow

This is the feature that sells the platform. You connect Coolify to GitHub, GitLab, or Gitea, either through a GitHub App or a deploy key. When you push to your main branch, a webhook fires, Coolify pulls the commit, builds it, and swaps the containers with zero-downtime deployment.

For builds you get three paths. Nixpacks auto-detects your stack and builds it, which works well for Node, PHP/Laravel, Python, Go, Ruby, and static sites. A Dockerfile in the repo takes precedence if you want full control. And Docker Compose files work for multi-service apps. A Next.js site with no Dockerfile deploys with literally zero config. You paste the repo URL, set the domain, and push.

Environment variables live in the dashboard per project and per environment, with separate values for preview deployments. Preview deployments deserve their own mention: open a pull request and Coolify builds a throwaway instance on a generated subdomain, then tears it down when the PR closes. That is a Vercel feature people pay for, included here.

One-Click Databases and Services

Databases are where self-hosting usually gets painful, and Coolify flattens most of it. From the dashboard you can spin up PostgreSQL, MySQL, MariaDB, MongoDB, Redis, Valkey, Dragonfly, and ClickHouse as managed containers on your server. Coolify wires the networking between your app and the database, generates credentials, and exposes connection strings as environment variables.

Backups are built in for databases. You set a schedule, point it at an S3-compatible bucket (I use Backblaze B2, which costs almost nothing at this scale), and Coolify dumps and ships the backup on a cron. Test the restore once before you trust it. I learned that lesson the expensive way years before Coolify existed.

Beyond databases there is a service catalog with one-click templates: Uptime Kuma, Plausible, Ghost, WordPress, Supabase, n8n, MinIO, and a few hundred others. This is the same pattern I described when evaluating whether a self-hosted stack actually pays for itself against metered SaaS bills. Coolify turns that whole category into a dropdown menu.

Automatic SSL and Domains

Every project gets a domain field. Type in app.example.com, point the DNS A record at your server, and Coolify requests and renews a Let’s Encrypt certificate through its built-in Traefik proxy. Wildcard certificates work too if you set up the DNS challenge. I have not manually renewed a certificate on a Coolify box since I started using it, which is more than I can say for the Nginx servers I still maintain by hand.

You can also put Cloudflare in front of everything, which I recommend for the free DDoS protection and caching. Our edge CDN comparison guide covers how that edge layer fits around an origin you control. The one caution: set Cloudflare’s SSL mode to Full (strict) so the connection from Cloudflare to your origin stays encrypted, and let Coolify handle the origin cert.

Multi-Server Support

One Coolify control plane can manage many servers. You add a server by pasting in an SSH key, Coolify validates the connection and Docker version, and that machine becomes a deploy target. Projects pick which server they run on. My current setup is one small control server in Frankfurt managing three workload servers across two providers.

There is also Docker Swarm support if you want services spread across nodes with basic orchestration. It is not Kubernetes and does not pretend to be. For a small business running five to twenty apps, that is a feature, not a limitation.

High precision technical schematic of a multi-server PaaS orchestration cluster on dark titanium, no text labels

The Real Monthly Cost: Coolify vs Vercel vs Railway

Here is the math for a realistic small setup: two production web apps, a staging environment, one Postgres database, and modest traffic.

SetupMonthly costWhat you get
Vercel Pro + Neon$20 to $60+$20 per seat, plus database and overage risk on bandwidth and function invocations
Railway$15 to $40$5 hobby plan plus usage-based compute, memory, and egress that scales with traffic
Coolify on Hetzner CX32$6 to $104 vCPU, 8 GB RAM, 80 GB disk, 20 TB traffic, everything on one box
Coolify Cloud + your VPS$11 to $15Hosted control plane plus your own server

Check the Vercel pricing page and the Hetzner cloud pricing page for current numbers, because both shift. But the shape of the math has been stable for years: managed platforms charge for convenience per seat and per unit of usage, while a VPS charges a flat rate for capacity you mostly will not use.

At small scale the savings are $15 to $50 per month. That is not life-changing money. The savings compound when you add projects. The fifth client site on Coolify costs $0 in new infrastructure. The fifth client site on Vercel costs another seat and another meter running. For agencies and freelancers hosting client work, that difference is the entire business case. Flat-capacity pricing beats metered serverless once your workloads stop being bursty, and the breakeven usually shows up faster than the sticker math suggests.

Technical architectural diagram comparing predictable flat-capacity VPS resource nodes against volatile metered cloud billing meters, no text labels

Dokploy: The Main Alternative

Dokploy is the closest competitor and it is genuinely good. It covers the same ground: git push deployments, databases, Traefik-based routing, multi-server support, and a clean dashboard. The UI feels more modern than Coolify’s in places, and the project has been growing fast through 2025 and 2026.

The honest differences I have seen in practice: Coolify has the larger service template catalog and the longer track record in production, and its GitHub integration (especially preview deployments) is more polished. Dokploy has a slicker interface and a slightly simpler mental model for Docker Compose-heavy setups. Both are free and open source. If you are evaluating, spin up both on cheap boxes for a week and deploy the same app to each. The older option, CapRover, still works but its development pace has fallen well behind both.

What You Take Back When You Leave Managed Platforms

This is the section that decides whether Coolify is right for you. Vercel’s real product is not hosting. It is the absence of operational work. When you self-host, that work becomes yours again.

You own OS security patches. Ubuntu will not update itself, and a VPS with an unpatched kernel is a liability. Set up unattended-upgrades at minimum. You own Docker and Coolify updates, and while Coolify updates itself through the dashboard, you should read the release notes before clicking the button because breaking changes happen.

You own the firewall. Lock the box down to ports 22, 80, and 443, move SSH off password auth, and consider fail2ban. You own monitoring: Coolify has notifications and Uptime Kuma is a one-click service, but nobody pages you at 3 a.m. unless you set that up. You own backups end to end, including the occasional restore drill.

You also own the ceiling. When traffic spikes, a VPS does not autoscale. You resize the box or add a server. For the marketing sites, APIs, and internal tools most small businesses run, you will never hit that ceiling. If you are building the next viral consumer app, stay on a managed platform or hire for infrastructure.

Budget the time honestly: about an hour a month for updates and checks once the box is stable, plus a few hours at setup. Do not skip the unattended-upgrades step; our Ubuntu server configuration guide takes ten minutes to apply and closes the most common hole on a fresh VPS.

Glassmorphic developer telemetry HUD displaying real-time container health checkpoints and sub-50ms latency performance waves, no text labels

Final Thoughts

Coolify is the first self-hosted PaaS I recommend without a long list of caveats. The git push workflow, automatic SSL, one-click databases, and preview deployments cover 90% of what small teams actually use Vercel and Railway for, at a flat $6 to $10 per month. Dokploy is a credible alternative worth a weekend of evaluation.

My recommendation is concrete. If you or your team can handle Docker basics and an hour of server maintenance a month, move your steady-state workloads to Coolify and keep the savings. If nobody on the team wants to think about servers at all, pay the managed platforms their margin and sleep well. The mistake is the middle: paying Vercel prices while quietly doing your own ops work anyway. Pick a side.

What Most Guides Get Wrong

Most Coolify coverage makes the same mistake: it treats the install as the finish line. One curl command, a dashboard screenshot, done. The install is the easy five percent. Everything that actually determines whether this works for you happens after: the backup restore you never tested, the firewall rule you forgot, the Coolify update you clicked through without reading the release notes. Guides that skip that part are selling a demo, not an operation. The second mistake is pretending the cost comparison is purely about dollars. Vercel’s $20 seat is not just hosting; it is someone else’s pager duty. When your Coolify box dies at 2 a.m., the person holding the pager is you, and no guide I have read prices that in. Third, most comparisons never mention that a single VPS is a single point of failure. Your client’s sites now share one power supply, one disk array, one network uplink. For most small-business workloads that risk is acceptable, but it should be a decision, not an accident. Finally, writers who only ever run Coolify on a hobby project wildly underestimate how much disk databases eat in production. Postgres logs, Docker build caches, and backup staging will fill an 80 GB disk faster than you expect. Plan for disk growth on day one or you will be resizing under pressure.

Conclusion

Coolify delivers the Heroku workflow on hardware you own for a flat $6 to $10 a month, and the year I have run it in production has produced few surprises and one very small infrastructure bill. The honest trade is simple: you exchange metered pricing for a fixed slice of operational responsibility, roughly an hour a month once the box is stable. That trade is worth it for agencies, freelancers, and small teams running steady workloads, and wrong for anyone who wants servers to be someone else’s problem. My concrete recommendation: spin up a cheap Hetzner box, deploy one real app to Coolify and one to Dokploy, run both for two weeks, then move your steady workloads to whichever you tolerate more. Do not migrate everything on day one, and do not skip the backup restore drill.