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-06-22
Caddy vs Nginx in 2026: When Automatic HTTPS Is Worth the Switch
A practical comparison of Caddy and Nginx for solo developers and small teams: certificate management, performance trade-offs, config ergonomics, and when switching actually pays off.
2026-06-22
Hetzner vs OVH for Side Projects: Bare-Metal Value in 2026
A measured comparison of Hetzner and OVHcloud for side projects in 2026 — pricing models, bandwidth, hardware, and the trade-offs that actually matter for a solo developer.
2026-06-22
Bun vs Node.js in Production: What Actually Changes in 2026
A measured look at what swapping Node.js for Bun changes in real production: install speed, native TypeScript, built-in tooling, and the compatibility and observability gaps that still bite.
2026-06-22
Coolify vs Dokploy: Self-Hosted PaaS for Solo Developers in 2026
A practical comparison of Coolify and Dokploy for solo devs running their own deployments in 2026 — architecture, setup, resource use, and which one to pick.
2026-06-22
Turso vs Neon: Serverless SQLite and Postgres Compared in 2026
A developer's comparison of Turso (edge SQLite/libSQL) and Neon (serverless Postgres) in 2026 — latency model, branching, cost shape, and lock-in.
Get the best tools, weekly
One email every Friday. No spam, unsubscribe anytime.