Skip to main content

Coolify vs Dokku vs CapRover vs Ownkube: What the 2026 Shootout Gets Right — and What Breaks at Box Two

11 min readDora NodaDora Noda
Share
On this page

A September 2026 four-way comparison lines up Coolify, Dokku, CapRover, and Ownkube on the same install-on-your-VPS terms and finds real differentiation only in how far past one box each one reaches. The verdict for a single server is easy. The honest question is what each one costs you the day your next deploy doesn't fit on the first box — so here is that answer first:

EntrantOne-box verdictBox-two costWhat a Cluster-API fleet does instead
CoolifyBest UI in class; pick it for 1–5 engineers who want Vercel vibes on a VPSExtra hosts attach over SSH but each runs standalone Docker — no cluster scheduler, no declarative join; you rack VPS #2 yourselfNew machine joins by manifest change; scheduler places work across the fleet
DokkuMost boring-predictable; pick it for terminal-first solo devsSingle-node by design; k3s/Kubernetes scheduler plugins exist but swap the product you operateSame reconciliation loop from 1 node to N; no product swap at box two
CapRoverClick-through middle ground on a $10 VPSSwarm multi-node works, but Swarm is in maintenance mode with quiet failure modes past a few nodesActively-developed orchestrator with machine-health-driven replacement
OwnkubeTeam-scale path if you're on AWS and won't hire DevOpsNo declarative VPS #2 either — graduation leaves the VPS frame for k3s→EKS in your own AWS: new account, new bill, new control plane; AWS-only, commercialFleet stays on your machines with no account migration and no per-vCPU platform fee

The rest of this post is the evidence behind that table: what the shootout gets right, where each entrant's ceiling actually sits, and the row the shootout's frame is missing.

Who wrote the shootout

One paragraph of provenance, because it shapes how to read the fourth column: the comparison was written by the Ownkube team — Abhishek Jaiswal, whose bio reads "building autonomous infrastructure" at Ownkube — published on dev.to on September 13, 2026 and originally on ownkube.io on May 8, 2026. That doesn't make its verdicts wrong; its reads on the three open-source entrants are largely fair. It just means the "team-scale" column is also the author's pricing page, so this post re-costs all four entrants — Ownkube included — in the same units.

What the shootout gets right

Its central claim is correct and worth stating plainly: for a single VPS, the panel mostly doesn't matter. All four give you the same Heroku-style primitives — git push to deploy, a container build pipeline, environment variables, managed-ish databases, an HTTPS proxy with Let's Encrypt, and (in the better ones) preview environments and zero-downtime deploys. The shootout's comparison table checks out on the rows that decide a one-box purchase: the underlying engines (Coolify's Docker-plus-custom-orchestrator, Dokku's Docker-plus-buildpacks, CapRover's Docker Swarm, Ownkube's managed Kubernetes), the minimum viable hosts (a 1–2 GB VPS for the OSS trio), and the UI ranking (Coolify's modern dashboard on top, Dokku CLI-first, CapRover in the middle).

Its team-shape mapping is also sound. Indie developer, side project, one server, under $20 a month: Dokku if you live in the terminal and want battle-tested boring reliability, CapRover if you want a click-through UI for the same single box. Solo founder or small team that wants a clean dashboard and a wider service catalog: Coolify, which had the strongest 2024–2025 run of any self-hosted PaaS and rolled into 2026 (v4.1.1, circa 54K GitHub stars) with preview environments and a service catalog that feels like a real platform. If your world fits on one machine and stays there, stop reading comparisons and ship — any of the three will do.

The shootout is even honest about the shared catch. Its "hidden tradeoff of pure self-hosting" section names the real costs: patching the platform itself, verifying backup restores on a new node, observing the control plane before downtime tells you about it, and — the expensive one nobody pre-budgets — migrating when you outgrow the single-node ceiling. Where this post parts ways with the shootout is what happens next: its answer to outgrowing one box is, unsurprisingly, Ownkube. The fuller answer requires pricing each entrant's ceiling separately.

What breaks at box two, entrant by entrant

Coolify: multi-server is SSH, not a cluster

Coolify is the only OSS entrant here with a real multi-server story, and it deserves credit for it: you connect additional hosts to one dashboard and schedule deployments to them. But each host still runs standalone Docker behind Traefik or Caddy — there is no cluster scheduler bin-packing work across machines, no declarative node join, no machine-health-driven replacement. Adding capacity means provisioning VPS #2 yourself, wiring it into the dashboard over SSH, and deciding which apps live where.

That is genuinely useful fleet visibility, and Coolify Cloud ($5 a month for two servers, $3 per extra server) will host the control plane for you — but the machine lifecycle underneath stays manual. The shootout calls multi-node orchestration "rough" and production HA "more glue than you'd expect"; the concrete form of that glue is that every machine remains a pet you adopted through a web form.

Dokku: single-node by design, and honest about it

Dokku is twelve years old, MIT-licensed, and the most predictable thing in this lineup — which is exactly why it refuses to pretend box two is easy. The core product is a single-host Heroku clone: buildpacks, git push, a mature Postgres plugin with backups, a tiny footprint on a 1 GB VPS. Scheduler plugins for Kubernetes and k3s exist for teams that outgrow one box, but reaching for them swaps the thing you operate — you are no longer running Dokku-plus-Docker, you are running Dokku as a frontend to a cluster you now own, with all of that cluster's lifecycle questions unanswered by Dokku itself. The shootout's verdict stands: pick Dokku if you want the most boring thing that still runs in ten years. Just budget the migration it never promised to spare you — Dokku's honesty about its ceiling is a feature, not a gap.

