DeployKit vs Coolify vs Dokploy vs CapRover: choosing a self-hosted PaaS in 2026

An honest comparison of four open-source, self-hosted PaaS options: architecture, builds, multi-server, previews and maturity, and which one fits which team.

5 min read[comparison][self-hosting][coolify][dokploy][caprover]

— DeployKit Team

If you want a Heroku- or Vercel-style workflow on your own server, there are four names you'll keep running into: Coolify, Dokploy, CapRover and DeployKit. All four are open source, all four run on Docker, and all four turn a git push into a running container with HTTPS.

The differences are in the details: how they orchestrate containers, how much they do beyond deploying apps, and how mature they are. We build DeployKit, so take this with that in mind. We've tried to be fair, and we're upfront about where DeployKit is behind.

Last reviewed in October 2026. These projects move fast, so check each one's documentation before deciding.

The short version

  • Coolify is the most mature and has the largest community and service catalogue. It's the safe default.
  • Dokploy is built on Docker Swarm, with first-class Docker Compose support. A good fit if you want Swarm-style multi-node clusters.
  • CapRover is the veteran. It's stable and simple, built on Swarm and nginx, and moves slowly.
  • DeployKit is the youngest. It runs plain Docker without Swarm and puts more into operations: monitoring, status pages, RBAC with audit logs, configuration as YAML and game servers.

Side by side

Coolify Dokploy CapRover DeployKit
License Apache-2.0 Open-source core Apache-2.0 MIT
Container runtime Docker Docker Swarm Docker Swarm Plain Docker
Reverse proxy Traefik (Caddy optional) Traefik nginx Traefik v3
Docker Compose Yes Yes, first-class Limited, uses its own captain-definition Yes, plus a template catalogue
Multi-server Remote servers over SSH Swarm nodes and remote servers Swarm cluster Remote servers over SSH
Hosted control plane Coolify Cloud (paid) Dokploy Cloud (paid) No No
Maturity Most mature Pre-1.0, fast-moving Mature, slow releases Pre-1.0 (v0.6), youngest

Architecture: Swarm or plain Docker?

This is the deepest difference, and it decides how each platform scales.

Dokploy and CapRover use Docker Swarm. Swarm gives you a cluster: several nodes, services scheduled across them and an overlay network. It's useful when one app has to run across several machines. The cost is an extra layer to understand and debug, and Swarm itself has seen little development for years.

Coolify and DeployKit drive plain Docker. Each app runs on one server you choose, and you can add more servers over SSH. That's simpler to reason about, and what runs on the server is a normal container you can inspect with docker ps. The limit is that one app doesn't spread across machines automatically. You scale it with replicas on the same server.

In DeployKit's case, the platform is only a control plane. Uninstall it and your containers keep running, because underneath it's just Docker, Compose and Traefik.

Building your code

  • Coolify: Nixpacks, Dockerfile, Docker Compose and static sites.
  • Dokploy: Nixpacks, Dockerfile, Buildpacks and Docker Compose.
  • CapRover: Dockerfile or its captain-definition file, plus prebuilt images.
  • DeployKit: Nixpacks by default, Dockerfile, or Cloud Native Buildpacks. If there's no Dockerfile, it generates one for Go, Python, Next.js, static SPAs and Node servers. It also offers optional vulnerability scanning with Trivy on every image.

DeployKit has one limitation worth knowing: on remote servers, apps are built from the repository's Dockerfile. Nixpacks, Buildpacks and Dockerfile generation only run on the local server.

Preview deployments

Coolify, Dokploy and DeployKit can deploy each pull request to its own URL. CapRover doesn't have this built in.

In DeployKit, previews work with GitHub and GitLab. With the GitHub App, each PR gets a single comment that's updated with the preview's URL and status, and a commit status that branch protection can require. The current limits: preview domains are served over plain HTTP, and previews copy the parent's environment variables, so you should enable them on a staging app.

Beyond deploying apps

Where the platforms differ most is in what comes on top of "build and run".

Coolify has the largest catalogue of one-click services and the widest community knowledge. If something has been self-hosted, someone has probably deployed it on Coolify and written about it.

DeployKit puts more into running things day to day:

  • Monitoring and alerts: live and historical CPU, memory and network metrics, alert rules and searchable logs.
  • Public status pages showing the live state and uptime of the services you choose.
  • Roles and audit logs: Admin, Operator and Viewer roles with per-project overrides, and a full log of who changed what.
  • Export and import: your whole instance as a YAML file you can review in git or use to rebuild on a new server.
  • Scheduled tasks: cron jobs and one-off commands in isolated containers.
  • Notifications to Discord, Slack, Telegram, email or a webhook.
  • Game servers: Minecraft, Valheim, CS2 and Terraria from a catalogue, with a live console, file manager and world backups.

Databases

All four can run the usual databases. DeployKit offers PostgreSQL, MySQL, MariaDB, MongoDB and Redis in one click, with scheduled backups and one-click restore. MongoDB can run as a replica set with keyfile and rs.initiate() set up automatically, so transactions and change streams work.

Where DeployKit is behind

We'd rather say it here than have you find out later:

  • It's young. Version 0.6 and a much smaller community than Coolify. Fewer blog posts, fewer answered forum threads, fewer people who've hit your exact problem.
  • No clustering. An app runs on one server. If you need a single service spread across several nodes, Swarm-based Dokploy or CapRover fit better today.
  • Smaller template catalogue than Coolify's.
  • No hosted control plane. If you don't want to run the panel yourself, Coolify Cloud and Dokploy Cloud exist; DeployKit has no equivalent.

Which one should you pick?

  • You want the safest bet with the most community support: Coolify.
  • You think in Docker Compose and want a Swarm cluster: Dokploy.
  • You already run CapRover and it works: there's little reason to move.
  • You want plain Docker underneath, monitoring and status pages built in, roles with an audit log, your config in git as YAML, or game servers next to your apps: DeployKit.

The honest answer for most small teams is that any of the four will do the job. Try the one that matches how you think about your infrastructure. Moving between them later mostly means rebuilding the configuration, since your apps are plain containers on all four.

Try DeployKit

The installer sets everything up on a fresh VPS:

bash
npm i -g @deploykit/cli && deploykit install

From there, the quickstart takes you to your first deployed app. If you're coming from a managed platform, read the self-hosted Heroku alternative or the self-hosted Vercel alternative for Next.js next.

← all posts