all posts

Best Dokploy Alternatives (2026): Self-Hosted PaaS Compared

Ajay Kumar··10 min read

The self-hosted PaaS category exists because of one number: what a small app costs on a managed platform versus what the same app costs on a VPS you already rent. Dokploy, Coolify, CapRover, and Dokku all answer that by putting a Heroku-shaped interface on top of Docker on a machine you own. Dokploy is the newest of them and has grown quickly, largely on the strength of a genuinely pleasant UI and multi-server support without much ceremony.

People go looking for alternatives for reasons that are worth naming precisely, because they point at different replacements. Some want more maturity and a bigger community. Some hit the multi-tenancy wall — they are hosting things for other people, and every app sharing one Docker daemon and one kernel is no longer acceptable. Some want the opposite of a control panel: a deploy tool with no daemon at all. And some conclude they were self-hosting to save money and it cost them their evenings instead.

Disclosure: PandaStack is our project and sits at the far end of this list — it is not a drop-in Dokploy replacement, and I will be specific about where it fits and where it does not. Numbers are quoted only for our own platform.

Coolify — the obvious first stop

Coolify is the most direct comparison: same category, same premise, considerably more mileage. It has a larger community, a longer track record of upgrades that do not break people, a wide catalogue of one-click services, and support for deploying to multiple servers as well as connecting cloud providers. If your reason for leaving Dokploy is 'I want the same thing but more established,' Coolify is the answer and the migration is conceptually straightforward — both are Docker underneath.

What you do not get by switching is a different architecture. Coolify is still a control plane driving Docker on hosts you own, with the same shared-kernel model and the same upgrade-day anxiety. If those are your actual complaints, moving between them is lateral.

CapRover and Dokku — the boring, durable options

CapRover has been around long enough that its rough edges are documented by other people rather than discovered by you. It leans on Docker Swarm, has a one-click app catalogue, and does not change much between releases. That last property is undervalued: a self-hosted PaaS that does not change is a self-hosted PaaS that does not break your production on a Tuesday.

Dokku is the most Heroku-faithful of the group and the most minimal — git push to a remote, buildpacks or a Dockerfile, plugins for databases, all driven from the command line on a single host. There is no fancy dashboard, which is precisely why some people prefer it. If you like the git-push workflow and dislike control panels, Dokku is the least software between you and a deployed app.

Kamal — no control plane at all

Kamal, from the Rails world, is a deliberate rejection of the premise. There is no daemon running on your servers managing state; it is a deploy tool that SSHes into machines, pulls your image, starts containers, and manages a proxy in front. Your servers stay boring, and there is no long-lived control plane to upgrade, back up, or lose.

This is a strong choice for a team that ships one product to a handful of servers and treats infrastructure as config in the repo. It is a bad choice if what you actually wanted was a UI where a non-infrastructure teammate can click deploy, or a catalogue of one-click databases. Be honest about which of those describes your team.

Porter, Qovery, Northflank — a managed control plane in your cloud

The bring-your-own-cloud tier sits between self-hosting and a managed PaaS: a vendor operates the control plane, your workloads run in your own AWS or GCP account. You get someone else on call for the platform while your data and compute stay in your account, which is frequently the specific requirement a compliance review produced.

The trade is that you are back to paying a vendor and depending on their roadmap — it is not open-source software you run end to end. Do not conflate BYOC with self-hosted; they solve different problems and only one of them survives the vendor going away.

The wall: when your PaaS becomes multi-tenant

Here is the failure mode that pushes people out of this entire category rather than sideways within it. You started self-hosting your own apps. Then you deployed something for a client. Then you built a product where customers deploy their code. Every one of those apps is a container on a shared Docker daemon, sharing one host kernel. That is fine when every app is yours and you trust all of it. It stops being fine the moment one of them is not.

