Coolify deploys applications from git repositories, runs managed databases and installs several hundred prepackaged services on servers you control, with Traefik or Caddy handling routing and certificates. It is the closest self-hosted equivalent to a Heroku account with a big add-on catalog.
Our verdict on Coolify#
Coolify spent years being recommended as a beta, and v4.0.0 shipped stable on 27 April 2026 after that long run. The line has moved fast since: 4.1 added the Railpack build pack and audit logging, 4.2 added persistent volume backups and cloud server provisioning, 4.3 rebuilt domain handling, and 4.4 is in release candidate with OpenID Connect. A v5 rewrite for multi-server scalability is in progress with no committed date, and the maintainer has said v4 stays supported. Practically, it is the richest catalog of the self-hosted PaaS options and also the heaviest: five containers just for the control plane (Coolify, Postgres, Redis, Soketi, and the Traefik or Caddy proxy) against a documented 2 CPU, 2 GB, 30 GB minimum. All state lives in /data/coolify plus the coolify-db volume, and the docs warn that Docker's iptables rules mean UFW will not close ports 8000, 6001 and 6002 for you.
Who Coolify is for#
Choose it if
- Someone hosting several small apps and side projects who wants a service catalog, not just a container runner
- A developer leaving Heroku or Railway who wants review-app style deploys per branch on a rented VPS
- A small team who needs managed Postgres, MySQL and Redis with scheduled backups to S3 without operating them by hand
Look elsewhere if
- You have a 1 GB VPS or a Raspberry Pi with 2 GB; the control plane alone will eat it
- You only run one or two containers, where a compose file and a reverse proxy do the same job with a tenth of the surface
- You need a frozen platform, since the release cadence has been roughly monthly through 2026
What running it actually looks like#
A single install script on a supported Linux host (Debian, Ubuntu, RHEL family, SUSE, Arch, Alpine or Raspberry Pi OS 64-bit) on amd64 or arm64. It brings up five containers: coolify (Laravel on PHP-FPM, published on 8000), postgres, redis, coolify-realtime (Soketi, on 6001 and 6002), and a coolify-proxy running Traefik or Caddy on 80 and 443. All persistent state is bind-mounted from /data/coolify on the host. You open 8000 to create the first admin, then add a domain so the proxy can issue certificates, after which the docs say you can safely close 8000, 6001 and 6002. Additional servers are added over SSH with a key Coolify generates; they run only the proxy and your workloads.
Resource profile#
- Memory
- 1200 MB idle, around 2048 MB in ordinary use. Documented minimum is 2 GB; the Coolify control plane alone (PHP-FPM, Postgres, Redis, Soketi, Traefik) uses most of the first gigabyte before your applications start.
- CPU and acceleration
- Two cores is the documented minimum and it is a real floor: Nixpacks and Railpack builds compile on the same machine that serves your production containers unless you configure a separate build server.
- Storage growth
- Documented 30 GB minimum. `/data/coolify` holds applications, databases, services, backups, images and SSH keys; the build image cache is what actually fills the disk and needs the automated cleanup enabled.
- Operational load
- 3 of 5, Moderate. Five control-plane containers, a Postgres you must dump rather than copy, and a proxy whose configuration lives in a bind mount. Upgrades are usually clean but the release cadence is fast enough that reading notes is not optional. Rubric level 3.
Figures describe a small single-household install and are the working assumptions behind our stack planner. Your numbers will differ with library size, user count and hardware. See methodology.
Data and backup surface#
/data/coolify on the host is the important directory: ssh (the keys used to reach every managed server, treat as secret), applications, databases, services, backups, images, and source/.env which contains the app key and database credentials. Copy that tree with permissions preserved. The coolify-db Docker volume holds the Postgres data for the control plane and needs a pg_dump, not a live file copy. Your managed application databases are separate volumes; use Coolify's scheduled backups to S3 for those. Built images and the proxy's generated dynamic configuration regenerate. Restoring without source/.env leaves you with an unreadable encrypted database.
Derived backup shape
Postgres dump. pg_dump (or pg_dumpall) into a file, then snapshot that file plus the app's data volume.
Traps and surprises#
UFW does not close Coolify's ports
Coolify's own docs say it plainly: Docker uses NAT-based iptables rules that bypass UFW, so blocking 8000, 6001 or 6002 with ufw deny does not actually block them. Use your provider's firewall, which sits outside the host, or bind the dashboard to a domain behind the proxy and rely on that. People who firewall the host and assume the dashboard is private are wrong in a way that does not produce an error message.
Losing source/.env makes your database unreadable
/data/coolify/source/.env holds the Laravel application key used to encrypt credentials stored in Postgres. Restore the database without that exact file and every stored secret, SSH key and registry credential decrypts to garbage. It is a bind-mounted file, so it is easy to miss if you back up Docker volumes only. Copy it first and store it separately from the database dump.
Builds run on your production server by default
Nixpacks and Railpack builds compile on whichever server you deploy to, on the same 2 cores the documented minimum assumes. A Next.js build during peak hours will visibly degrade everything else on that box. Coolify supports a dedicated build server; configure one before you notice the problem, or set concurrent build limits, which became per-server rather than global in the 4.3 line.
v4.0.0 stable is recent and v5 is a rewrite
Coolify was recommended widely while still labelled beta; the stable v4.0.0 tag is dated 27 April 2026. A v5 rewrite aimed at multi-server scalability is under way with no public release date, and the maintainer has stated v4 will continue to be supported. Do not plan a migration around v5 timing, and do not assume tutorials written before April 2026 match the current settings layout.
Specifications#
- Category
- Platforms and container management
- Licence
- Apache-2.0 (Permissive)
- Written in
- PHP (Laravel)
- First release
- 2021
- Maturity
- Stable
- Datastore
- PostgreSQL, with Redis for queues and a Soketi realtime service
- Default ports
80,443,6001,6002,8000- Ships as
- install script on a Linux host, additional servers added over SSH
- arm64 builds
- Yes
- Identity
- Native OIDC. OAuth providers have been supported for some time and OpenID Connect login landed in the 4.4 release candidate; check your version before promising SSO to anyone.
- Replaces
- Heroku, Vercel, Netlify, Railway
- Project site
- coolify.io
- Source
- github.com/coollabsio/coolify
- Documentation
- coolify.io/docs
Alternatives to Coolify#
Everything else in platforms and container management, closest in operational weight first.
| Tool | Ops load | Idle RAM | Licence |
|---|---|---|---|
| Dokploy | 3, Moderate | 900 MB | Apache-2.0, with DSAL 1.0 reserved for a /proprietary path |
| Komodo | 3, Moderate | 250 MB | GPL-3.0 |
| TrueNAS Community Edition | 3, Moderate | 8192 MB | LGPL-3.0 (middleware) |
| CasaOS | 2, Light | 300 MB | Apache-2.0 |
| Docker Engine | 2, Light | 120 MB | Apache-2.0 (Engine and Compose); Docker Desktop is proprietary |
| Podman | 2, Light | 40 MB | Apache-2.0 |
Where Coolify comes up elsewhere#
Head to head
Sources#
Facts on this page were checked against the project's own material. Where a number is our own estimate rather than a published figure, the text says so.
Published . Last reviewed . Found something out of date? Tell us and we will fix it and log the change.