Skip to main contentSkip to navigation
[email protected]
Client AreaSupport
Hosting Mammoth
HostingMammothYour Data, Our Responsibility
Home
Solutions
Hosting Services
Store
Pricing
About
Blog
API
Contact

Stay Ahead of the Curve

Get the latest insights on cybersecurity, AI innovations, and enterprise data solutions delivered to your inbox.

Hosting Mammoth
HostingMammothEnterprise Solutions

Enterprise-grade data solutions. Hosting, recovery, cybersecurity, and AI-powered services for businesses worldwide.

[email protected]
Sun - Fri, 9:00am - 5:00pm

Services

  • Cloud Hosting
  • Data Recovery
  • Cybersecurity
  • Legal Support
  • MSP Services
  • Web Development
  • AI Services
  • Free Server Migration

Hosting

  • VPS Hosting (NVMe SSD)
  • VDS Hosting (NVMe)
  • Storage VPS (High SSD)
  • GPU Servers
  • Managed Services
  • Cloud Firewall
  • Load Balancer
  • One-Click Apps
  • n8n Hosting
  • Object Storage
  • FAQ

Company

  • Store
  • Pricing
  • About Us
  • Locations
  • Blog
  • Testimonials
  • Contact
  • Affiliate Program
  • White-Label
  • Terms of Service
  • Privacy Policy
  • Browser Cookies
  • SLA

Support

  • Client Area
  • Submit Ticket
  • Knowledge Base
  • Server Status
  • API Documentation

© 2026 Hosting Mammoth. All rights reserved.

Knowledge Base
Getting StartedAccount ManagementVPS HostingGPU ServersStorage VPSCloud FirewallLoad BalancerServer ManagementBilling & PaymentsSupport & TicketsAffiliate ProgramReseller ProgramMarketplace & Appsn8n HostingManaged ServicesServer MigrationAPI & DevelopersSecurityTroubleshootingGlossaryInstall Guides
  1. Home
  2. /
  3. Support
  4. /
  5. Install Guides
  6. /
  7. How To Install Coolify Ubuntu
GUIDEInstall Guides

How to Install Coolify on Ubuntu 24.04 — Self-Hosted PaaS Alternative to Vercel & Heroku

27 min read

How to Install Coolify on Ubuntu 24.04 — A Self-Hosted PaaS for Git Deploys, Databases, and One-Click Apps

Coolify turns a plain Ubuntu VPS into a full-featured platform-as-a-service. In roughly 25 minutes you can have an environment that deploys applications from a git push, spins up managed PostgreSQL or MySQL instances, provisions WordPress or Ghost with one click, and terminates TLS through Traefik with zero manual certificate handling. This tutorial walks through the entire installation on Ubuntu 24.04 LTS, from the first SSH connection to a production workflow that rivals Vercel, Netlify, and Heroku -- without the per-seat pricing or vendor lock-in.

Want a one-line deploy? Launch a Professional VPS and follow this guide end to end. The Professional plan gives Coolify enough headroom to host several applications and databases simultaneously.

