← All articles
DEVOPS Coolify: A Self-Hosted Heroku That Actually Delivers 2026-02-09 · coolify · paas · deployment

Coolify: A Self-Hosted Heroku That Actually Delivers

DevOps 2026-02-09 coolify paas deployment docker devops self-hosted

Deploying a side project should not require a PhD in Kubernetes. You have a Git repository, you want it running on your server with HTTPS, and you do not want to manually SSH in, pull code, rebuild containers, and restart services every time you push a commit.

Coolify is a self-hosted platform-as-a-service (PaaS) that gives you the deployment experience of Heroku or Vercel — push code, get a running app — on your own infrastructure. It handles Git integration, Docker builds, SSL certificates, databases, and one-click app deployments through a clean web UI.

What Coolify Does

Coolify vs. Dokku vs. CapRover

Feature Coolify Dokku CapRover
Interface Modern web UI CLI only Web UI
Git deployment GitHub/GitLab/Gitea webhooks git push dokku GitHub webhooks
One-click apps Yes (50+ services) Plugin-based Yes (app store)
Database management Built-in (backup, restore) Plugin-based Limited
Auto-HTTPS Yes (Let's Encrypt) Yes (Let's Encrypt) Yes (Let's Encrypt)
Docker Compose support Yes Limited No
Multi-server Yes No (single server) No (single server)
Build system Nixpacks, Dockerfile, Compose Buildpacks, Dockerfile Dockerfile only
PR previews Yes Limited No
Resource usage ~300-500 MB RAM ~100-200 MB RAM ~200-300 MB RAM
Maturity Newer, fast-moving Very mature, stable Mature
Learning curve Low Medium (CLI comfort) Low

When to choose Coolify

When to choose Dokku

When to choose CapRover

Dokku is the veteran. CapRover is the reliable middle ground. Coolify is the modern upstart with the most features and the most active development.

Installation

Coolify has a one-line installer. On a fresh server (Ubuntu 22.04/24.04, Debian 12, or Fedora recommended):

curl -fsSL https://cdn.coollabs.io/coolify/install.sh | bash

This installs Docker if needed, pulls the Coolify containers, and starts everything. The installer creates a docker-compose.yml at /data/coolify/docker-compose.yml.

What it deploys

Coolify UI + API        → Port 8000 (HTTP)
Coolify Proxy (Traefik) → Ports 80, 443
PostgreSQL              → Internal (Coolify's database)
Redis                   → Internal (job queue)

After installation, visit http://your-server-ip:8000 to create your admin account.

Manual Docker Compose setup

If you prefer not to run the one-line installer, the Compose file is available at the Coolify GitHub repository. The core structure:

services:
  coolify:
    image: ghcr.io/coollabs/coolify:latest
    restart: unless-stopped
    ports:
      - "8000:8000"
    volumes:
      - /data/coolify/ssh:/data/coolify/ssh
      - /data/coolify/applications:/data/coolify/applications
      - /data/coolify/databases:/data/coolify/databases
      - /data/coolify/backups:/data/coolify/backups
      - /var/run/docker.sock:/var/run/docker.sock
    environment:
      - APP_URL=https://coolify.yourdomain.com
      - DB_PASSWORD=${DB_PASSWORD}
    depends_on:
      - postgres
      - redis

  postgres:
    image: postgres:16-alpine
    restart: unless-stopped
    volumes:
      - coolify_db:/var/lib/postgresql/data
    environment:
      POSTGRES_PASSWORD: ${DB_PASSWORD}
      POSTGRES_DB: coolify

  redis:
    image: redis:7-alpine
    restart: unless-stopped
    volumes:
      - coolify_redis:/data

volumes:
  coolify_db:
  coolify_redis:

Note that Coolify needs access to the Docker socket because it manages containers on your behalf. This is a security consideration — Coolify effectively has root access to your server.

Deploying Your First Application

From a GitHub repository

  1. Go to Projects → Add New Resource → Public Repository (or connect your GitHub account for private repos)
  2. Enter the repository URL
  3. Coolify auto-detects the build method:
    • Nixpacks: For Node.js, Python, Go, Rust, PHP, Ruby, and more — no Dockerfile needed
    • Dockerfile: Uses your existing Dockerfile
    • Docker Compose: Uses your docker-compose.yml
  4. Set the domain (e.g., myapp.yourdomain.com)
  5. Click Deploy

Coolify builds the app, starts the container, configures the reverse proxy, and provisions an SSL certificate. Your app is live.

Automatic deployments

Connect your GitHub account and enable webhooks:

  1. Settings → Sources → Add GitHub App
  2. Follow the OAuth flow to install the Coolify GitHub App
  3. For each project, enable Auto Deploy — every push to the configured branch triggers a build

PR preview environments

Enable Preview Deployments on a project. Every pull request gets its own deployment at a unique URL (e.g., pr-42-myapp.yourdomain.com). The preview is automatically deleted when the PR is merged or closed.

This is genuinely useful for teams reviewing changes.

One-Click Services

Coolify's service catalog includes databases and popular applications:

Databases

Applications

Each one-click service is deployed with sensible defaults. You get environment variable management, persistent volumes, and backup configuration through the UI.

Database management

This is one of Coolify's strong points. For each database:

Domain and SSL Management

Coolify uses Traefik as its reverse proxy. For each deployed service:

  1. Set the domain in the service settings
  2. Coolify automatically configures Traefik routing
  3. Let's Encrypt certificates are provisioned on first request
  4. Renewal happens automatically

You need your DNS pointing to your Coolify server. For multiple services:

A wildcard DNS record (*.yourdomain.com → your-server-ip) simplifies this.

Multi-Server Deployments

Coolify can manage deployments across multiple servers:

  1. Servers → Add Server
  2. Provide the server's IP and SSH key
  3. Coolify installs Docker on the remote server
  4. Deploy projects to any connected server

This is useful for:

The control plane (Coolify UI) runs on one server and orchestrates deployments to others via SSH.

Resource Requirements

Coolify itself

Component RAM CPU Storage
Coolify (UI + API) 200-400 MB 1 core 1 GB
PostgreSQL 100-200 MB 0.5 cores 500 MB
Redis 30-50 MB Minimal 100 MB
Traefik proxy 50-100 MB Minimal Minimal
Total (Coolify only) ~400-750 MB ~2 cores ~2 GB

Server sizing

The total resources needed depend on what you deploy:

Docker image builds are the most resource-intensive operation. If builds are slow, more CPU and RAM help the most.

Environment Variables and Secrets

Coolify provides a UI for managing environment variables per service:

Variables are stored encrypted in Coolify's database. You can bulk-edit them or paste a .env file directly.

Monitoring and Logs

Coolify provides basic monitoring:

For production monitoring, you will still want a dedicated solution (Grafana, Uptime Kuma, etc.), but Coolify's built-in tools are sufficient for debugging and casual oversight.

Honest Limitations

Backup Strategy

  1. Coolify's database: Back up /data/coolify/ — this contains all configuration, project settings, and secrets
  2. Application data: Coolify stores persistent volumes under /data/coolify/. Back up this entire directory.
  3. Database backups: Use Coolify's built-in S3 backup for managed databases
  4. Git repos are your source of truth: Application code lives in Git. The worst case is re-deploying from scratch, which Coolify makes easy.

The Bottom Line

Coolify is the most complete self-hosted PaaS available today. It gives you a genuine Heroku/Vercel-like experience — push code, get a deployed app — without sending your code to a third party or paying per-dyno pricing.

The trade-off is that it is younger software with a faster release cycle, which means occasionally rough edges. But the fundamentals are solid: Git-based deployments work, databases are well-managed, SSL is automatic, and the UI is genuinely pleasant to use.

If you're self-hosting side projects and tired of manually managing Docker containers via SSH, Coolify is worth the 10-minute setup.

Resources