Dokku: the small PaaS that never dies
Table of contents
- Key takeaways
- What Dokku is in 2025
- Why it survived the hype cycle
- When Dokku pays off versus alternatives
- Typical installation and deployment
- Honest limitations
- Conclusion
- Frequently asked questions
- Can I move an application from Heroku to Dokku without changing code?
- Is Dokku suitable if I need high availability or scaling across several servers?
- Why choose Dokku over Fly.io, Railway or Render?
Dokku is a single-server open-source PaaS that reproduces Heroku's git push deploy flow using Docker, buildpacks and an automatic SSL reverse proxy. Jeff Lindsay started it in 2013 and it is still actively maintained: release 0.35, from mid-2025, added Cloud Native Buildpack improvements and Caddy as an alternative to nginx.
Dokku appeared in 2013 as a weekend experiment by Jeff Lindsay, an engineer long fascinated by Heroku’s operational simplicity. He wanted to see if the core experience could be reproduced on a single server using Docker and a handful of bash scripts. Twelve years later, entire ecosystems have swung between boom and decline and Kubernetes is established as the large-scale infrastructure standard. Dokku is still alive, actively maintained and surprisingly relevant for a niche other solutions don’t serve well.
Key takeaways
-
Dokku reproduces Heroku’s
git pushexperience on a single VPS with Docker, buildpacks, and automatic SSL reverse proxy. -
Version 0.35 (mid-2025) added improved Cloud Native Buildpack support, Caddy as nginx alternative, and more robust multi-stage Dockerfile support.
-
Versus Kubernetes: Dokku solves 90% of what small applications need with 5% of the complexity and cost.
-
Versus commercial PaaS (Fly.io, Railway, Render): predictable cost on a European VPS, full data control, no per-usage billing.
-
Important limitation: everything runs on a single server; no native high availability or horizontal cross-node scaling.
What Dokku is in 2025
Dokku is an open-source PaaS that runs on a single server, for example a VPS. Its proposition is to reproduce Heroku’s git push deployment flow: you configure a server with Dokku, add the git remote, push your code. Dokku builds a Docker image using Heroku buildpacks or your own Dockerfile, deploys it, configures HTTP routing with nginx or Caddy, and hands back a working URL. All in under a minute for small applications.
The architecture is deliberately simple. Dokku isn’t a multi-node orchestrator. It runs Docker containers locally, manages their lifecycles, connects databases offered as plugins (PostgreSQL, MySQL, Redis, MongoDB). It also configures a reverse proxy with automatic SSL via Let’s Encrypt, and offers a CLI and optional web panel.
Why it survived the hype cycle
Dokku’s survival in an ecosystem where alternatives keep appearing and disappearing responds to three main reasons:
-
Disciplined focus: Dokku doesn’t try to grow in functionality to compete with Kubernetes or commercial PaaSes. It stays true to its original principle: a minimal PaaS that fits on a server.
-
Heroku compatibility: Because buildpacks are the same, an application that ran on Heroku tends to run on Dokku unchanged. This was a huge advantage when Heroku killed its free plan in 2022.
-
Stable community: Dokku has a small but reliable community, with Jose Diaz-Gonzalez as main maintainer for many years. Release cadence is reasonable and security issues are addressed.
When Dokku pays off versus alternatives
Versus Kubernetes: the difference in operational complexity is vast. Kubernetes in a managed cluster has high base cost and a serious learning curve. For a low-traffic application, the cost-complexity to benefit ratio is absurd. Dokku solves 90% of what these applications need with 5% of the complexity.
Versus commercial PaaSes (Fly.io, Railway, Render): the difference is cost and control. These services offer better developer experience and automatic horizontal scaling, but bill by usage with invoices that grow. For projects that want full data control, predictable costs, or European residency requirements, a European VPS with Dokku is a pragmatic solution.
Versus Docker Compose on a server: the difference is subtler. Docker Compose is enough if your application runs on one host. Dokku adds automatic buildpacks, certificate management, database management, revision between deployments, and hooks for migrations. If you’re going to replicate all that by hand with Compose, sooner or later you arrive at something similar to Dokku but worse.
Typical installation and deployment
On a fresh Debian or Ubuntu VPS, run the bootstrap script, create an app, create and link a database, set a domain, and enable Let’s Encrypt. From the local machine, add a git remote and push. In three minutes the application is deployed, with connected database, configured domain and issued SSL certificate. That’s the flow Heroku made famous, reproduced faithfully.
Honest limitations
-
Single server: if the server goes down, the application goes down. For real high availability you need another approach.
-
Horizontal scaling: Dokku supports vertical scaling and running multiple processes on the same server, but doesn’t scale across servers.
-
Plugin ecosystem: official ones are well maintained but community ones vary in quality. Review activity before relying on a little-used plugin in production.
-
Multi-tenant isolation: all applications on the server share the kernel and resources. For offering hosting to third parties, it isn’t enough.
Conclusion
My reading after using Dokku personally for several years is that it’s an excellent tool for a well-defined set of cases. For a solo developer or a small team whose web applications get moderate traffic, Dokku is probably the best productivity-cost-control ratio that exists. Neither Kubernetes nor commercial PaaSes beat it in that specific zone.
For any other case, better alternatives exist. But that intermediate niche (few applications, moderate traffic, contained budget, data control) is large and Dokku remains the tacit king. The general lesson: tools that survive long technology cycles aren’t the flashiest but the ones that solve a concrete problem without overreaching. Ignoring its existence when evaluating options for a small project is a common mistake that ends up costing money and unnecessary complexity.
Frequently asked questions
Can I move an application from Heroku to Dokku without changing code?
Yes, with buildpacks. Dokku uses the same Heroku buildpacks, so an application that ran on Heroku tends to run on Dokku unchanged; it also accepts your own Dockerfile. That compatibility was a huge advantage when Heroku killed its free plan in 2022 and thousands of small projects looked for an alternative. The flow is the same: add the git remote, push your code, and Dokku builds the Docker image, deploys it and configures the reverse proxy and SSL.
Is Dokku suitable if I need high availability or scaling across several servers?
No, everything runs on a single server: if it goes down, the application goes down. Dokku supports vertical scaling and running multiple processes on the same server, but it doesn't scale across servers. For real high availability you need another approach, such as Kubernetes. It also lacks sufficient multi-tenant isolation for hosting third parties, because all applications on the server share the kernel and resources.
Why choose Dokku over Fly.io, Railway or Render?
Cost and control. Commercial PaaSes offer a better developer experience and automatic horizontal scaling, but they bill by usage with invoices that grow. A European VPS with Dokku gives predictable costs, full data control and meets European residency requirements. Compared with hand-rolled Docker Compose, Dokku adds automatic buildpacks, Let's Encrypt certificate management, databases as plugins (PostgreSQL, MySQL, Redis, MongoDB) and hooks for migrations.