Decision: Pick Dokku for the absolute minimum platform footprint on a single Proxmox VM (95 MB idle [5]) when you live in the terminal and can wire GitHub Actions for PR previews. Skip it if you need native preview environments, a web UI, or Docker Compose — Coolify covers all three out of the box.
What Is Dokku
Dokku [2] is an open-source, Docker-powered PaaS — GitHub ⭐ 31.9k (Jun 2026) [1] — that replicates the Heroku git-push workflow on a single Linux server. Started in 2013, v0.38.17 shipped June 3 2026, with 339 total releases and active maintenance (Shell 54%, Go 42%, MIT licence) [1].
Core idea: git push dokku main triggers a build, starts the container, and updates the Nginx reverse proxy — no additional orchestration required [4].
Deployment Workflow
# On the Dokku host — one-time setup per app
dokku apps:create myapp
dokku postgres:create mydb && dokku postgres:link mydb myapp
# On your machine
git remote add dokku dokku@host:myapp
git push dokku main # build → run → proxy update
Dokku auto-detects the builder [11]:
| File in repo root | Builder |
|---|---|
project.toml |
Cloud Native Buildpacks (pack-cli) |
Dockerfile |
docker build |
| Neither | Herokuish (Heroku v2a buildpacks) |
Apps must expose the PORT environment variable to receive HTTP traffic [4].
System Requirements
| Requirement | Value |
|---|---|
| OS | Ubuntu 22.04/24.04 or Debian 11+ x64 / arm64 [3] |
| RAM (minimum) | 1 GB (swap acceptable) [3] |
| Platform idle RAM | ~95 MB — no UI overhead [5] |
| Boot time | ~15 s [5] |
| Install | sudo DOKKU_TAG=v0.38.17 bash bootstrap.sh |
Debian 11+ is explicitly supported [3] — no workarounds needed for a Proxmox Debian VM.
Plugin Ecosystem
Zero databases are bundled; everything is opt-in [10]. Official plugins are Dokku-maintained; community plugins carry no quality guarantee.
| Category | Official plugins |
|---|---|
| Databases | PostgreSQL, MySQL, MariaDB, MongoDB, Redis, Memcached, Elasticsearch, ClickHouse, Meilisearch, RabbitMQ |
| SSL | dokku-letsencrypt ⭐ 1.1k — auto-renewing via cron [7] |
| Schedulers | Kubernetes, Nomad (as alternatives to the default Docker scheduler) |
| Monitoring | Grafana / Graphite / Statsd |
| Auth | HTTP Auth, Maintenance mode |
Let’s Encrypt setup is three commands [7]:
sudo dokku plugin:install https://github.com/dokku/dokku-letsencrypt.git
sudo dokku letsencrypt:cron-job --add
dokku letsencrypt:enable myapp
PR Preview Environments
No native support. Dokku has no built-in concept of per-PR deployments [6]. Two community options exist:
Option A — dokku-pr-action [8]: GitHub Action that creates a Dokku app on PR open, redeploys on push, and destroys on close. URL pattern: {project}-refs-pull-{pr}-merge.domain.com. Known issues: concurrent pushes hit deploy-lock failures; linked services (databases per preview) are not fully implemented.
Option B — dokku-deploy-system [9]: A fuller scaffold with per-PR URLs, auto-SSL, multi-database support, Trivy vulnerability scanning, and automatic cleanup on PR close. Requirements: Ubuntu 22.04, 4+ GB RAM, public domain, GitHub org setup.
Both require SSH credentials wired into GitHub Actions and all management happens via CLI — no UI to view or debug preview environments. Coolify ships this as a first-class UI feature [5].
Limitations
| Limitation | Impact for homelab / PR previews |
|---|---|
| Single-server only [6] | All apps + previews share one VM; no horizontal scale |
| No web UI [12] | SSH required for all management; steep ops curve for new team members |
| No Docker Compose [5] | Multi-container apps decomposed into separate linked Dokku services |
| No RBAC [6] | Deployers share root-equivalent SSH access |
| No native PR previews [8] | Custom GitHub Actions glue required; database-per-preview is fragile |
| Community plugin quality [6] | Some plugins unmaintained on recent Dokku versions |
Homelab / Proxmox VM Verdict
Dokku is the right choice when:
- You want a 1 GB RAM VM to comfortably host 3–5 small apps [3]
- You’re CLI-native and comfortable with SSH-based workflows [12]
- You want zero platform cruft — 95 MB idle leaves maximum headroom for app containers [5]
- PR previews are one-repo, one-language and you can absorb the GitHub Actions boilerplate [8]
Skip Dokku and reach for Coolify when: