AltFreeStack
Deployment, PaaS & Hostingpermissive-license100% FOSSπŸ”΄ Full Β· ~4GB

Dokku: Open Source alternative to Heroku in 2026

Dokku is the original 'mini-Heroku': a single-command-line PaaS that uses buildpacks or Dockerfiles and deploys with a simple `git push`.

License MIT32.2k starsWebsite GitHub Repository

Audit Snapshot

View notes β†’
  • License β€” Matches GitHub

  • GitHub β€” Active

  • Latest release β€” v0.38.31 Β· 16 days ago

  • Docker Compose β€” Official installer, no compose

  • Production β€” Not production-tested by AltFreeStack

Dokku vs. Heroku

Pros

  • The simplest and most minimal of the whole PaaS group

Things to consider

  • No official web dashboard (third-party plugins exist)

Quick Docker installation guide

This tool doesn't install via a plain docker-compose.yml β€” it uses the project's own official installer. Review it before running it. See the full step-by-step guide β†’

πŸ’‘ Official SaaS or self-hosted with AltFreeStack?

  • On the official cloud: a recurring monthly fee and usage limits on Heroku.
  • On your own VPS: 100% free software on your own server, with no artificial row, project or user limits.
install.sh (official script)
# Dokku se instala con su script oficial de bootstrap directamente sobre
# el servidor (gestiona el Docker del host), no mediante un
# docker-compose.yml:
wget -NP . https://dokku.com/install/v0.35.15/bootstrap.sh
sudo DOKKU_TAG=v0.35.15 bash bootstrap.sh

This docker-compose corresponds to an actively maintained project β€” last commit today.

This docker-compose not working for you? Report it on GitHub β†’

Technical profile

License
MIT
Category
Deployment, PaaS & Hosting
Replaces
Heroku
Tech stack
BashDocker

Key features

  • Deploy with git push, just like Heroku
  • Supports buildpacks and Dockerfiles
  • Hundreds of community plugins
🌐 Connect your domain with free SSL

Step 1 β€” Set up the DNS

In your domain registrar's dashboard (Cloudflare, Namecheap, GoDaddy...), create a record:

Type
A
Name/Host
@ (root domain) or a subdomain, e.g. app
Content/Value
Your server's public IP

Wait 5 to 15 minutes for the record to propagate across the internet.

Step 2 β€” Automatic reverse proxy with Caddy

One single file, no Nginx config or manual certificates β€” Caddy issues and renews Let's Encrypt HTTPS on its own.

Create a file called Caddyfile:

yourdomain.com {
    reverse_proxy localhost:YOUR_APP_PORT
}

Start Caddy with this command (pulls the image and runs it in the background):

docker run -d -p 80:80 -p 443:443 --name caddy --restart always -v $PWD/Caddyfile:/etc/caddy/Caddyfile -v caddy_data:/data caddy