Deployment guide

Coolify v4.3 on a VPS: Run Your Apps Without a Managed PaaS

Deploy on a VPS Cloud →

Tutorial

Coolify v4.3 on a VPS: Run Your Apps Without a Managed PaaS

Deployment9 min read8 steps

When the Heroku or Railway bill exceeds what the project justifies — especially when an agency runs ten or more distinct client projects — a self-hosted PaaS becomes a structural answer rather than a workaround. Coolify installs on your own VPS, connects to your Git repositories, builds and deploys on push, generates SSL certificates automatically, and version 4.3 adds PR deploy previews, scheduled volume backups and a structured audit log. One server, one interface, all your projects.

Contents· The Real Cost of Managed PaaS for an Agency1/10
  1. 01The Real Cost of Managed PaaS for an Agency
  2. 02What Coolify v4.3 Changes Compared to Previous Versions
  3. 03VPS Prerequisites for Hosting Coolify
  4. 04Installing Coolify on a VPS Running Ubuntu 22.04
  5. 05Deploying Your First Application from a Git Repository
  6. 06Coolify vs Heroku vs Railway vs Dokploy — Overview
  7. 07Configuring PR Deploy Previews and Volume Backups
  8. 08Back Up Coolify Configuration Before a Major Update
  9. 09Troubleshooting — Common Startup Errors
  10. 10Going Further

The Real Cost of Managed PaaS for an Agency

Heroku bills per dyno, Railway by compute hour and egress bandwidth, Render by active service. As soon as a client project outgrows its free tier — or the free tier is discontinued, as Heroku did in November 2022 — the bill climbs in steps. For an agency managing eight to fifteen applications, the cumulative total quickly exceeds what a single dedicated orchestration VPS would cost over a year. The issue is not the price of an isolated project: it is the multiplication of billing lines, each on a different cycle, with each platform's own overage rules. On top of that, vendor lock-in means environment variables, database add-ons and deployment pipelines are proprietary constructs you will need to migrate if the platform changes its pricing or retention policies. Coolify replaces all those lines with one: the VPS hosting the orchestrator.

What Coolify v4.3 Changes Compared to Previous Versions

  • PR deploy previews — each pull request automatically receives a preview environment accessible at a dedicated URL with its own SSL certificate, with no manual configuration
  • Scheduled volume backups — Docker volumes can be backed up to S3-compatible storage on a configurable schedule, with configurable retention
  • Structured audit log — all actions (deployment, variable change, restart, configuration change) are recorded with timestamp and user identity
  • Improved multi-user management — roles and permissions per team, isolated access per client project
  • Redesigned resource management interface — consolidated RAM/CPU/storage view per service to identify oversized containers
  • Docker Compose v2 support — extended compatibility with existing Compose files, no rewrite required
  • Enhanced webhook notifications — structured deployment payload, compatible with Slack, Discord and any HTTP endpoint

VPS Prerequisites for Hosting Coolify

Coolify orchestrates Docker and can run your applications, databases and its own panel on the same server simultaneously. The minimum resources to get started are 2 vCPU and 2 GB RAM — sufficient for a handful of lightweight services. In production, with multiple active client projects, plan for 4 GB RAM: each container reserves its memory, and databases (PostgreSQL, Redis, MySQL) consume consistently. Storage depends on your volumes: start with at least 40 GB SSD, more if you enable local backups. TCP ports 80 and 443 must be open for Let's Encrypt and application traffic. Port 22 (SSH) is required for installation and administration. Coolify is not compatible with a VPS where Docker was previously installed manually with a non-standard configuration: start from a fresh Ubuntu 22.04 LTS or Debian 12 image.

If you are new to the Linux command line, the installation comes down to the few commands below. Once Coolify is deployed, everything else — builds, SSL certificates, environment variables, restarts — is managed from its graphical interface. You no longer need SSH for day-to-day operations.

Installing Coolify on a VPS Running Ubuntu 22.04

  1. Provision the VPS and update the system

    Order a Ubuntu 22.04 LTS VPS. Connect via SSH with your root or sudo user, then update packages: apt update && apt upgrade -y. Do not pre-install Docker: the Coolify installation script handles this and configures dependencies in the expected order.

  2. Open the required ports

    Configure UFW to allow SSH, HTTP and HTTPS: ufw allow 22/tcp && ufw allow 80/tcp && ufw allow 443/tcp && ufw enable. If your provider offers an upstream network firewall (security group, cloud firewall), apply the same rules at that level before continuing.

  3. Run the official installation script

    Launch the script provided by Coolify: curl -fsSL https://cdn.coollabs.io/coolify/install.sh | bash. The script installs Docker CE, deploys the Coolify stack (panel, Traefik proxy, agent), and starts the services. The operation takes between two and five minutes depending on the server connection.

  4. Access the initial panel

    Once installation is complete, open http://<VPS-IP>:8000 in your browser. Coolify prompts you to create the admin account: choose a strong password and store it in your password manager. This account has access to all instance resources.

  5. Configure the panel domain

    In the instance settings (Settings > General), enter the subdomain you reserved for Coolify, for example coolify.yourdomain.com. Make sure the A record for that subdomain points to the VPS IP. Coolify automatically generates and renews a Let's Encrypt certificate for this domain and switches access to HTTPS.

  6. Connect your Git source

    Under Sources, add your GitHub integration (via a GitHub App) or GitLab. A GitHub App is preferable to a deploy key: it allows Coolify to create webhooks automatically on each repository and trigger PR deploy previews without additional manual configuration.

  7. Create your first application

    Click New Resource > Application, select your repository, choose the deployment branch and the exposed port. Coolify detects the stack via Nixpacks (Node.js, Python, PHP, Go, Ruby…) or uses the Dockerfile if you provide one. Confirm: the first build starts immediately.

  8. Verify the deployment

    In the deployment logs, follow the build → push → start steps. Once the container is running, Coolify displays the public URL of the application with its active SSL certificate. Test access from a browser and verify in Resources that memory consumption stays within expected limits. For an agency managing multiple clients, create one Coolify Project per client — each project has its own environment variables, its own team members, and its resources are isolated from other projects.