Table of Contents

  • What is Coolify?
  • Why Self-Host a PaaS Instead of Vercel, Netlify, or Heroku?
  • Prerequisites
  • Step 1: Update System Packages
  • Step 2: Run the Coolify Installer
  • Step 3: First Login and Registration
  • Step 4: Configure Your Server
  • Step 5: Deploy Applications from GitHub or GitLab
  • Step 6: Provision Databases
  • Step 7: Deploy One-Click Services
  • Step 8: Resources, Projects, and Environments
  • Step 9: Traefik, Wildcard Domains, and Automatic TLS
  • Step 10: Configure Backups
  • Troubleshooting
  • FAQ
  • Next Steps
  • What is Coolify?

    Coolify is an open-source, self-hosted platform-as-a-service built on top of Docker and Traefik. It gives you a polished web UI that deploys applications directly from a Git repository, manages databases and message queues as first-class resources, and offers a curated catalog of one-click open-source services. The entire control plane runs inside Docker containers on a single VPS, and every deployed workload is just another container that Coolify orchestrates, routes, and monitors on your behalf.

    Under the hood, Coolify uses Nixpacks and buildpacks to detect application frameworks, Traefik for reverse proxying and TLS termination, and a PostgreSQL-backed coordinator for state. It supports Node.js, PHP, Python, Ruby, Go, Rust, Elixir, static sites, and arbitrary Dockerfiles -- effectively anything that can be containerized. It also manages databases natively: PostgreSQL, MySQL, MariaDB, MongoDB, Redis, KeyDB, Dragonfly, and ClickHouse can all be provisioned from the UI with encrypted credentials and optional S3 backups.

    The typical users who benefit from Coolify are SaaS founders running 3-15 applications across a small VPS fleet, agencies hosting client sites and staging environments, internal tools teams who want GitOps-style deploys without adopting Kubernetes, and indie developers who have outgrown a single docker compose up workflow but do not want to pay Vercel-tier margins on every preview branch. If you have ever wished for a "Heroku I can run on my own box," that is precisely the problem Coolify was designed to solve.

    Why Self-Host a PaaS Instead of Vercel, Netlify, or Heroku?

    Managed PaaS platforms are fantastic for getting started, but the economics and constraints shift quickly as a project grows. Running a self-hosted PaaS like Coolify on a dedicated VPS offers a different trade-off profile:

    • Flat, predictable cost -- A Professional VPS hosts unlimited applications, databases, and preview environments for a fixed monthly fee. There are no per-seat charges, no per-build-minute overage fees, and no egress bandwidth surprises.
    • No bandwidth metering -- Vercel's Pro plan includes 1 TB of bandwidth; Netlify starts throttling after 100 GB. A typical VPS includes 32 TB or unmetered transfer at the same price point, which matters for image-heavy sites, API-heavy SaaS, and video content.
    • True code and data ownership -- Your source code, secrets, and databases live on infrastructure you control. There is no vendor API to rate-limit you, no sudden pricing change, and no acquisition risk that forces a migration on someone else's timeline.
    • Unrestricted long-running processes -- Vercel Functions have a 10-second default (60-second max) execution window. Netlify Functions cap at 10 seconds on the free tier. On Coolify you can run background workers, cron jobs, WebSocket servers, and multi-minute API calls without engineering around arbitrary limits.
    • GDPR and data residency control -- When you choose an EU-region VPS, every byte of customer data stays in the EU. Data Processing Agreements become straightforward because there is only one processor -- the VPS provider -- not a chain of managed SaaS vendors.
    • No cold starts -- Containers stay warm by default. First-request latency on an idle application is measured in milliseconds, not seconds.
    • Freedom of runtime -- Deploy any language, any version, any native dependency. Need PHP 5.6 for a legacy app next to a Bun runtime for a new one? Both run side by side with no platform restrictions.

    Cost Comparison: Self-Hosted Coolify vs. Managed PaaS

    ScenarioVercel ProHeroku StandardNetlify ProSelf-Hosted Coolify (Professional VPS)
    Monthly baseUSD 20/seatUSD 25-50 per dynoUSD 19/seatFlat EUR 19.99/mo (unlimited seats)
    Bandwidth included1 TB2 TB (per dyno)1 TB32 TB (typically)
    Build minutes6,000 min/moBuildpack included25,000 min/moUnlimited (local builds)
    Number of appsUnlimited (counts toward usage)1 per dynoUnlimitedUnlimited
    DatabasesExtra addon feesAddon fees (USD 9+ per DB)Extra addon feesIncluded
    Preview environmentsCounts toward usageSeparate dynoCounts toward bandwidthFree unlimited
    Egress overageUSD 40/100 GBIncludedUSD 55/100 GBIncluded
    For any team running more than one production app with a database, Coolify on a single VPS typically pays for itself within the first billing cycle.

    Prerequisites

    Before you begin, make sure you have:

    • A VPS running Ubuntu 24.04 LTS with root or sudo access. Debian 12 also works, but this guide targets Ubuntu.
    • SSH access (built-in terminal on macOS/Linux, PuTTY or Windows Terminal on Windows).
    • At least 4 GB of RAM (8 GB+ recommended once you start adding databases and one-click services).
    • At least 40 GB of disk space -- Docker images, the Coolify database, and application volumes add up quickly.
    • A registered domain name with DNS that you can edit. You will add an A record (and ideally a wildcard *) pointing to the VPS IP address. This is required for automatic TLS.
    • Ports 22, 80, 443, and 8000 reachable from the internet on first setup.
    Recommended Plan: Professional
    >
    For Coolify hosting a handful of production applications, a few databases, and staging environments, we recommend the Professional VPS plan:
    >
    - 6 vCPU cores
    - 12 GB RAM
    - 200 GB NVMe SSD
    - 32 TB bandwidth
    - EUR 19.99/month
    >
    This gives you comfortable headroom for 8-15 containerized services plus databases. Scale up to a larger plan later -- Coolify can also manage additional remote servers from the same control plane.

    Connect to your server via SSH to get started:

    bash
    ssh root@your-server-ip

    Step 1: Update System Packages

    Begin with a clean, patched system. This prevents the installer from pulling in mismatched Docker dependencies.

    bash
    sudo apt update && sudo apt upgrade -y

    Expected output (abbreviated):

    text
    Hit:1 http://archive.ubuntu.com/ubuntu noble InRelease
    Reading package lists... Done
    Building dependency tree... Done
    Calculating upgrade... Done
    0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

    If the kernel was updated, reboot and reconnect:

    bash
    sudo reboot

    Install a few baseline tools that the installer and later troubleshooting steps rely on:

    bash
    sudo apt install -y curl wget git ca-certificates

    Step 2: Run the Coolify Installer

    Coolify ships an official one-line installer that bootstraps Docker Engine, creates the required directories under /data/coolify, writes the systemd units, and starts the control plane containers (Coolify itself, a PostgreSQL database, a Redis instance, SoketI for realtime, and a Traefik proxy).

    Run the installer:

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

    Expected output (abbreviated):

    text
    -------------
    Welcome to Coolify Installer!
    This script will install everything for you.
    -------------
    OK: Docker Engine is already installed, skipping...
    OK: Docker Compose plugin is installed.
    Creating directories...
    Generating secrets...
    Downloading required files from CDN...
    Starting Coolify...
    [+] Running 5/5
     Container coolify           Healthy
     Container coolify-db        Healthy
     Container coolify-redis     Healthy
     Container coolify-proxy     Started
     Container coolify-realtime  Healthy

    Your instance is ready to use! You can access Coolify through your Public IP: http://SERVER_IP:8000

    The installer performs the following:

  • Detects or installs Docker Engine 24+ and the Docker Compose plugin.
  • Creates /data/coolify/ with subdirectories for source code, databases, backups, SSH keys, and Traefik config.
  • Generates random secrets and writes them to /data/coolify/source/.env.
  • Pulls the coollabsio/coolify container image plus PostgreSQL, Redis, SoketI, and Traefik.
  • Starts all control plane containers.
  • Installs a systemd service so Coolify survives reboots.
  • When the script finishes, note the public URL it prints. You will open this in a browser next.

    Step 3: First Login and Registration

    Open the URL from the previous step in your browser:

    text
    http://YOUR_SERVER_IP:8000

    The first visit shows a Register form. This form creates the root administrator account. Whoever registers first owns the entire instance, so make sure this is you.

    Fill in:

    • Name -- your full name or team name
    • Email -- will be used for login and (optionally) notifications
    • Password -- at least 8 characters; use a password manager
    After submitting, you land on the dashboard. The left sidebar exposes the main building blocks:

    • Projects -- groupings of related resources (for example, "acme-corp-production")
    • Servers -- the VPS nodes Coolify can deploy to (initially just localhost)
    • Sources -- Git providers (GitHub, GitLab, Bitbucket, Gitea)
    • Destinations -- Docker networks/contexts where resources run
    • Databases -- standalone database resources
    • Services -- one-click open-source applications
    • S3 Storages -- backup targets
    • Notifications -- Discord, Slack, Telegram, email webhooks
    • Keys & Tokens -- SSH keys and API tokens
    Take a minute to click through each tab before moving on -- it will make the rest of this guide self-explanatory.

    Step 4: Configure Your Server

    Coolify always includes a localhost entry under Servers that represents the machine it was installed on. Open it and walk through the checklist:

  • Click the Validate Server button. Coolify verifies Docker, the network bridge, and the Traefik proxy.
  • Set the Wildcard Domain (for example, apps.example.com). Coolify uses this to auto-generate subdomains for every new deployment -- app-abc123.apps.example.com -- so you can access deployments instantly even before you set a custom domain.
  • Under Proxy, confirm that Traefik v2 is selected. This is the default and the most actively supported option. (The alternative, Caddy, works but has fewer Coolify-native features.)
  • Enable Automatic Docker Cleanup so unused images do not fill the disk.
  • DNS Setup for the Wildcard Domain

    In your DNS provider (Cloudflare, Route53, your registrar) add:

    • A record: apps.example.com -> YOUR_SERVER_IP
    • A record: *.apps.example.com -> YOUR_SERVER_IP
    If you use Cloudflare, set the wildcard record to DNS only (grey cloud) during initial setup -- Let's Encrypt needs direct HTTP access on port 80 to issue certificates. You can switch back to proxied (orange cloud) after certificates are issued.

    Verify propagation:

    bash
    dig +short test.apps.example.com

    Expected output:

    text
    YOUR_SERVER_IP

    Secure the Coolify UI with a Domain

    While you are editing DNS, also point a record like coolify.example.com -> YOUR_SERVER_IP. Then, inside Coolify, go to Settings -> Instance Settings and set the Instance FQDN to https://coolify.example.com. Coolify will automatically issue a Let's Encrypt certificate for the control panel and stop exposing the admin UI on port 8000.

    Step 5: Deploy Applications from GitHub or GitLab

    This is the core workflow. Once configured, every git push to a tracked branch triggers a rebuild and zero-downtime redeploy.

    Connect a Git Source

  • Sidebar -> Sources -> New Source.
  • Choose GitHub App (recommended -- higher API limits, fine-grained permissions) or Personal Access Token.
  • For a GitHub App, click the generated link. GitHub redirects you through an OAuth flow where you select which repositories Coolify may access. Install the app, and the source appears as connected.
  • GitLab, Bitbucket, and self-hosted Gitea work the same way -- paste a personal access token with read_repository scope.
  • Create a Project and Add an Application

  • Sidebar -> Projects -> New Project. Name it (for example, marketing-site).
  • Inside the project, click New Resource -> Application -> Public Repository or Private Repository (from GitHub App).
  • Paste the repository URL or pick from the connected list. Select the branch (defaults to main).
  • Coolify detects the build method automatically. The available build packs are:
  • - Nixpacks (default) -- auto-detects Node.js, Python, PHP, Ruby, Go, Rust, and static sites - Static -- for pre-built HTML/CSS/JS assets (Astro output, Gatsby public, etc.) - Dockerfile -- uses a Dockerfile in the repo root - Docker Compose -- deploys a multi-container application from docker-compose.yml
  • Confirm the detected port (Node.js defaults to 3000, PHP to 8080, etc.) and click Deploy.
  • What Happens Under the Hood

    • Coolify clones the repository into /data/coolify/applications/<uuid>.
    • Nixpacks inspects the code, chooses a base image, installs dependencies, and produces a deterministic image.
    • The image is tagged and started as a container on the Docker bridge network.
    • Traefik is reconfigured with a router that matches the app's FQDN and terminates TLS.
    • A healthcheck waits for the container to become ready, then old containers are stopped (zero-downtime rolling restart).

    Language-Specific Notes

    Node.js (Next.js, Remix, Nest, Express) -- Nixpacks reads package.json, runs npm ci (or pnpm install / yarn install), executes the build script if present, then npm start. Override via the Build Command and Start Command fields.

    PHP (Laravel, Symfony) -- Set the document root to public/ in application settings. Coolify provisions PHP-FPM with Nginx. Add an artisan migrate post-deploy command if needed.

    Python (Django, FastAPI, Flask) -- Nixpacks detects requirements.txt or pyproject.toml. For Django, set the start command to gunicorn myproject.wsgi:application --bind 0.0.0.0:8000. For FastAPI, use uvicorn app.main:app --host 0.0.0.0 --port 8000.

    Static sites (Astro, Hugo, Eleventy, Vite) -- Choose Static build pack. Set Publish Directory to dist, public, or _site depending on your framework.

    Docker / Dockerfile -- Give Coolify the Dockerfile path. Useful for polyglot stacks or compiled binaries (Go, Rust, Elixir releases).

    Docker Compose -- Paste or reference a docker-compose.yml. Coolify translates ports into Traefik routes and volumes into Docker volumes.

    Environment Variables, Secrets, and Preview Deployments

    Each application has an Environment Variables tab where you set runtime configuration. Variables marked Build Time are injected during docker build; variables marked Runtime are injected at container start. Secrets are encrypted at rest in Coolify's database.

    Toggle Preview Deployments to have Coolify build a separate environment for every pull request. Previews get their own subdomain (pr-42-app.apps.example.com) and can share or override environment variables.

    Step 6: Provision Databases

    Databases in Coolify are first-class resources -- separate from applications, independently backed up, and connected via Docker network names rather than public endpoints.

    Create a Database

  • Project -> New Resource -> Database.
  • Choose one of:
  • - PostgreSQL (versions 13 through 16) - MySQL (5.7, 8.0, 8.4) - MariaDB (10.x, 11.x) - MongoDB (5, 6, 7) - Redis (6, 7) - KeyDB, Dragonfly (Redis-compatible alternatives) - ClickHouse (columnar OLAP)
  • Coolify generates a strong password, random database name, and internal hostname (for example, postgresql-abc123).
  • Click Start Database.
  • Connect an Application to the Database

    Copy the internal connection string from the database page. It looks like:

    text
    postgres://postgres:PASSWORD@postgresql-abc123:5432/postgres

    Paste it into your application's environment variables as DATABASE_URL. Because both containers share the same Docker network, the hostname resolves without exposing the database to the public internet.

    External Access (Optional)

    If you need to connect from a local tool like TablePlus or DBeaver, toggle Public Port on the database page. Coolify maps a high random port (for example, 54321) to the container. Firewall it to your IP address for safety:

    bash
    sudo ufw allow from YOUR_HOME_IP to any port 54321

    Step 7: Deploy One-Click Services

    The Services catalog is Coolify's answer to the Heroku addons market. Instead of paying a monthly fee for a managed service, you self-host the open-source original in one click. The catalog includes 80+ applications -- here are the most popular picks.

    Content & Marketing

    • WordPress -- deploys WordPress + MariaDB + persistent uploads volume. Finish the famous five-minute install in the browser. Swap the default theme for your own via the standard wp-admin workflow.
    • Ghost -- the modern publishing platform. Ships with MariaDB and SMTP configuration via env vars.
    • Strapi -- open-source headless CMS for API-driven frontends.
    • Directus -- instant REST and GraphQL APIs on top of any SQL database.

    Analytics & Monitoring

    • Umami -- privacy-friendly, cookieless analytics. Lighter than Google Analytics and GDPR-compliant out of the box.
    • Plausible -- a slightly heavier alternative to Umami with funnels and goal tracking.
    • Uptime Kuma -- uptime monitoring with notifications (Discord, Slack, Telegram, email).
    • Grafana + Prometheus -- metrics and dashboards.

    Productivity & Internal Tools

    • NocoDB -- Airtable-style UI on top of PostgreSQL or MySQL.
    • AppSmith and Tooljet -- low-code internal tool builders.
    • n8n -- workflow automation, the self-hosted Zapier alternative.
    • Outline -- Notion-style team wiki.
    • Vaultwarden -- Bitwarden-compatible password manager for your team.

    Developer Infrastructure

    • Gitea -- lightweight self-hosted Git server.
    • Harbor -- private Docker registry with image scanning.
    • MinIO -- S3-compatible object storage.
    • MeiliSearch -- fast search engine with typo tolerance.

    Deploying a Service

  • Project -> New Resource -> Service.
  • Search for the service (e.g., "umami").
  • Review the generated env vars -- Coolify pre-fills database credentials and secret keys.
  • Set the FQDN (analytics.example.com).
  • Click Deploy. The service is online in 30-90 seconds, already behind Traefik TLS.
  • Step 8: Resources, Projects, and Environments

    Coolify organizes everything into a three-level hierarchy:

    • Team -> Project -> Resource
    A team holds billing and member permissions (when you enable team features). A project groups related resources -- typically one project per customer, environment, or logical application boundary. A resource is anything Coolify manages: an application, a database, a one-click service, or a background worker.

    Each resource exposes a consistent set of tabs: Logs (live container stdout/stderr), Terminal (exec into the running container), Deployments (build history with rollback), Webhooks, Health, Environment Variables, Storage, and Advanced (resource limits, custom labels). This uniformity makes it fast to operate a fleet -- once you know how to read logs for one app, you know how to read logs for a database and a WordPress install.

    Use tags to cut across the hierarchy. Tagging every staging resource env:staging lets you bulk-stop or bulk-restart a whole environment without touching production.

    Step 9: Traefik, Wildcard Domains, and Automatic TLS

    Traefik is the HTTP reverse proxy that sits in front of every Coolify-managed container. When you click Deploy, Coolify writes a Traefik configuration snippet via Docker labels, and Traefik hot-reloads its routing table -- no manual Nginx config and no certbot invocations.

    For a deeper look at how Traefik works as a standalone reverse proxy, see our Traefik install guide.

    Automatic TLS

    Coolify requests Let's Encrypt certificates for every FQDN the first time an application receives a request. Certificates live in /data/coolify/proxy/acme.json and auto-renew 30 days before expiry. The process:

  • Application FQDN resolves to the VPS IP (DNS must be correct).
  • Traefik handles the ACME HTTP-01 challenge on port 80.
  • Let's Encrypt issues the certificate.
  • Traefik automatically redirects HTTP to HTTPS from then on.
  • Custom Domains

    By default, an app is reachable at a Coolify-generated subdomain under your wildcard. To add a production domain:

  • In the application page, edit Domains.
  • Add www.yourcustomer.com and yourcustomer.com.
  • Point both DNS records to the VPS.
  • Save. Traefik issues certificates within 30-60 seconds.
  • Wildcard Certificates with DNS-01

    For internal subdomains that are not publicly reachable (or to avoid rate limits), configure Cloudflare DNS-01 in Settings -> Advanced -> Let's Encrypt Wildcard. Paste a Cloudflare API token with Zone:Read and DNS:Edit scopes, and Traefik will request a single wildcard certificate for *.apps.example.com instead of per-subdomain certificates.

    Step 10: Configure Backups

    Losing a database is the fastest way to discover backups are worth setting up early.

    S3-Compatible Backup Target

  • Sidebar -> S3 Storages -> New.
  • Choose a provider: AWS S3, Backblaze B2, DigitalOcean Spaces, Wasabi, or a self-hosted MinIO.
  • Paste endpoint, region, bucket, access key, and secret key.
  • Test the connection.
  • Enable Database Backups

    Open each database resource -> Backups tab -> Enable.

    • Schedule -- cron expression (for example, 0 2 * for 2 AM daily)
    • Retention -- how many snapshots to keep
    • Storage -- the S3 target configured above
    • Database(s) to back up -- all or a specific list
    Coolify runs pg_dump / mysqldump / mongodump inside the database container, streams the output through gzip, and uploads the result. You can restore via the UI or by downloading the dump directly from S3.

    Application Volume Backups

    For applications that write to persistent volumes (WordPress uploads, Ghost content, MinIO buckets), add a Scheduled Task that tars the volume and pushes it to S3:

    bash
    tar -czf - /app/uploads | aws s3 cp - s3://my-bucket/uploads-$(date +%F).tar.gz

    Paste it into Resource -> Scheduled Tasks with a cron expression, and Coolify runs it inside the container on schedule.

    Backup Verification

    Untested backups are not backups. Once a month, restore a database dump to a throwaway resource and confirm the data is intact. Coolify exposes a Restore button that does this against a fresh target -- use it.

    Troubleshooting

    ProblemCauseSolution
    Cannot reach http://IP:8000 after installFirewall or cloud security groupOpen port 8000 temporarily: sudo ufw allow 8000. Close it again once the instance FQDN is set.
    Deployment stuck at "Preparing"Git credentials invalid or rate-limitedRe-authorize the GitHub App. Check sudo docker logs coolify for the exact HTTP error.
    Let's Encrypt certificate failsDNS not propagated, or Cloudflare proxy enabledVerify with dig that the FQDN resolves to the VPS IP. Disable Cloudflare proxy (grey cloud) until the first certificate issues.
    Out-of-memory kills on deployBuild step exceeds RAMIncrease Memory Limit in application advanced settings, or upgrade the VPS. Node.js builds commonly need 2+ GB.
    "Port already in use" when bindingAnother service is on port 80/443Stop the conflicting service: sudo lsof -i :443. Apache and legacy Nginx installs are common culprits.
    Database connection refused from appApp and DB in different projects / networksEnsure both resources share the same Destination (Docker network). Use the internal hostname, not localhost.
    Disk filling up fastOld Docker images not prunedEnable Automatic Docker Cleanup under server settings, or run docker system prune -af --volumes manually (careful -- this removes unused volumes).
    Coolify UI slow after 3+ monthsPostgreSQL bloat or log accumulationdocker exec coolify-db psql -U coolify -c "VACUUM ANALYZE;". Truncate old deployment logs via Settings.

    Viewing Logs

    Control plane logs:

    bash
    sudo docker logs coolify -f

    Traefik logs (routing, certificate issuance):

    bash
    sudo docker logs coolify-proxy -f

    Per-application logs are available directly in the UI under the Logs tab.

    FAQ

    How does Coolify compare to CapRover, Dokku, and Portainer?

    Coolify, CapRover, and Dokku occupy the same niche -- self-hosted PaaS -- but differ in execution. Coolify is the most feature-complete: it bundles a first-class database manager, a services catalog, preview environments, S3 backups, and multi-server support out of the box. CapRover is simpler, uses Docker Swarm under the hood, and has a smaller but rock-solid feature set (great for 1-2 server setups). Dokku is the original "Heroku-in-a-box" and remains the lightest-weight option -- it is CLI-first, written in Bash, and has a large plugin ecosystem, but lacks a polished web UI. Portainer is different: it is a Docker/Kubernetes management UI, not a PaaS. Portainer shows you containers and lets you edit them; Coolify deploys applications from source. Many teams run Portainer alongside Coolify for lower-level visibility.

    Can I use Coolify with multiple servers?

    Yes. The machine where Coolify is installed is the control plane. Additional Ubuntu/Debian servers can be added under Servers -> New Server -- Coolify installs a small agent over SSH and the new node becomes a deployment target. You pick which server each resource runs on when you create it. A common topology is one small control plane + two or three beefy application servers + a dedicated database server. All are managed from the same UI.

    Is Coolify production-ready?

    Coolify is used in production by thousands of companies, including those running mission-critical SaaS. It has been in active development since 2021, reached v4 stable in 2024, and has a paid cloud offering that eats its own dog food. That said, any self-hosted platform demands operational discipline -- you are responsible for OS patching, monitoring disk usage, and verifying backups. If you are a solo founder with no ops background, the managed Coolify Cloud offering may be a better fit than self-hosting.

    Does Coolify support Kubernetes?

    No -- Coolify uses plain Docker (and optionally Docker Swarm for multi-node). This is by design: Kubernetes is powerful but adds significant operational overhead that most small-to-medium teams do not need. If your scale truly requires Kubernetes, look at Rancher or a managed offering (EKS, GKE, DOKS). For most PaaS workloads -- a handful of web apps, databases, and workers -- Docker is simpler, cheaper, and faster to operate.

    How do I migrate from Heroku or Vercel to Coolify?

    The migration path is usually straightforward because both Heroku and Vercel deploy the same Git repositories you will point Coolify at. Steps: (1) install Coolify on a VPS; (2) connect your GitHub source; (3) import environment variables from the source platform (heroku config -s > .env or the Vercel dashboard export); (4) create a Coolify database, dump and restore Heroku Postgres into it (pg_dump / pg_restore); (5) deploy the app on Coolify and verify; (6) cut DNS over. Most teams complete a migration for a single app in under two hours, with zero downtime using DNS TTL reductions.

    What resources does Coolify itself consume?

    The control plane and its dependencies (PostgreSQL, Redis, Traefik, SoketI) idle at roughly 500 MB RAM and negligible CPU. Each deployed application adds its own footprint on top of that -- a typical Next.js app runs in 200-400 MB, a PostgreSQL instance at rest in 150-250 MB, WordPress + MariaDB in 400-600 MB combined. On a 12 GB RAM Professional VPS you can comfortably run 15-25 resources before memory becomes the bottleneck.

    Can I still use raw Docker alongside Coolify?

    Yes. Coolify manages containers via Docker labels but does not prevent you from running docker run manually or using plain docker compose for resources you prefer to manage outside the UI. Just be careful not to bind the same ports (80/443) as Traefik. For full control with an external reverse proxy (for example, you want HAProxy in front of Coolify), disable the Coolify proxy and point external traffic at the application container IPs directly -- advanced, but supported.

    Next Steps

    With Coolify running, here are the highest-leverage follow-ups:

    • Read the official docs -- The Coolify documentation covers advanced topics this guide glosses over: SSO, RBAC, API tokens, custom buildpacks, and the Coolify API for infrastructure-as-code workflows.
    • Enable notifications -- Under Notifications, add a Discord or Slack webhook. You will get pinged on deploy failures, healthcheck alarms, and backup errors instead of discovering them after customers complain.
    • Set up the Coolify API -- Generate a token at Keys & Tokens and automate deploys, backups, and resource management from CI/CD pipelines or a Terraform provider.
    • Benchmark your VPS -- Run docker stats during a deploy to see real memory usage. If you are pushing limits, upgrade to a larger VPS plan before the first OOM kill hits production.
    • Plan your scaling path -- When the control plane VPS reaches 70% sustained CPU or 80% RAM, add a worker server rather than buying a bigger box. Multi-server Coolify scales horizontally and lets you isolate noisy workloads.

    Prefer a fully managed experience?
    >
    Self-hosting is empowering, but it is also a time investment. If you want the same architecture -- Git deploys, databases, one-click apps, automatic TLS -- without touching a terminal, our team can run Coolify for you on a managed VPS. Patching, monitoring, backups, and scaling are included.
    >
    - Coolify installed, configured, and hardened
    - Daily off-site backups to encrypted S3
    - Traefik wildcard certificates pre-provisioned
    - 24/7 monitoring with Discord/Slack alerts
    - Migration assistance from Heroku, Vercel, or Netlify
    >
    Launch a Professional VPS -- from EUR 19.99/month.

    Was this article helpful?

    ← Back to Install GuidesBrowse all categories →

    Still have questions?

    Contact Support →Submit a Ticket