OmniFeed Search

Self-hosted app deployment platforms for Heroku-style deploys

A self-hosted deployment platform gives you the Heroku workflow on a server you rent or own. You point it at a Git repository or a Docker image, and it builds the app, runs it in a container and keeps its database next to it, for the price of the server. We compared four actively maintained open source platforms, using their documentation, licenses and release pages.

Three things about you decide which one fits. Do you want to manage apps from a browser, or from a terminal over SSH? Will other people sign in, and does your company want them to use its identity provider? And how much memory does your server have? Two of the four come out level at the top, and the difference between them shows up when you add servers or people.

CoolifyDokployDokkuCapRover
Managed fromBrowserBrowserCommand lineBrowser
Minimum memory2 GB2 GB1 GB1 GB
LicenseApache 2.0Apache 2.0, enterprise code proprietaryMITApache 2.0 with added terms
Paid extrasNoneEnterprise licenseDokku Pro, one-time licenseCapRover Pro subscription

Scores

1–5 per criterion · select a score for its reasoning and sources
Self-hosted app deployment platforms rubric: scores out of 5 and the average of each product's scores
# Product Free web dashboard Ways to build an app One-click app catalog Database backups Running on several servers Pull request previews Accounts and sign-in Deployment alerts Hardware needs License and paid features Overall
T1 Coolify 5 4 4 5 4 5 5 4 3 5 4.4
T1 Dokploy 5 5 5 5 5 4 4 5 3 3 4.4
3 Dokku 1 4 1 4 5 2 2 1 4 4 2.8
4 CapRover 4 2 4 1 5 1 1 1 4 2 2.5
How each criterion is scored

Free web dashboard

How many of these five you can do in a web dashboard included free with the self-hosted platform: deploy an app, change its settings (environment variables, domains), read its logs, open a terminal inside a running container, and see CPU and memory charts. A dashboard sold as a paid add-on doesn't count.

  1. 5 A free dashboard that does all five.
  2. 4 A free dashboard that does four of the five.
  3. 3 A free dashboard that does three of the five.
  4. 2 A free dashboard that does one or two of the five.
  5. 1 No free web dashboard; everything is done from the command line.

Ways to build an app

How many of these five ways to get an app running the platform supports: build from a Dockerfile; run a Docker Compose file with several services; build plain source code with no Dockerfile, the language detected automatically (by buildpacks, Nixpacks or Railpack); reuse Heroku buildpacks, which matters when moving apps off Heroku; and run a prebuilt image from a registry. Compose support that the documentation calls experimental or limited to a subset of Compose settings doesn't count.

  1. 5 All five.
  2. 4 Four of the five.
  3. 3 Three of the five.
  4. 2 Two of the five.
  5. 1 One of the five.

One-click app catalog

How many ready-made apps (databases, analytics, CMSs and similar) the platform's own catalog can install in one step, by the count the project publishes or its catalog lists.

  1. 5 500 or more apps.
  2. 4 300 to 499 apps.
  3. 3 100 to 299 apps.
  4. 2 Fewer than 100 apps.
  5. 1 No one-click catalog.

Database backups

What the free platform does to back up the databases it runs, and how far it helps you restore them. A backup of the platform's own settings doesn't count.

  1. 5 As 4, plus restoring a stored backup by picking it in the dashboard or naming it in one command, with no manual download.
  2. 4 Scheduled database backups uploaded to S3-compatible storage.
  3. 3 Scheduled database backups kept on the server only.
  4. 2 A command or button for a one-off database export, with no schedule.
  5. 1 No built-in database backups; the documentation leaves them to you.

Running on several servers

How far one installation can spread apps across more than one server, using only what the free platform includes.

  1. 5 One app run as several copies across a cluster of servers (such as Docker Swarm or Kubernetes) that the platform sets up, which places the copies and routes traffic to them.
  2. 4 One app deployed as copies on several servers from one installation, with traffic split by a load balancer you set up yourself.
  3. 3 Several servers managed from one installation, each app on one server.
  4. 2 Several servers, each a separate installation managed on its own.
  5. 1 One server only.

Pull request previews

