Self-Host PaaS
Coolify, Kamal, Dokku, CapRover — Heroku on your own hardware.
The pleasant middle ground: you own the box, but a tool gives you the git push to deploy, "TLS just works", and "let me roll back" experience of a managed PaaS.
The candidates
- ★ Coolify — UI-driven, beautiful, self-hostable; supports Docker Compose, Dockerfiles, Buildpacks, GitHub auto-deploy, databases, S3 backups. The default "I want a Heroku UI on Hetzner" pick in 2026.
- ★ Kamal 2 (Basecamp) — CLI / config-file driven; rsync-of-Docker-images model; minimal footprint on the host. Most loved by terminal natives.
- Dokku — older, command-line; "Heroku in 100 lines of bash"; mature.
- CapRover — UI-driven; predates Coolify; less polished today.
- Easypanel — newer; freemium; clean UI.
- Dokploy — newer Coolify alternative; rising.
- Portainer — full Docker / Swarm management UI; not a PaaS exactly but close.
- YunoHost — for self-hosting end-user apps (not really a dev PaaS but worth knowing).
What you get
git pushdeploys — connect a repo, deploys on push.- Automatic HTTPS — Let's Encrypt out of the box.
- Zero-downtime rollouts — old container served until new one is healthy.
- Built-in databases — Postgres / MySQL / Redis / Mongo with one click.
- Backups to S3 / R2 — typically built in.
- Multi-environment — production / staging / preview branches.
- Webhooks / CI hooks — without writing any pipeline yourself.
What's the actual setup
Roughly:
- Provision a beefy Hetzner / Vultr / DigitalOcean VPS — 4 vCPU / 8 GB RAM is plenty for many apps.
- SSH in. Install Docker (or let Coolify install it via the bootstrap script).
- Install Coolify / set up Kamal / etc.
- Point your domain at the box; Coolify gets TLS automatically.
- Connect GitHub. Add an app. Deploy.
Typical time from a blank Hetzner box to "the app is up at example.com" is 15 minutes.
Where it shines vs. shines less
Shines:
- Indie SaaS, side projects, internal tools, agency client work.
- One-or-two-engineer teams.
- "I'd use Heroku but it's $50/dyno and I have 12 dynos."
Less ideal:
- Strict HA / multi-region.
- Compliance-heavy regulated workloads (you'll still need SOC 2 evidence).
- Stateful workloads beyond a single primary DB.
Tradeoffs vs. Kubernetes
- Faster. No control plane, no manifests, no Helm charts.
- Less elastic. Adding nodes is manual; no scheduler.
- Less portable. Coolify-specific config doesn't translate to k8s without rework. Kamal config is closer to portable Docker primitives.
Pick this if…
- Solo founder → small team. This is the answer.
- You want PaaS DX without the AWS bill.
- You're moving off Heroku / Render and want to control cost.
- You like
git pushdeploys but not Kubernetes.
Skip if you have many teams running on the same hardware, or if you genuinely need autoscaling.