Remember Heroku? git push heroku main and your app was live. Then pricing changed, free tiers vanished, and suddenly that side project costs more than the domain. You don't need Kubernetes. You don't want another dashboard with forty menu items. You want push, build, run — on a VPS you already pay for.
Dokku is the original mini-Heroku. ~32k GitHub stars, MIT licensed, around since 2013, and still the smallest serious PaaS you'll find: Docker under the hood, nginx in front, deploy via Git over SSH. No web UI required. No monthly platform fee.
What it actually does
Dokku turns a single Linux server into a Git-driven app platform. Create an app, add a Git remote, push — Dokku builds with Heroku buildpacks or a Dockerfile, runs the result in a container, and routes traffic through nginx.
The Heroku workflow, for real.
dokku apps:create myapp
git remote add dokku dokku@your-server.com:myapp
git push dokku main
That's the deploy. Buildpacks detect Node, Python, Ruby, PHP, Go, and more. Drop a Procfile or Dockerfile when auto-detect isn't enough.
Plugins for everything else. The ecosystem adds Postgres, MySQL, Redis, Let's Encrypt TLS, storage, cron, and dozens more via dokku plugin:install. dokku postgres:create and dokku postgres:link — database wired to your app without hand-rolling compose files.
Process types. Web processes get nginx routes. Worker processes and scheduled cron tasks are first-class — same mental model as Heroku's procfile scaling.
CLI-native. Dokku is terminal-first. There's no glossy dashboard — which is either a feature or a bug depending on whether you enjoy SSH. Agencies that live in Git and CI often prefer it that way.
Dokku vs Coolify vs Dokploy
We covered Coolify and Dokploy — both ship web UIs, Git provider integrations, and Traefik-based TLS out of the box.
Pick Dokku when you want the leanest possible Heroku clone, you're comfortable with CLI deploys, and you've been doing git push deploys for years. Lower overhead, battle-tested, plugin ecosystem matured over a decade.
Pick Coolify or Dokploy when your team wants a dashboard, one-click databases in a GUI, and GitHub webhook auto-deploys without touching SSH remotes.
Running Dokku and Coolify on one box is redundant. Pick one deploy layer.
Why self-host?
Heroku economics without Heroku. One Canadian VPS hosts multiple apps for a flat monthly rate. Client staging environments become dokku apps:create client-staging instead of another SaaS subscription.
Canadian residency. Apps and Postgres volumes on infrastructure you control — clean answer when contracts ask where code runs.
Proven stack. Dokku isn't a 2024 startup PaaS that might pivot. It's maintained, documented at dokku.com, and used in production by teams who've run it for years.
What running it takes
Fresh Ubuntu 22.04/24.04 or Debian 11+ (amd64 or arm64). Minimum 1 GB RAM — add swap on smaller VMs because Docker builds spike memory.
wget -NP . https://dokku.com/install/v0.38.19/bootstrap.sh
sudo DOKKU_TAG=v0.38.19 bash bootstrap.sh
Pin the version tag — check [dokku.com](https://dokku.com) for current stable. Then:
dokku domains:set-global yourdomain.com— apps becomeapp.yourdomain.comdokku ssh-keys:add admin— paste your deploy key- Install plugins you need (postgres, letsencrypt) before first production deploy
Point DNS wildcard or per-app A records at the server. Open ports 22 (SSH deploy), 80, and 443. The bootstrap script installs Docker and nginx — don't colocate another web server on the same host without planning port conflicts.
Back up Postgres data directories and app storage. dokku ps:rebuild can recover from git; your database cannot recover from wishful thinking.
Who it's for (and who should skip it)
Good fit: developers who miss Heroku's deploy UX, agencies shipping small client apps from Git, solo founders who want push-to-deploy on a Canadian VPS, teams that prefer CLI over clicking through a PaaS dashboard.
Maybe skip it: if nobody on the team is comfortable with SSH and Git remotes — use Dokploy's UI instead. If you need multi-server orchestration at scale, you're past single-host Dokku. If you want a family app store for Jellyfin, that's CasaOS territory.
Hosting it in Canada
We run Dokku on Canadian VPS and dedicated servers — wildcard DNS, Let's Encrypt via dokku-letsencrypt plugin, Postgres backups, and RAM sized for build spikes during deploy.
Tell us how many apps and whether you need Postgres on the same box — we'll set up Dokku clean on a fresh VM, because Dokku really does want a dedicated host.