Whether each pull request can get its own temporary copy of the app at its own address, so people can try a change before it is merged, and for how many Git hosts (GitHub, GitLab, Bitbucket, Gitea).

  1. 5 Built in for pull requests on two or more Git hosts, and deleted automatically when the pull request is closed or merged.
  2. 4 Built in for pull requests on one Git host, and deleted automatically when the pull request is closed or merged.
  3. 3 Built in for pull requests on one Git host.
  4. 2 Previews through an official CI workflow you add to your repository, which creates and deletes them; not built into the platform.
  5. 1 No pull request previews documented.

Accounts and sign-in

Accounts and sign-in protection for a team sharing one installation: separate accounts, roles or permissions, two-factor sign-in, and single sign-on through an identity provider (OAuth, OpenID Connect or SAML). Only what the free self-hosted edition includes counts.

  1. 5 As 4, plus single sign-on through an identity provider.
  2. 4 As 3, plus two-factor sign-in.
  3. 3 Separate accounts with roles or per-user permissions.
  4. 2 Separate accounts or keys for several people, all with the same access.
  5. 1 One shared admin login, with no separate accounts.

Deployment alerts

How many channels (email, Slack, Discord, Telegram, a webhook and so on) the free platform can send a message to when a deployment fails, as listed in its documentation. Alerts only available with a paid add-on don't count.

  1. 5 Ten or more channels.
  2. 4 Five to nine channels.
  3. 3 Two to four channels.
  4. 2 One channel.
  5. 1 No deployment alerts.

Hardware needs

The smallest server the project's own documentation gives as the minimum for running the platform itself.

  1. 5 The documented minimum is 512 MB of RAM or less.
  2. 4 The documented minimum is 1 GB of RAM.
  3. 3 The documented minimum is 2 GB of memory (RAM) or more, even if the documentation says smaller servers can work.
  4. 2 The documentation says it is lightweight but gives no figures.
  5. 1 The documentation gives no hardware guidance.

License and paid features

Whether the platform is open source under a standard license, and whether any of its features are sold separately.

  1. 5 A standard open source license, with every feature free.
  2. 4 A standard open source license (such as MIT or Apache 2.0), with paid features sold as a separate product.
  3. 3 A standard open source license for most of the code, with paid features in the same code base under a proprietary license.
  4. 2 An open source license with added terms that limit how the code may be modified or redistributed.
  5. 1 Not open source.
T1

Coolify

For teams that want every feature free
4.4/5

Coolify is a browser dashboard for apps, databases and ready-made services on your own servers, and it suits a small team that doesn’t want to run into a paid tier later. The self-hosted edition is free with “full access to all features”, and that matters most for sign-in. Team roles, two-factor codes and single sign-on are all included: people log in through your company’s identity provider, with named setups for Authentik, Clerk and Zitadel and a general OpenID Connect option for the rest. Dokploy sells single sign-on as part of an Enterprise license.

Day to day, you open an app and move between its settings, the log of each deployment, the app’s own output and a terminal inside the running container, with CPU and memory charts beside them. Each pull request on GitHub, GitLab, Gitea or Bitbucket can get a preview copy at its own address, which Coolify deletes once the pull request is merged or closed. Databases get scheduled backups to an S3-compatible bucket, and restoring one means picking it under Import backup.

Two gaps matter if you’re leaving Heroku or planning to grow. The build guides cover Dockerfiles, Docker Compose and automatic detection with Nixpacks or Railpack, but don’t mention Heroku buildpacks, the scripts Heroku uses to build an app from source, so an app tied to a specific buildpack moves more easily to Dokploy or Dokku. Coolify can also put copies of one app on several servers, but the load balancer in front of them is yours to set up, and the documentation tells you to move apps off its Docker Swarm option, a tool for spreading containers over a group of servers, before the next major version.

On a small server, the documentation gives 2 GB of RAM as the minimum. It says Coolify can run on 512 MB but doesn’t recommend it, so on a 1 GB server you’d be running it below the recommended size.

What it does

  • Browser dashboard with logs, a container terminal and CPU and memory charts
  • Builds from a Dockerfile, Docker Compose, Nixpacks or Railpack, or runs a registry image
  • More than 360 one-click services
  • Scheduled database backups to S3-compatible storage, with restore
  • Pull request previews

