Comparing selfhosted Heroku alternatives
Tags: webdev, heroku, tooling, devops
Published: 2022-11-07 09:50:02

First a disclaimer: I have built my own alternative, [Kubero](https://github.com/kubero-dev/kubero), which is part of this article.

Heroku is a well known and solid PaaS provider. It is very easy to deploy a web application and the pricing starts very low (they just canceled the free plan tough). Not so well known are their enterprise and private space plans which can become quite pricy.

But the good thing is that some open-source projects were launched during the last few years to replace Heroku on a self-managed infrastructure, like Google, AWS, or an even server rack in your basement.

There are already excellent [articles](https://dev.to/zevir/the-complete-list-of-heroku-alternatives-to-consider-1l8o) to list and introduce these projects. But they are not comparing them against each other.

It is important to point out, that a missing feature does not always have to be negative but in many cases, this comes with less complexity. And it is not my intent to rate any of these great projects.

Not part of this comparison are the hosted PaaS competitors of Heroku like netlify or platform.sh and licenced/closed source projects.

I did not install all the tools but did my best to look up the docs, issues, and roadmaps. If I misinterpreted something, please let me know in the comments, and point me to where you have found the information.

## These projects are being compared
- Kubero https://github.com/kubero-dev/kubero
- Coolify https://coolify.io/
- Caprover https://caprover.com/
- Dokku https://dokku.com/
- Piku https://github.com/piku/piku
- Cuber https://cuber.cloud/
- Acorn https://github.com/acorn-io/acorn

**Scroll right to see the full list**

|              | Heroku <br>Private Space | Kubero              | Coolify            | Dokku              | Caprover           | Piku               | Cuber              | Acorn              |
|-------------------|:-------------------:|:------------------:|:------------------:|:------------------:|:------------------:|:------------------:|:------------------:|:-------------------:|
| User Interface    | :white_check_mark:  | :white_check_mark:  | :white_check_mark: | :x: PRO            | :white_check_mark: | :x:                | :x:                | :x:                |
| Multi User        | :white_check_mark:  | :white_check_mark:  | :white_check_mark: | :white_check_mark: | :x:                | N/A                | N/A                | N/A                |
| Kubernetes        | N/A                 | :white_check_mark:  | :x:                | :x:                | :x:                | :x:                | :white_check_mark: | :white_check_mark: |
| Multi Kubernetes  | N/A                 | :white_check_mark:  | :x:                | :x:                | :x:                | :x:                | :x:                | :x:                |
| Scaling           | :white_check_mark:  | :white_check_mark:  | :x:                | :x:                | :white_check_mark: | vertically         | :x:                | :x:                |
| Autoscaling       | :white_check_mark:  | :white_check_mark:  | :x:                | :x:                | :x:                | :x:                | :x:                | :x:                |
| Cronjobs          | :white_check_mark:  | :white_check_mark:  | :x:                | :white_check_mark: | :x:                | :white_check_mark: | :white_check_mark: | :white_check_mark: |
| CLI               | :white_check_mark:  | :white_check_mark:  | :x:                | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: |
| API               | :white_check_mark:  | :white_check_mark:  | :x:                | :x: PRO            | :white_check_mark: | :x:                | :x:                | :white_check_mark: |
| Autodeployment    | :white_check_mark:  | :white_check_mark:  | :white_check_mark: | :x:                | :white_check_mark: | :x:                | :x:                | :x:                |
| Pull-Request-Apps | :white_check_mark:  | :white_check_mark:  | :white_check_mark: | :x:                | :x:                | :x:                | :x:                | :x:                |
| Dataclips         | :white_check_mark:  | :x:                 | :x:                | :x:                | :x:                | :x:                | :x:                | :x:                |
| CI/CD             | :white_check_mark:  | :white_check_mark:  | :white_check_mark: | :white_check_mark: | :x:                | :white_check_mark: | :x:                | :x:                |
| Builtin Addons    | :white_check_mark:  | :white_check_mark:  | :white_check_mark: | plugin             | :white_check_mark: | :x:                | :x:                | :x:                |
| Builtin Services  | :white_check_mark:  | :x:                 | :white_check_mark: | :x:                | :white_check_mark: | :x:                | :x:                | :x:                |
| Any language      | :white_check_mark:  | :white_check_mark:  | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: |


### User interface
The app needs to be easy to use. It should be possible to deploy an app with a view clicks. The user should be able to see the status of the app and the logs.

### Multi User
The app should be able to handle multiple users. Each user should be able manage applications.

### Kubernetes
Kubernetes has benefits like metrics, logmanagement, autoscaling and immutable infrastructure (restarts when the app crashes).

### Multi Kubernetes
It should be possible to deploy its apps to multiple different Kubernetes clusters.
### Scaling
The app should be able to scale apps horizontally and vertically.

### Auto scaling
The app should be able to auto scale apps horizontally and vertically based on the load.

### Cron jobs
The app should be able to run timed cron jobs periodically.

### CLI
The app should have a CLI to manage the running applications.

### API
The app should have an API to manage the running applications.

### CI/CD
The app should be able to deploy apps from git repositories.

### Autodeployment
The app should listen to git pushes on a branch (webhooks)

### Pullrequest Apps
Tha app should automaticly start a new app for every pull request.

### Built in addons
The app should have built in addons like databases, caches, queues, etc.

### Built in Services
The app should have built in services like Wordpress, Nextcloud, CachetHQ, etc.

### Any language
The app should be able to build and run any language.