Dokku
Smallest open-source PaaS implementation you can run
Dokku is a lightweight platform-as-a-service that turns a single server into a Heroku-style deployment target using Git push and Docker. It supports buildpacks and a rich plugin ecosystem.
Key features
- Git push deployments
- Buildpack and Dockerfile support
- Plugin ecosystem
- Minimal resource footprint
Pros & cons
Strengths
- Heroku-style Git deploys
- Minimal resource footprint
- Rich plugin ecosystem
Trade-offs
- Single-server by design
- CLI only, no dashboard
Dokku replaces
Last reviewed Aug 26, 2026 · 870 words
A $5-a-month VPS with 1 GB of RAM, one install script, and git push dokku main gets you a working Heroku replacement in under 15 minutes. That is the entire Dokku pitch, and after 13 years of development it still delivers exactly that and deliberately nothing more. There is no dashboard, no multi-server scheduling, no team accounts. There is a CLI that does one thing per subcommand, a plugin system that fills the gaps, and 32,110 GitHub stars from people who prefer it that way.
The install and first deploy
Dokku wants a fresh Ubuntu or Debian box with a domain pointed at it. The bootstrap script from the official install page installs Docker, Dokku and its bundled Nginx router. After that, the workflow for any app that Heroku could build is:
# on the server
dokku apps:create blog
dokku domains:add blog blog.example.com
# on your laptop
git remote add dokku [email protected]:blog
git push dokku main
The push triggers a build using Herokuish buildpacks, which detect Node, Python, Ruby, Go, PHP and the rest, or a Dockerfile if your repo has one. The build output streams back over the SSH session, so a failing build looks like a failing CI job rather than a silent 502. When it succeeds, Dokku writes an Nginx vhost and the app is live on port 80.
Databases and TLS are plugins, and the official ones are good
Core Dokku knows nothing about Postgres. The project maintains plugins for Postgres, MySQL, Redis, MongoDB and a handful of others, each with the same verbs:
dokku plugin:install https://github.com/dokku/dokku-postgres.git postgres
dokku postgres:create blog-db
dokku postgres:link blog-db blog
The link injects DATABASE_URL into the app's environment and restarts it, which is the Heroku convention most frameworks already expect. Backups are dokku postgres:export blog-db > blog.dump, and there is a postgres:backup-schedule verb that ships dumps to S3-compatible storage on a cron. The Let's Encrypt plugin is the other one you install on day one:
dokku plugin:install https://github.com/dokku/dokku-letsencrypt.git
dokku letsencrypt:set --global email [email protected]
dokku letsencrypt:enable blog
dokku letsencrypt:cron-job --add
That last line is the one people forget, and the certificate expires 90 days later with a Sunday-morning page.
Single server is a design decision, not a limitation to work around
Dokku runs everything on the box it is installed on. There is a Kubernetes scheduler plugin and a Nomad one, but if you need them you have outgrown the tool and should say so. The honest capacity of a Dokku box is about what a single Docker host can do: on 2 GB of RAM I have run 6 small Rails and Node apps with 2 Postgres instances comfortably, with dokku ps:scale blog web=2 for the one that got traffic. The memory-heavy step is builds, not runtime; a Node build with a large dependency tree can transiently need 1 GB by itself, which is why the 1 GB minimum in the catalogue is a floor and 2 GB is the number I would actually buy.
Where Coolify beats it, and where it doesn't
Coolify is the obvious competitor in the dev platforms category and it has the dashboard Dokku refuses to build, plus multi-server deploys and one-click installs of common self-hosted apps. If you want to click, pick Coolify. Dokku wins on three things: it fits in half the RAM, its behaviour is fully scriptable because the CLI is the only interface, and the buildpack path means a plain Heroku-shaped repo deploys with zero configuration files. For a developer who is already comfortable in a terminal and wants their own apps deployed rather than a catalogue of other people's, Dokku is the smaller, quieter choice. The Heroku alternatives page covers the broader field.
The operational habits that keep it boring
Three things, all small. Run dokku config:set --no-restart when setting several variables at once, then restart once, or every config:set bounces the app. Set dokku nginx:set blog client-max-body-size 50m for anything that accepts uploads, because the default 1 MB limit produces a 413 that looks like an application bug. And keep dokku apps:report output in your notes, because the day you rebuild the server you will want to know exactly which plugins and domains each app had.
What I'd do
Buy a 2 GB VPS, install Dokku with the Postgres and Let's Encrypt plugins, put my own side projects on it, and never touch the config again except to git push. I would not run other people's software on it; a Nextcloud or an Immich belongs in a compose file elsewhere, not shoehorned into a PaaS. As a personal Heroku for things you write yourself, Dokku is the best value in self-hosting: 1 GB of RAM, zero monthly fee, and a deploy story that has not needed to change since 2013.
Compare Dokku
5 head-to-head comparisons.
Similar self-hosting platforms (paas) apps
Supabase
Self-Hosting Platforms (PaaS)Open-source Firebase alternative
Replaces Firebase
Coolify
Self-Hosting Platforms (PaaS)Self-hosted platform-as-a-service alternative to Heroku
Replaces Heroku, Netlify
PocketBase
Self-Hosting Platforms (PaaS)Open-source backend in a single file
Replaces Firebase
Appwrite
Self-Hosting Platforms (PaaS)Open-source backend platform for building applications
Replaces Firebase, Supabase
Directus
Self-Hosting Platforms (PaaS)Instant REST and GraphQL API for any SQL database
Replaces Contentful, Firebase
Dokploy
Self-Hosting Platforms (PaaS)Open-source deployment platform for apps and databases
Replaces Vercel, Heroku