Pros

  • Every feature is free in the self-hosted edition, single sign-on included
  • Previews for GitHub, GitLab, Gitea and Bitbucket pull requests, deleted on merge or close
  • Restores a database backup from S3 inside the dashboard
  • Deployment alerts to six channels, including email, Discord, Slack and a webhook

Cons

  • The documented minimum is 2 GB of RAM; smaller servers work but aren't recommended
  • Copies of one app on several servers need a load balancer you set up yourself
  • The build guides don't mention Heroku buildpacks

Who should skip:Teams that want one app spread over a cluster that routes traffic between servers by itself.

Scores and sources →

T1

Dokploy

For one app spread over several servers
4.4/5

Dokploy covers the same ground as Coolify from a similar browser dashboard, and the two come out level. We’d pick Dokploy over Coolify if one app has to run on several servers, because it runs on Docker Swarm: you set the number of replicas and Swarm places the copies on the nodes. With Coolify, the traffic between servers goes through a load balancer you configure.

It also builds more kinds of projects. On top of Dockerfiles, Compose files and automatic detection with Nixpacks or Railpack, it runs Heroku and Paketo buildpacks, so an app that relies on a Heroku buildpack can keep it. Its template catalog lists more than 500 apps, and build failures can reach Slack, Microsoft Teams, ntfy, Gotify and eight other providers.

What you give up is in the paid edition. Single sign-on, user provisioning from an identity provider, custom roles and audit logs need an Enterprise license, and part of the code base is under a proprietary license. The free edition still has owner, admin and member roles, per-member permissions and two-factor codes. Previews are designed for GitHub; for code on GitLab, Gitea or Bitbucket, Coolify is the platform here with built-in previews, since CapRover’s documentation doesn’t mention them and Dokku’s come from a GitHub workflow.

What it does

  • Browser dashboard with real-time logs, a container terminal and monitoring
  • Builds with a Dockerfile, Docker Compose, Nixpacks, Railpack, or Heroku or Paketo buildpacks
  • More than 500 one-click templates
  • Docker Swarm replicas across several servers
  • Scheduled database backups to S3, with restore

Pros

  • Runs one app as several replicas spread over a Swarm cluster
  • Heroku buildpacks for apps that already build on Heroku
  • Build-failure alerts to twelve providers, including Microsoft Teams, ntfy and Gotify
  • The largest one-click catalog of the four

Cons

  • Single sign-on, custom roles and audit logs need a paid Enterprise license
  • Pull request previews are built for GitHub only
  • Asks for 2 GB of RAM and 30 GB of disk

Who should skip:Teams that need single sign-on without buying a license.

Scores and sources →

3

Dokku

If you deploy from a terminal
2.8/5

Dokku is the closest of the four to Heroku itself, and it suits a developer who manages servers from a terminal. You add the server as a Git remote, run git push, and Dokku builds the app with Heroku buildpacks, Cloud Native Buildpacks, Nixpacks, Railpack or a Dockerfile, or starts it from an image. Docker Compose files aren’t among its builders.

Everything is a command over SSH. PostgreSQL, MySQL, Redis and other databases come from official plugins, and one command schedules their backups to an S3 bucket; restoring means importing a dump file. A single Dokku server needs 1 GB of memory. To grow, its k3s scheduler turns the server into a small Kubernetes cluster, Kubernetes being the standard system for running containers across many machines, and every node in that cluster needs 2 GB.

The free version has no browser dashboard. Dokku Pro adds one, with live logs and a remote API, for a one-time license fee. The documentation describes no one-click catalog and no built-in deployment alerts, and team access is a list of SSH keys that all reach every app unless a plugin narrows them. Pull request previews come from a review app workflow in the official GitHub Action rather than from Dokku.

What it does

  • Deploys with git push, the way Heroku does
  • Builds with Heroku buildpacks, Cloud Native Buildpacks, Nixpacks, Railpack or a Dockerfile, or from an image
  • Official database plugins with scheduled S3 backups
  • k3s scheduler for a multi-server Kubernetes cluster