CapRover: the ceiling is Swarm's trajectory, not CapRover's code

CapRover sits between Dokku and Coolify — one-command install, a click-through UI, a community app store — and it is the only entrant whose multi-node story is also its biggest liability. The engine is Docker Swarm, which has been in maintenance mode for years: stable, but no longer the focus of active development anywhere in the container ecosystem. Small Swarm clusters work, and CapRover's founder has argued they will do fine for CapRover's target users. But the failure modes past a few nodes are quiet and painful, and the project's own momentum shows it: a dated UI, a slow release cadence (v1.14.2 in May 2026), Compose support limited to a custom format, and effectively solo maintenance with no managed-cloud option.

Picking CapRover today means betting that Swarm's frozen state stays frozen-compatible with everything around it. That bet has held for years and might hold for years more — but it is a bet on stasis, and stasis is the one thing box two never preserves.

Ownkube: graduation is an account migration, not a machine addition

Ownkube's answer to the ceiling is the strongest in the shootout — and the most important to price in the same units as the others. There is no declarative VPS #2 here either. The path is graduation: start on Ownkube Compute (from $5 a month on a prepaid wallet) or a free Starter instance, then move into your own AWS account on k3s for single-node or EKS for multi-node, with Production billed at $5 per vCPU plus $1 per GiB of RAM while you pay AWS directly at wholesale.

That is a genuinely clean graduation — same workflow, same dashboard, vanilla Kubernetes underneath, your data and KMS keys staying yours. But "no migration" is doing heavy lifting: you are leaving the VPS frame entirely for a new cloud account, a new bill, and a new control plane, on AWS specifically (GCP and Azure are roadmap), inside a commercial product. For a 5-to-20-engineer team already on AWS that refuses to hire DevOps, that trade is often correct. It is still a migration with a price tag, not the absence of one.

The missing row: declarative machine lifecycle

Step back and the pattern is stark: none of the four provisions machine #2. In every case, somebody — you, or a cloud account you opened — racks the new box, joins it to something, and rewires traffic onto it. The shootout's frame compares control planes while treating machines as somebody else's problem, which is precisely why its verdicts all read as "pick your favorite UI, then migrate later." The row the table needs is declarative machine lifecycle: what happens, in software, when the fleet needs another machine?

The Cluster-API-based answer is that adding a machine is a manifest change. You declare the desired fleet — machine count, size, image, labels — and controllers reconcile reality to match: provision the VPS through the infrastructure provider, bootstrap the node, join it to the cluster, and roll workloads onto it. The same loop runs in reverse for the unglamorous half of fleet ops that the shootout's hidden-tradeoff section lists as your job: MachineHealthCheck-style controllers detect a dead node and replace it without a 3 a.m. SSH session, and node upgrades become rolling MachineDeployment updates instead of rebuild-the-VPS weekends.

Coolify's SSH-attached hosts, Dokku's scheduler plugins, CapRover's Swarm join tokens, and Ownkube's k3s-to-EKS graduation each solve a slice of this — scheduling, orchestration, graduation — but none of them closes the loop where the fleet itself is the reconciled object. That is the exact seam a team outgrows a single-box tool at: not "we need containers on two machines," which all four can arrange, but "we need the second machine to exist because a manifest says so," which none of them does.

This is also why the shootout's cheapest sentence — "for the wrong team they quietly become a second job" — deserves more weight than the shootout gives it. Patching, backup drills, control-plane observability, and the eventual migration are not four separate taxes. They are one tax with one name: the platform doesn't manage its own substrate. Any comparison that scores dashboards without scoring that row will keep recommending the prettiest panel for a problem panels don't solve.

Pick by exit cost, not feature list

If you're choosing this month, run the shootout's decision checklist — team size, 12-month traffic, own-ops vs. managed, AWS lock-in tolerance, DNS/TLS comfort — but add the question it omits: what do I re-do when one box stops fitting?

  • Dokku: you re-platform. Budget a full migration (to a cluster, to ECS/EKS, to another PaaS) and pick Dokku with that number written down, not discovered.
  • CapRover: you re-platform and escape Swarm. Same migration budget as Dokku, plus unwinding anything coupled to Swarm networking and the custom Compose format.
  • Coolify: you federate manually. No re-platform on day one — but every additional machine is hand-provisioned, hand-placed capacity behind a shared dashboard, so budget ongoing per-machine ops instead of a one-time migration.
  • Ownkube: you graduate accounts. No re-platform of the workload layer — but budget the AWS account, the wholesale infrastructure bill, and the per-vCPU platform fee from the day you leave the VPS frame.

None of these costs is disqualifying; every platform in this tier charges one of them. The mistake is picking on UI screenshots and meeting your cost unbudgeted eighteen months later.

The one-box tier keeps getting prettier; the split that matters is substrate

The 2026 shootout earns its verdicts: Coolify is the obvious UI pick, Dokku the durability pick, CapRover the click-through middle, Ownkube the credible AWS-graduation path. But the durable split in this category was never dashboard quality — it is whether the platform manages its own machines. The one-box tier will keep getting prettier, and for workloads that fit on one box, prettier is genuinely enough. For everything else, the question to ask before you fall in love with a panel is what box two costs, in whose account, and whose 3 a.m. it arrives on.

Bex.co is the open-source, AI-native Render alternative — push a git repo, get a running HTTPS service on machines you own, with declarative fleet management built for the day one box stops being enough. Star the repo on GitHub or deploy your first app today.

Related articles

Run this on infrastructure you own

bex is the open-source, AI-native Render alternative — push a git repo and get a running HTTPS service on your own machines.

Get started with bex