Containers separate processes; they do not separate kernels. A kernel bug reachable from inside a container is a host compromise, and on a shared PaaS host that means every tenant on the box. No amount of Docker configuration changes that, because it is the architecture, not a setting. If you are running other people's code, the honest answer is a boundary that virtualises hardware.

PandaStack — microVM per app, and you can still run it yourself

PandaStack is our project. Structurally it looks like the git-push PaaS you are used to — connect a repo, we detect the framework, build it, run it behind a stable URL, redeploy on push — but each app runs in its own Firecracker microVM with its own guest kernel rather than a container on a shared one. That difference is the entire reason to consider it over Coolify or Dokploy.

The usual objection to VMs is that they are slow to start, so here is the number: there is no warm pool, every create restores a baked snapshot, and that lands around 179ms p50. Idle apps scale to zero and bill nothing while asleep. Billing is $0.054 per active vCPU-hour and $0.0162 per working-set GiB-hour, metered per second, with egress not billed.

The self-host path is real — the core is Apache-2.0 and runs on any Linux host with /dev/kvm — but it is a heavier lift than pointing Dokploy at a VPS. You run a control-plane API and a per-host agent, and your hosts need hardware virtualisation, which rules out running it inside most cheap VPS products that are themselves virtualised without nested support. That is a genuine constraint and the main reason someone would stay with a Docker-based PaaS.

# The shape is familiar — the isolation underneath is not.
pandastack app create \
  --name api \
  --git-url https://github.com/acme/api \
  --branch main
# -> { "id": "app_...", "status": "created", ... }

# Build, health-check, and blue-green flip, streaming the build log.
pandastack app deploy app_... --follow

Choosing, briefly

Want the same thing, more mature: Coolify. Want it to stop changing under you: CapRover or Dokku. Want no control plane at all: Kamal. Need someone on call but the workloads in your own cloud account: Porter, Qovery, or Northflank. Running other people's code and a shared kernel is no longer defensible: move to microVMs, whether that is ours or something you build on Firecracker yourself. And if the honest answer is that self-hosting cost more of your time than it saved in dollars, a managed PaaS is not a defeat — it is arithmetic.

Frequently asked questions

Is Dokploy production-ready?

For your own applications on servers you control, plenty of people run it in production successfully. The questions to ask are the ones that apply to any young self-hosted control plane: what happens when an upgrade goes wrong, do you have a tested restore path for the control plane's own database, and who fixes it at 2am. Those are not reasons to avoid it — they are the operational work that comes with self-hosting anything, and the reason a managed platform costs money.

Coolify or Dokploy — which should I pick?

Coolify if longevity and community size matter to you, because it has more of both and more documented failure modes, which is what you want when something breaks at an inconvenient time. Dokploy if you prefer its interface and multi-server model and are comfortable being on a younger project. Architecturally they are close enough that the choice is about ergonomics and maturity rather than capability, and either can be swapped for the other without changing how your apps are built.

Can I run a multi-tenant platform on a self-hosted PaaS?

You can run one, but you should be clear about what you are promising customers. Every app on a Docker-based PaaS shares the host kernel, so a kernel-level escape affects every tenant on that machine. If your customers are internal teams and you trust the code, that is a defensible risk. If they are external and deploying arbitrary code, it is not, and it will not survive a serious security review. The fix is a per-tenant boundary at the hardware-virtualisation level.

Does self-hosting actually save money?

It saves on the invoice and spends on your time, and whether that trade is good depends entirely on what your time is worth and how much of it the platform consumes. A single VPS running a few personal projects is almost always cheaper self-hosted. A platform serving paying customers, where an outage costs revenue and an upgrade needs a maintenance window, frequently is not, once you count the hours honestly. Measure it after six months rather than at the moment you set it up, when it is at its most fun.

Keep reading

Run code in a microVM in one API call.

49ms p50 cold start. Fork, snapshot, and scale to zero.

Start free
Written by Ajay Kumar, Founder, PandaStack.