Tooling

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 push deploys — 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:

  1. Provision a beefy Hetzner / Vultr / DigitalOcean VPS — 4 vCPU / 8 GB RAM is plenty for many apps.
  2. SSH in. Install Docker (or let Coolify install it via the bootstrap script).
  3. Install Coolify / set up Kamal / etc.
  4. Point your domain at the box; Coolify gets TLS automatically.
  5. 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 push deploys but not Kubernetes.

Skip if you have many teams running on the same hardware, or if you genuinely need autoscaling.

On this page