Coolify vs Dokku vs CapRover: self-host PaaS compared in 2026
We deployed the same three-service app to Coolify, Dokku, and CapRover on a $12/mo Hetzner box. Here's the architecture, memory footprint, and ops cost of each self-hosted PaaS in 2026.
Self-hosting a PaaS used to mean weekends lost to Nginx, systemd, and SSL renewals that broke at 3am. Coolify, Dokku, and CapRover all promise to compress that work into a git push and a web dashboard. They get there through different stacks, and the wrong pick costs you migration time you won’t get back.
We deployed the same three-service app — a Node API, a Postgres database, and a static Astro frontend — to each platform on a fresh $12/mo Hetzner CX22 (2 vCPU, 4GB RAM). What follows is what we hit, where each one bent, and which we’d reach for on the next project.
Architecture decides what breaks
Dokku is the oldest of the three (2013) and the leanest: a few thousand lines of Bash glue around Docker, designed to run on a single host. App lifecycles live in ~/dokku/<app> directories. There’s no web UI in the core — you ssh in and run dokku apps:create, dokku domains:add, dokku certs:add. A community plugin (dokku-letsencrypt) handles TLS. Plugins are first-class: Postgres, Redis, MongoDB, Clickhouse all ship as dokku-postgres, dokku-redis, etc., and they wire env vars into your app automatically when you dokku <db>:link.
CapRover sits on Docker Swarm. That choice is the whole story: you get multi-node orchestration, rolling deploys, and a one-click app store (over 100 apps as of writing) out of the box, but you also inherit Swarm’s quirks — overlay network DNS oddities, volume placement headaches, and a deprecation cloud since Docker shifted focus to Kubernetes. The web dashboard is the primary interface; the CLI exists but is secondary.
Coolify v4 rewrote the platform on Laravel + Docker Compose (no Swarm, no Kubernetes by default). v4 added multi-server support, so one Coolify instance can deploy to many remote Docker hosts over SSH. The UI is the most polished of the three — closest to Vercel or Render in feel — and it’s the only one with a built-in S3-compatible backup story for databases and a managed-Postgres-style UX.
Where each one actually fits
Pick Dokku when: you have one server, you live in the terminal, and you want the smallest moving-parts footprint. Memory baseline is around 150MB. The plugin ecosystem is mature — Dokku has been around twice as long as the others and the community plugins have been hammered on for a decade. The cost: no web UI in core, no built-in multi-server, no out-of-the-box backup scheduling. If you can’t ssh, you can’t operate Dokku.
Pick CapRover when: you want a web dashboard, one-click apps (Ghost, Nextcloud, Plausible, MinIO are common picks), and you don’t mind being on Docker Swarm. Memory baseline is around 400MB. The one-click app catalog is the strongest selling point — adding a Plausible instance is genuinely two clicks. Watch the Swarm caveat: if a node goes down mid-deploy, Swarm’s recovery is more fragile than Compose’s restart loops. Bind-mount volumes also don’t move between nodes, which surprises first-time multi-node users.
Pick Coolify when: you want the modern UX, your team has people who aren’t comfortable in SSH, and you’ll plausibly outgrow a single host within 12 months. Memory baseline is around 700MB (the heaviest of the three — it runs Laravel, a database, Redis, and Soketi for itself). In exchange you get: per-app TLS via Caddy, push-to-deploy from GitHub/GitLab with previews, an actual database backup scheduler with S3 destinations, and a real audit trail. v4 is younger and breaks more often than Dokku — check the GitHub issues for your stack before committing.
A note on community velocity: Coolify is the most actively developed (multiple releases per month, around 45k GitHub stars), CapRover is steady (around 13k stars, monthly-ish releases), Dokku is mature and slow-moving (around 30k stars, releases when needed). Velocity cuts both ways — Coolify breaks more often, Dokku has more sharp edges that nobody has filed off in five years.
Ops cost, the part nobody benchmarks
The total cost of running these is not the server. It’s the time you spend recovering from upgrades.
Dokku upgrades are mostly painless because there’s almost nothing to upgrade — you apt upgrade dokku and re-run dokku plugin:update. We have seen Postgres plugin updates require a careful read of the changelog (volume layout changes between major Postgres versions).
CapRover upgrades go through the dashboard. The Swarm-level upgrades (Docker version, Swarm state) are the ones to worry about; the CapRover layer itself is a single container restart. We hit one Swarm gotcha during a Docker 25 to 26 upgrade where the overlay network needed manual recreation — a documented issue with documented recovery, but not fun at the time.
Coolify v4 upgrades are the most invasive — schema migrations on every minor version, occasional breaking config changes during the v4 stabilization period (we’re past the worst of it as of 2026 but not all the way clear). Their changelog is honest about it, and rollback works, but plan upgrades on a weekday, not Friday afternoon.
FAQ
FAQ
Can I run any of these on a $5/month VPS? +
What's the migration story between them? +
Are any of these production-ready for a paid SaaS? +
Related tools
Beehiiv
Newsletter platform with built-in ad network and Boost referrals.
Try Beehiiv →
Webflow
Visual site builder with real CSS export and a CMS that scales.
Try Webflow →
Some links above are affiliate links. We may earn a commission if you sign up. See our disclosure for details.
Related reading
2026-05-28
Caddy vs Traefik vs nginx Proxy Manager: reverse proxies for modern stacks
We migrated three production stacks across Caddy 2.8, Traefik v3.1, and nginx Proxy Manager 2.11. Here is where each one earns its keep and where it bites you.
2026-05-28
K3s vs MicroK8s vs k0s: lightweight Kubernetes for small teams in 2026
Three lightweight Kubernetes distributions — K3s, MicroK8s, and k0s — compared on memory footprint, default add-ons, HA story, and which team shape each one actually fits. Operational opinions, not synthetic benchmarks.
2026-05-28
Why Block Handed Goose to the Linux Foundation: Agentic AI Goes Open
Block transferred its Goose agentic AI framework to the Linux Foundation. Here's what vendor-neutral governance means for teams choosing between LangChain, AutoGen, and Goose — and the lock-in risk most teams overlook.
2026-05-28
Clerk Auth Review: Authentication That Doesn't Make Developers Miserable
Hands-on Clerk review covering SDK quality, session management, multi-tenancy, webhooks, pricing, and how migration from Auth0 and NextAuth compares in real projects.
2026-05-27
Fly.io Edge Platform Review: Deploy Apps to 37 Regions With WireGuard Networking
We deployed a Go API and Next.js app across Fly.io's edge network, measuring cold starts, regional latency, and DX against Railway, Render, and Heroku — plus WireGuard networking and fly.toml deep-dive.
Get the best tools, weekly
One email every Friday. No spam, unsubscribe anytime.