Why Developers Are Ditching Heroku
Heroku’s free tier died in November 2022, and the pricing that replaced it left a lot of solo developers and small teams doing the math and walking away. What made Heroku appealing – the ability to push code and have a running app in minutes, without thinking about servers – is not exclusive to Heroku anymore. Coolify is an open-source platform that delivers the same experience on your own hardware or a VPS you control, with no per-dyno billing and no vendor lock-in.
Coolify handles deployments, environment variables, SSL certificates, databases, reverse proxying, and service management through a clean web UI. It supports apps built with Node.js, PHP, Python, Ruby, Go, static sites, Docker containers, and more. If you have a server with a public IP and SSH access, you can have Coolify running and deploying apps within the hour. This guide walks through exactly how to do that.

What You Need Before You Start
You need a Linux server – a VPS from any major provider works fine. Coolify’s official minimum is 2 CPU cores and 2GB of RAM, though 4GB is more comfortable if you plan to run multiple apps or databases alongside it. The server should be running Ubuntu 22.04 or Debian 12 for the smoothest experience, and you need root or sudo access over SSH. A domain name pointed at your server’s IP is optional for the initial setup but required if you want SSL to work properly.
Make sure Docker is not already installed in an old or conflicting version before you begin. Coolify installs Docker itself as part of its bootstrap script, and a pre-existing Docker installation from an unofficial source can cause the setup to fail silently. If Docker is already present and working, that is usually fine – Coolify will detect it. But a broken or partial Docker install is worth cleaning up first with apt remove docker docker.io before proceeding.
Installing Coolify on Your Server
The installation process is a single curl command. SSH into your server as root and run: curl -fsSL https://cdn.coollabs.io/coolify/install.sh | bash. The script handles everything from here – it installs Docker if needed, pulls the Coolify Docker images, sets up a reverse proxy using Traefik, and starts all the required containers. On a fresh server with a reasonable internet connection, this takes around three to five minutes.
Once the script completes, Coolify is accessible at port 8000 on your server’s IP address: http://YOUR_SERVER_IP:8000. The first time you visit, you are prompted to create an admin account. This is your master account for the entire instance, so use a strong password and store it somewhere safe. After registration, you land on the Coolify dashboard, which shows your server resources, connected servers, and any running services.
The next step is connecting your server as a deployment target. Coolify separates the concept of the control plane (where the UI runs) from the servers it deploys to. For a single-server setup, you add your own server as a remote target using SSH. Navigate to Servers in the sidebar, click Add Server, and enter localhost as the hostname. Coolify will generate an SSH key – copy that key and add it to your server’s ~/.ssh/authorized_keys file. After validation, the server shows a green status and is ready for deployments.
If your server’s firewall is managed by UFW, open port 8000 temporarily for the UI (ufw allow 8000), and also allow port 80 and 443 if you plan to use SSL. Coolify’s Traefik reverse proxy handles routing to your apps on those ports, so you do not need to open custom ports for each application you deploy. Once you have Coolify behind a proper domain with SSL, you can close port 8000 to the public and access the dashboard only through the secured URL.

Deploying Your First Application
From the dashboard, click New Project, give it a name, then click New Resource inside that project. Coolify presents you with a menu of resource types: public Git repository, private Git repository, Docker image, Docker compose, or a pre-built service like PostgreSQL, Redis, or WordPress. For a standard web app, select your Git source. Coolify supports GitHub, GitLab, and Bitbucket with OAuth app integration, or you can connect a private repo using a deploy key.
After connecting your repo, Coolify inspects the codebase and attempts to detect the build pack automatically using Nixpacks – the same open-source build system used by Railway. For most Node.js, Python, and PHP projects, it identifies the correct runtime without any configuration. You can override the build command, start command, and install command from the UI if the defaults do not match your project’s setup. Set your environment variables in the Environment Variables tab before deploying – Coolify encrypts these at rest using AES-256.
Connecting a Domain and Enabling SSL
Assigning a domain to an app takes about thirty seconds. In your app’s settings, find the Domains field and enter your full domain or subdomain – for example, app.yourdomain.com. Make sure your DNS A record for that subdomain is already pointing to your server’s IP before this step. Coolify uses Let’s Encrypt through Traefik to issue a free SSL certificate automatically once the domain resolves correctly. You do not touch Certbot, Nginx config files, or cron jobs for renewal – Coolify manages all of it.
For teams running multiple apps on a single Coolify instance, wildcard subdomains are a practical option. Set a wildcard A record (*.yourdomain.com) pointing to your server, then assign each app its own subdomain inside Coolify. Every new app gets SSL provisioned automatically within seconds of the first request. This mirrors exactly how Heroku’s appname.herokuapp.com subdomains worked, except the domain is yours and there is no monthly charge attached to it.
Coolify also supports custom SSL certificates if you already have one from a certificate authority – useful for organizations with specific compliance requirements or for domains behind a CDN like Cloudflare in full proxy mode. In those setups, you paste your certificate and private key directly into the UI and Coolify handles the Traefik configuration. If you are running other self-hosted infrastructure alongside your apps, Coolify pairs well with tools like encrypted backup solutions to protect your deployment configs and database volumes.

Managing Databases and Persistent Storage
Databases are first-class resources in Coolify. From the New Resource menu, you can spin up PostgreSQL, MySQL, MariaDB, MongoDB, Redis, or Dragonfly with a few clicks. Coolify generates a random password, stores it encrypted, and exposes the connection string as an environment variable you can inject directly into any app in the same project. The database runs in its own Docker container with a named volume for persistence – if the container restarts, the data survives.
Backups for databases are configurable inside each database resource. You can schedule S3-compatible backups on a cron schedule directly from the Coolify UI, pointing to any provider that speaks the S3 protocol: AWS S3, Backblaze B2, Cloudflare R2, MinIO, or others. This removes the need to set up custom backup scripts on the server. The backup configuration lives alongside the database definition, so if you migrate the entire Coolify instance to a new server, the backup settings come with it.
Persistent storage for apps – not just databases – is handled through Docker volume mounts. In any app’s configuration, you can define a volume path and Coolify maps it to a named Docker volume on the host. This is what you need for apps that write files to disk: CMS uploads, user-generated content, or any stateful workload that would otherwise lose data on a container restart. The volume path you define inside the container and the underlying host path are both visible in the UI, which makes debugging storage issues considerably faster than inspecting raw Docker commands. Coolify does not abstract the infrastructure away so completely that you cannot see what is actually running underneath – you can always SSH in and run standard Docker commands alongside it.
Frequently Asked Questions
Is Coolify completely free to use?
Coolify is open-source and free to self-host. You only pay for the server or VPS you run it on, with no per-app or per-resource charges.
Can Coolify deploy apps from private GitHub repositories?
Yes. Coolify supports private repositories on GitHub, GitLab, and Bitbucket via OAuth app integration or deploy keys configured in the UI.





