Skip to Content

Deploy Coolify

An open-source, self-hostable PaaS alternative to Vercel, Heroku & Netlify that lets you easily deploy static sites, databases, full-stack applications and 280+ one-click services on your own servers.

⭐ 50.4k stars📜 Apache License 2.0🔴 Advanced⏱ ~20 minutes

A fully operational Coolify instance. Think of Coolify as a self-hosted Vercel or Heroku. Once installed, it manages your other Docker containers, handles deployments from GitHub/GitLab, and provides an integrated reverse proxy.

🚀 Self-Hosting Level: If you only deploy one thing, let it be Coolify. It makes deploying everything else 10x easier.

Prerequisites

  • A server with Docker and Docker Compose installed (setup guide)
  • A domain name pointed to your server (optional but recommended)
  • Basic terminal access (SSH)

The Config

Create a directory for Coolify and add this docker-compose.yml:

# ------------------------------------------------------------------------- # 🚀 Created and distributed by The AltStack # 🌍 https://thealtstack.com # ------------------------------------------------------------------------- # Docker Compose for Coolify # Note: Coolify is a self-hosted PaaS. version: '3.8' services: coolify: image: ghcr.io/coollabsio/coolify:latest container_name: coolify ports: - "8000:8000" environment: - APP_ENV=production - DB_CONNECTION=pgsql - DB_HOST=db - DB_DATABASE=coolify - DB_USERNAME=coolify - DB_PASSWORD=${DB_PASSWORD:-password} volumes: - coolify_data:/var/www/html/storage - /var/run/docker.sock:/var/run/docker.sock # Essential for controlling Docker depends_on: db: condition: service_healthy networks: - coolify_net healthcheck: test: [ "CMD", "curl", "-f", "http://localhost:8000/api/health" ] interval: 30s timeout: 10s retries: 3 restart: unless-stopped db: image: postgres:15-alpine container_name: coolify-db environment: POSTGRES_USER: coolify POSTGRES_PASSWORD: ${DB_PASSWORD:-password} POSTGRES_DB: coolify volumes: - coolify_db_data:/var/lib/postgresql/data networks: - coolify_net healthcheck: test: [ "CMD-SHELL", "pg_isready -U coolify" ] interval: 5s timeout: 5s retries: 5 networks: coolify_net: driver: bridge volumes: coolify_data: name: coolify_data coolify_db_data: name: coolify_db_data

Let’s Ship It

# Create a directory mkdir -p /opt/coolify && cd /opt/coolify # Create the docker-compose.yml (paste the config above) nano docker-compose.yml # Pull images and start docker compose up -d # Watch the logs docker compose logs -f

Environment Variables

VariableDefaultRequired
APP_ENVproductionNo
DB_CONNECTIONpgsqlNo
DB_HOSTdbNo
DB_DATABASEcoolifyNo
DB_USERNAMEcoolifyNo
DB_PASSWORD${DB_PASSWORD:-password}No

Post-Deployment Checklist

  • Service is accessible on the configured port
  • Admin account created (if applicable)
  • Reverse proxy configured (Caddy guide)
  • SSL/HTTPS working
  • Backup script set up (backup guide)
  • Uptime monitor added (Uptime Kuma)

The “I Broke It” Section

Container won’t start?

docker compose logs coolify | tail -50

Port already in use?

# Find what's using the port lsof -i :PORT_NUMBER

Need to start fresh?

docker compose down -v # ⚠️ This deletes volumes/data! docker compose up -d

Going Further