Self-hosting a PaaS used to mean weekends lost to Nginx, systemd, and SSL renewals that broke at 3am. Coolify, Dokku, and CapRover all promise to compress that work into a git push and a web dashboard. They get there through different stacks, and the wrong pick costs you migration time you won't get back. We deployed the same three-service app — a Node API, a Postgres database, and a static Astro frontend — to each platform on a fresh $12/mo Hetzner CX22 (2 vCPU, 4GB RAM). What follows is what we hit, where each one bent, and which we'd reach for on the next project. Architecture decides what breaks Dokku is the oldest of the three (2013) and the leanest: a few thousand lines of Bash glue around Docker, designed to run on a single host. App lifecycles live in ~/dokku/<app> directories. There's no web UI in the core — you ssh in and run dokku apps:create , dokku domains:add , dokku certs:add . A community plugin ( dokku-letsencrypt ) handles TLS.…