Pros

  • Runs on 1 GB of memory on a single server
  • MIT license
  • Heroku-style git push deploys and Heroku buildpacks
  • Database backups on a schedule to an S3 bucket

Cons

  • No free web dashboard; Dokku Pro is a paid one-time license
  • The documentation describes no one-click app catalog and no deployment alerts
  • Every SSH key reaches every app unless you add a plugin
  • A multi-server k3s cluster needs 2 GB of memory on every node

Who should skip:Anyone who wants a browser dashboard without buying Dokku Pro.

Scores and sources →

4

CapRover

For a dashboard on a 1 GB server
2.5/5

CapRover is a browser dashboard with a documented minimum of 1 GB of RAM, the same as Dokku, so it suits a small server when you want a dashboard rather than SSH. From an app’s Deployment tab you deploy a Dockerfile, one of its built-in language templates or a prebuilt image, then set environment variables and ports, read the app’s logs and roll back to an earlier image from Version History.

Server charts come from NetData, a monitoring tool you switch on in the dashboard; a terminal into containers isn’t documented. The catalog lists 363 one-click apps, and adding a server to its Docker Swarm cluster is done under Cluster → Nodes, with CapRover handling load balancing.

It ranks last for what it leaves out: database backups, separate accounts and alerts. Sign-in is one shared password, and two-factor codes and build-failure alerts come only with the paid CapRover Pro subscription. Dokku, on the same 1 GB, schedules database backups and builds from buildpacks, which is why it places above CapRover despite having no dashboard.

What it does

  • Browser dashboard with app logs and NetData server charts
  • Deploys a Dockerfile, a built-in language template or a prebuilt image
  • 363 one-click apps
  • Docker Swarm cluster with built-in load balancing
  • Rollback to an earlier image from Version History

Pros

  • Runs on 1 GB of RAM and still gives you a dashboard
  • Adds servers to its Swarm cluster from the dashboard
  • Rolls an app back to an earlier image in a few clicks

Cons

  • No built-in database backups; the documentation leaves them to you
  • One shared password; two-factor sign-in and build-failure alerts need the paid CapRover Pro
  • No buildpacks or automatic language detection, and Docker Compose import is experimental
  • Needs a public IPv4 address and a domain with wildcard DNS

Who should skip:Teams where each person needs their own login.

Scores and sources →

How to choose

  • Your team uses single sign-on, or you want pull request previews for code on GitLab, Gitea or Bitbucket: Coolify.
  • One app has to run as several copies across servers, or you want a dashboard that keeps your Heroku buildpacks: Dokploy.
  • You’d rather manage everything from a terminal: Dokku.
  • You want a dashboard on a 1 GB server and will back up databases yourself: CapRover.

With one server of 2 GB or more and nobody else signing in, Coolify and Dokploy will both do. We’d start with Coolify, because nothing in it is held back for a paid edition if a team joins you later.

Our picks

Questions

Can I move a Heroku app without writing a Dockerfile?

Dokku and Dokploy run Heroku buildpacks, and both can also detect the language with Nixpacks or Railpack. Coolify detects it with Nixpacks or Railpack too. Its build guides don’t mention Heroku buildpacks, though, so an app tied to one moves more easily to Dokku or Dokploy. CapRover has no automatic detection: you write a Dockerfile, pick one of its built-in language templates or deploy an image.

Will it run on a Raspberry Pi or another ARM server?

Coolify runs on 64-bit Raspberry Pi OS and on amd64 or arm64 servers, though its documented minimum is 2 GB of RAM. Dokku lists arm64 among its supported architectures. CapRover supports ARM64 too, but its install guide also asks for a public IPv4 address and a domain with wildcard DNS. Dokploy’s installation guide lists the Linux distributions it was tested on but doesn’t name processor architectures.

How we scored

Every score cites quotes from each product's own documentation, website and release notes, or from trusted third parties, captured in November 2026. Each criterion counts the same, and a criterion the evidence doesn't cover is shown as "?" and left out of that product's overall score.

Only features in each platform’s free self-hosted edition count toward its scores; paid add-ons are named in the reviews.

How our rankings work