Writing

What is Dokku? Slashing a $200 Cloud Bill to a $5 VPS with Open-Source PaaS Architecture

Deploying a web app, PostgreSQL, and Redis shouldn't cost $200/month in 'Cloud Tax'. Discover how Dokku combines SSH, Git, Docker, and Nginx to deliver a zero-overhead, zero-downtime Heroku experience on your own $5 Linux server.

Furkan ÖzayOctober 25, 2026 · 5 min read
czCZAY.DEV // EDITORIALEN
CONTAINER & DEVOPS

#DevOps · 5 MIN READ

FURKAN ÖZAYVOL. 2026 // #315A

Deploying a web application, a relational PostgreSQL database, and a small Redis cache is—on paper—the simplest architecture in software engineering.

Yet when you spin up those three building blocks on modern managed cloud platforms today, adding a few gigabytes of RAM, automated backups, and an extra team seat can easily balloon a $20 bill into $150 to $300 every month before your product even hits meaningful revenue.

Most of that markup isn't paying for raw CPU cycles or NVMe storage. It is paying the "Cloud Tax" for Developer Experience: the luxury of typing git push on your laptop and watching your code go live without wrestling with bash scripts.

What if you could rent a raw €5/month Linux VPS, install zero heavy web dashboards, and get the exact same git push zero-downtime workflow? Welcome to Dokku.

· · ·

1. What Exactly is Dokku? (And Why Zero Dashboard Matters)

Dokku describes itself as "The smallest PaaS (Platform as a Service) implementation you've ever seen." Powered by Docker, it turns any plain Ubuntu or Debian server into your personal mini-Heroku.

What separates Dokku from newer self-hosted control panels is its resource philosophy:

  • Many web-based server panels run their own heavy Node/PHP dashboard, internal database, and metrics daemons—consuming 1.5 GB to 2 GB of RAM before you even deploy your first app.
  • Dokku has no web UI by default. It is a razor-thin orchestration layer built on top of four battle-tested Linux primitives: SSH, Git, Docker, and Nginx.
  • When you aren't actively running a deployment, Dokku consumes virtually 0 MB of idle RAM.
· · ·

2. Under the Hood: What Happens When You Run git push dokku main?

Once Dokku is installed on your server, deploying from your laptop requires just adding a Git remote:

Bash
git remote add dokku dokku@your-server-ip:my-api
git push dokku main

The second you hit Enter, a four-stage pipeline executes on your server:

text
[Laptop: git push] ──(SSH Tunnel)──▶ [1. sshcommand & Git Hook]
                                              │
                                              ▼
                                     [2. Build Phase]
                                     (Dockerfile OR Cloud Native Buildpacks)
                                              │
                                              ▼
                                     [3. Zero-Downtime Verification]
                                     (Spin up v2 alongside v1 ➔ Run CHECKS)
                                              │
                                              ▼
                                     [4. Nginx Upstream Switch]
                                     (Route traffic to v2 in <1ms ➔ Retire v1)

Stage 1 & 2: SSH Interception & Automatic Building

Dokku intercepts the incoming Git push over SSH and inspects your repository:

  • If your project contains a Dockerfile, Dokku builds your exact image without interference.
  • If there is no Dockerfile, Dokku invokes Cloud Native Buildpacks / Herokuish. It automatically detects package.json (Node.js), requirements.txt (Python), composer.json (PHP/Laravel), go.mod (Go), or .csproj (.NET) and compiles an isolated production container.

Stage 3 & 4: True Zero-Downtime Deployment

If you deploy manually on a VPS using docker compose up -d --build, restarting the container causes 5 to 15 seconds of dreaded 502 Bad Gateway errors for active users.

Dokku eliminates this completely:

  1. It leaves your existing container (v1) running and serving live traffic.
  2. It starts the new container (v2) in parallel on an internal port.
  3. It executes readiness probes (CHECKS) against v2 to verify the server booted and connected to the database.
  4. Only after v2 returns 200 OK does Dokku reload the Nginx reverse proxy upstream, shifting live traffic to v2 in milliseconds before gracefully stopping v1.
· · ·

3. One-Line Databases, Encrypted Backups, and Free SSL

Through its official plugin system, Dokku manages stateful backing services and TLS certificates with single commands:

Bash
# 1. Create a PostgreSQL instance and link it to your app
dokku postgres:create prod-db
dokku postgres:link prod-db my-api
# -> Automatically injects DATABASE_URL=postgres://... into my-api!
 
# 2. Schedule nightly encrypted backups to AWS S3 / Cloudflare R2
dokku postgres:backup-schedule prod-db "0 3 * * *" my-backup-bucket
 
# 3. Provision and auto-renew free Let's Encrypt HTTPS certificates
dokku letsencrypt:enable my-api
dokku letsencrypt:cron-job --add
· · ·

4. Dokku vs. Coolify vs. Kubernetes vs. Managed PaaS

CriteriaDokkuCoolify / CapRoverKubernetes (K8s)Vercel / Render / Heroku
Control InterfacePure CLI & Git over SSHFull Web Dashboard UIkubectl + YAML ManifestsManaged Cloud Dashboard
Idle RAM Overhead~0 MB (Negligible)~1.2 GB – 2 GB RAMHigh (Control Plane)N/A (Managed)
Best For1–15 apps on a fast, lean single VPSTeams wanting a visual self-hosted UIMulti-node clusters & dedicated DevOps squadsZero-ops teams willing to pay a premium

Info: Engineering Takeaway

Great architecture isn't about using the most complex orchestrator—it's about solving your workload with the fewest moving parts. For 90% of SaaS products, APIs, and startups, a €5–€10 Linux VPS running Dokku delivers hundreds of thousands of daily requests with zero platform lock-in.

Interactive Roadmap & Tool

Read next