Open Source Heroku and Vercel Alternatives: Coolify, Dokku, CapRover and Kamal

The strongest open source Heroku alternatives are Coolify (web dashboard, many one-click services), Dokku (git-push PaaS on one server), CapRover (Docker Swarm with a web UI) and Kamal (CLI that ships Docker containers to your own servers). All run on a plain VPS you control.
What is a self-hosted Heroku alternative?
A self-hosted platform-as-a-service gives you the “push code, get a running app” workflow of Heroku or Vercel on servers you rent or own. It builds your app, runs it in a container, routes a domain to it and usually handles TLS certificates for you.
The trade is simple: you stop paying a platform margin and gain full control, but you inherit the operations work. Backups, OS updates, disk space and monitoring become your problem, even if the PaaS layer hides most of the day-to-day deployment chores.
For AI builders this matters because workloads such as vector databases, background workers and model gateways are often awkward or expensive on managed platforms. A single well-sized VPS running one of these tools can host an entire prototype stack.
Vercel-style platforms add another layer: preview deployments for every pull request and framework-aware builds. Coolify covers part of that with preview environments, while Dokku and Kamal focus on long-running services. Decide early whether previews are essential, because retrofitting them later is awkward.
Which open source Heroku alternatives are worth considering?
Four projects cover most needs. They differ less in what they can deploy and more in how you interact with them: a dashboard, git push, or a config file in your repository.
| Tool | Interface | Under the hood | Licence | Best for |
|---|---|---|---|---|
| Coolify | Web dashboard | Docker, Traefik proxy | Apache 2.0 (check the licence file) | Teams wanting a Vercel-like UI plus databases and one-click services |
| Dokku | CLI and git push | Docker, buildpacks or Dockerfile, nginx | MIT | Solo developers who liked Heroku’s git-push flow |
| CapRover | Web dashboard and CLI | Docker Swarm, nginx | Apache 2.0 (check the licence file) | Small clusters and quick one-click apps |
| Kamal | CLI with a YAML config | Docker, kamal-proxy | MIT | Teams that want deploys defined in the repo, across several servers |
How do Coolify, Dokku, CapRover and Kamal differ in practice?
Coolify is the closest to a hosted dashboard experience. You connect a git provider, pick a repository, and it builds with Nixpacks, a Dockerfile or Docker Compose. It also provisions databases and a catalog of self-hostable services, and it can manage several remote servers from one panel.
Dokku is deliberately minimal. You install it on one server, add a git remote, and push. Buildpacks detect your language much like Heroku did, and plugins add Postgres, Redis, Let’s Encrypt and more. It has no built-in web UI, which many people see as a feature.
CapRover sits between the two. It wraps Docker Swarm with a web panel, a CLI and a library of one-click apps, so adding nodes later is part of the design. Kamal, from the team behind Basecamp, is not a panel at all: a deploy.yml file describes servers, image and accessories, and one command builds, pushes and rolls out containers with zero-downtime switching.
The practical difference shows up on bad days. With a dashboard tool you debug through its UI and logs; with Dokku or Kamal you debug with docker commands and SSH. Pick the model your team is already comfortable troubleshooting at two in the morning.
How do you choose the right one?
A practical test is to deploy the same small app with a database on a throwaway VPS using two candidates. An afternoon of hands-on use tells you more than any feature list.
- You want a UI and many prebuilt services: start with Coolify.
- You want the smallest moving parts and a Heroku-style git push: pick Dokku.
- You expect to add a second or third node soon and like one-click apps: try CapRover.
- You already use Docker and want deploys reviewed like code: use Kamal.
- You deploy mostly static or Next.js frontends: compare Coolify with simply using a CDN plus a small API server.
- You need strict change control: prefer tools where configuration lives in git (Kamal, Dokku app.json and Procfile).
What does it take to run one of these?
All four expect a Linux server with Docker, a domain you can point at it, and SSH access. Memory is the usual constraint: build steps for Node or Python apps can be heavy, so leave headroom or build images in CI and deploy prebuilt images instead.
Plan for backups from day one. Database volumes on the same disk as your apps are not a backup; ship dumps to object storage on a schedule and test a restore at least once.
Keep the host patched. The PaaS updates your containers, not the operating system underneath, and an exposed Docker socket or dashboard with a weak password is a real risk.
Where do self-hosted PaaS tools break?
- Single-server setups: one disk failure or kernel panic takes down every app at once.
- Build on the production box: heavy builds can starve running apps of CPU and memory.
- Proxy conflicts: running your own nginx next to the tool’s Traefik or nginx leads to port and certificate fights.
- Upgrades of the platform itself: read release notes, because major versions can change proxies or config formats.
- Scaling expectations: none of these is Kubernetes; horizontal autoscaling is limited or manual.
- Secrets sprawl: environment variables set in a dashboard are easy to lose; keep an encrypted copy elsewhere.
When should you stay on Heroku or Vercel?
Managed platforms still win when nobody on the team wants to own servers, when you need global edge delivery out of the box, or when compliance requires a vendor’s certifications. The hourly cost of an engineer fixing a broken host can exceed years of platform fees.
A common middle path is hybrid: keep the marketing site or frontend on a managed edge platform and move databases, workers and AI services to a self-hosted PaaS where resource-heavy workloads are cheaper to run.
If you are picking self-hostable projects to run on such a stack, RepoLoot’s catalog tags projects by licence and difficulty, which helps you estimate how much operations work each one adds.
A simple migration plan from Heroku
- Inventory each app: runtime, add-ons, environment variables, scheduled jobs and domains.
- Containerise first: make sure every app builds from a Dockerfile or buildpack locally.
- Stand up the new platform on a fresh server and deploy a staging copy.
- Move data with a dump and restore, then run both environments in parallel for a short period.
- Switch DNS with a low TTL, watch logs and error rates, and keep the old app available for rollback.
- Only then set up automated backups, uptime checks and OS patching, and write them down.
How much does a self-hosted PaaS cost to run?
The software itself costs nothing to license in these four cases, so the bill is infrastructure plus time. Infrastructure is a VPS or dedicated server, object storage for backups, and a domain. Prices vary widely by provider and region, so compare current offers rather than trusting old blog numbers.
Time is the larger and less visible cost. Budget a few hours for initial setup, then a recurring slot every month for OS updates, platform upgrades, disk cleanup and a restore test. If nobody owns that slot, the savings disappear the first time a server fills up with old Docker images.
A useful rule: self-hosting pays off when you run several apps or resource-heavy services on one box, and rarely pays off for a single small app that fits comfortably in a managed free or hobby tier.
Plain Docker Compose with a reverse proxy is a legitimate option for one or two stable apps. You lose git-push deploys, preview environments and a dashboard, but you also lose a layer that can break.
Kubernetes sits at the other end. It solves autoscaling and multi-node scheduling well, but it demands far more expertise than any of the tools here. Most teams leaving Heroku do not need it yet, and a PaaS on one or two servers buys time until they do.
Frequently asked questions
- Is Coolify a real Vercel alternative?
- For many projects, yes. Coolify deploys frontends and full-stack apps from git with preview-style workflows and automatic TLS. What it does not give you is a global edge network, so very latency-sensitive sites may still benefit from a CDN in front of it.
- Can Dokku run on a small VPS?
- Dokku itself is lightweight because it is mostly shell scripts around Docker. The real limit is your apps and their build steps. For small projects a modest VPS works, but builds of large Node or Python apps may need swap or prebuilt images.
- Does Kamal need Kubernetes?
- No. Kamal connects to ordinary servers over SSH, runs Docker containers, and uses its own lightweight proxy to switch traffic between versions. It is designed as a simpler alternative to container orchestration for teams that do not need a full cluster.
- Which option is easiest for beginners?
- Coolify and CapRover are usually the gentlest start because they have web dashboards and one-click services. Dokku is simple too if you are comfortable with the command line. Kamal assumes you already understand Docker images and registries.