Deploying Your First Application from a Git Repository

Coolify monitors the branch you designated and triggers a new deployment on every push via webhook. The full cycle — receiving the GitHub/GitLab event, building the image, stopping the previous container, starting the new one — typically takes less than a minute for a standard Node.js application. Environment variables are managed as encrypted secrets in Coolify's database: they never appear in plain text in the logs. For an application that requires a database, first create the database service in the same Coolify project (New Resource > Database), note the generated credentials, then add them as environment variables in the application. Both services automatically share the same internal Docker network.

Coolify vs Heroku vs Railway vs Dokploy — Overview

Scroll the table

Coolify (self-hosted)Heroku/Render/Railway
Cost modelVPS cost only, free softwarePer dyno/month — $5 to $50+ per app depending on tier
PR deploy previewsYes, since v4.3 (September 2026)Yes (Review Apps), included in paid plans
Scheduled volume backupsYes, to S3-compatible storage — since v4.3Via paid add-ons (Heroku Postgres Backup)
Audit logYes, structured — since v4.3Activity feed, not natively exportable
Supported languages/stacksEverything Nixpacks or Docker supportsOfficial buildpacks (Node, Python, Ruby, Java, PHP, Go…)
Data portabilityDocker volumes on your own serverData at Heroku/Salesforce

Configuring PR Deploy Previews and Volume Backups

Deploy previews are enabled from the application configuration page, under the Preview Deployments tab. Once enabled, every pull request opened on the repository automatically receives an ephemeral environment accessible at a URL built on the pattern <pr-number>.<app-domain>. Coolify manages the SSL certificate for this environment via Let's Encrypt and destroys the environment when the PR is closed or merged. For volume backups, go to Storage > Backups at the service level. Enter the credentials for an S3-compatible bucket (AWS S3, Cloudflare R2, self-hosted MinIO), the desired frequency (daily, weekly) and the retention count. Coolify creates a compressed archive of the volume and transfers it to the bucket on the defined schedule. Trigger the first execution manually from the dashboard to confirm that the S3 credentials work before relying on the automation.

Back Up Coolify Configuration Before a Major Update

Before applying a Coolify update from the panel (Settings > Updates), back up the internal instance database. Coolify stores all its configuration in a Docker volume named coolify-db. Export it manually: docker run --rm -v coolify-db:/data -v $(pwd):/backup alpine tar czf /backup/coolify-db-$(date +%Y%m%d).tar.gz /data. Store this archive outside the VPS (your S3 bucket, local storage) before launching the update. If something goes wrong after the update, restore with the reverse command. This precaution takes less than a minute and avoids manually rebuilding your entire configuration.

Troubleshooting — Common Startup Errors

Four situations come up regularly during first installations or after an update.

Port 80 or 443 already in use. Coolify uses Traefik as a reverse proxy on ports 80 and 443. If another process occupies these ports (nginx, Apache installed directly on the VPS), Traefik does not start and no certificate can be issued. Check with ss -tlnp | grep -E ':80|:443', stop the competing process, then restart Coolify with docker compose -f /data/coolify/source/docker-compose.yml restart.

Git webhook not triggered after a push. The most frequent cause is a network firewall blocking GitHub or GitLab outbound IP addresses to your VPS. Verify that GitHub Webhook IP ranges (https://api.github.com/meta) are allowed on port 443 of your VPS. Also check in Coolify that the webhook was properly created in the GitHub repository settings (Webhooks tab of the repository).

SSL certificate stuck pending. Let's Encrypt uses the HTTP-01 challenge: it attempts to reach http://<your-domain>/.well-known/acme-challenge/. If the domain's DNS is not yet propagated, or if port 80 is not reachable from the outside, the challenge fails and Traefik retries every five minutes. Wait for full DNS propagation, verify port 80 accessibility with curl -I http://<your-domain>, then restart the application service in Coolify.

Application started but unreachable. Verify that the port exposed in the Coolify configuration matches the port your application actually listens on inside the container. A Node.js container listening on 3000 must have 3000 as the container port in the Coolify configuration, even if the public URL uses port 443.

Going Further

Coolify fits within an ecosystem of self-hosted deployment solutions. If your context calls for a different approach — GitOps pipelines via Kamal, lightweight orchestration with Dokploy, or a simplified interface with Easypanel — each tool has its strengths depending on team size and deployment complexity. The related articles explore these alternatives and the specific use cases for each environment.

Start with Coolify on a ServOrbit VPS

Provision a ServOrbit VPS with the Coolify template pre-installed: Docker configured, panel accessible, SSL certificate ready. Connect your Git repositories and start deploying.

Need help?

Browse our help center and FAQ, or reach our team — callback, WhatsApp or email. Support in French, English and Arabic.

Message us on WhatsAppopens in a new tab