Coolify is an open-source, self-hostable platform for deploying apps, databases and services on servers you control. It is licensed Apache-2.0, has over 60,000 GitHub stars, and positions itself as an alternative to Vercel, Heroku and Netlify. It is not a hosting company: you rent a server from a provider like Hetzner or Contabo, and Coolify runs your deployments on it using standard Docker.
What you get:
Self-hosted Coolify costs nothing; you pay only for the server. A comparable 2 CPU / 4 GB workload on a managed platform costs several times more, but those platforms also run the infrastructure for you, so this is not a like-for-like comparison.
| Option | What you get | Monthly price |
|---|---|---|
| Heroku Basic dyno | 0.5 GB RAM | $7 |
| Heroku Standard-1X dyno | 0.5 GB RAM | $25 |
| Heroku Postgres Essential-0 / Standard-0 | 1 GB disk / 4 GB RAM | $5 / $50 |
| Render web service | 2 CPU, 4 GB RAM | $85 (workspace plan extra: Hobby $0, Pro $25) |
| Vercel Pro | per developer seat; the free Hobby plan is non-commercial | $20 |
| Coolify self-hosted | you pay only for the server | $0 |
| Coolify Cloud | managed Coolify instance, covers 2 servers, $3 per extra server | $5 |
| Hetzner VPS (EU, excl. VAT) | 2 vCPU, 4 GB RAM | about €6 to €20 |
Prices are list prices checked in October 2026, in USD unless marked, and exclude tax. VPS prices and availability change often: Hetzner raised prices in 2026, and several of its plans showed as unavailable when I checked, so confirm on the provider's page before you order.
Self-hosting moves the work from the platform to you. You handle OS updates, security, backups and uptime, there is no support contract, and a single server is a single point of failure.
Coolify's minimum is a Linux server with 2 CPU cores, 2 GB RAM and 10 GB of free disk, on amd64 or arm64, with SSH access. Ubuntu LTS (20.04, 22.04 or 24.04) is the safe choice. My advice is to start with 4 GB of RAM, because building apps uses memory.
| Hetzner | Contabo | |
|---|---|---|
| Strength | Reliable and well priced; Regular Performance plans use AMD CPUs and NVMe storage | More RAM and disk per euro |
| Watch out for | Prices rose in 2026, and several plans showed as unavailable when I checked | Shared resources, so performance is less consistent |
| Good for | Apps you depend on | Testing and light workloads |
Contabo's own page lists a one-month initial contract and 32 TB of outbound traffic. Check live prices and stock on both providers before you order.
Connect over SSH as root, then run the official install script:
ssh root@YOUR_SERVER_IP
curl -fsSL https://cdn.coollabs.io/coolify/install.sh | bash
The installer requires root access. If you log in as a non-root user with sudo, Coolify's docs describe an option that runs the command with sudo -E.
When it finishes, open http://YOUR_SERVER_IP:8000 in your browser and create your admin account straight away. Whoever reaches the registration page first becomes the instance admin, with root access to your server.
coolify.example.com, to your server's IP address.https://coolify.example.com. Do this only after the DNS record points at the server, and do not reuse an application's domain for the dashboard. The built-in proxy then requests and renews the HTTPS certificate.| Port | Purpose | Keep open? |
|---|---|---|
| 22 | SSH | Yes |
| 80 | HTTP and certificate generation | Yes |
| 443 | HTTPS | Yes |
| 8000 | Dashboard by IP address | Close once the domain works |
| 6001 | Real-time dashboard updates by IP | Close once the domain works |
| 6002 | Web terminal by IP | Close once the domain works |
Keep the SSH rule in place while you edit the others, because a wrong rule can lock you out. Docker can publish ports around some host firewall tools such as UFW, so enforcing these rules in your provider's cloud firewall is the more reliable choice.
Your first deployment is a plain Nginx container. It proves that your server, Docker, the proxy and the generated domain all work before you connect your own code.
Before you start: open Servers and confirm your server is listed and the proxy shows "Proxy is running". If it is stopped, click Start Proxy.
my-first-project) and click Continue.nginx:alpine.80.http://<uuid>.<server-ip>.sslip.io, works without any DNS, and stays on HTTP, so use it for testing only.To use your own domain: create an A record that points a hostname (for example app.example.com) to your server's IP, open the app's Domains field, enter https://app.example.com, and redeploy. The https:// prefix tells the proxy to set up the certificate.
If it fails: check that the image is nginx:alpine and Ports Exposes is 80. A wrong port is the usual cause of "No Available Server", a link that will not open, or a "Site not secure" warning.
Once Nginx loads, deploy something real: connect a Git repository, add a database, and configure database backups. When the stakes rise, add a second server so one failure does not take everything down.