Skip to content

Deploy Coolify on a VPS

Updated Sep 2026

We earn commissions when you shop through the links below. Full disclosure →

Step-by-step guide to installing Coolify on your own VPS — a self-hosted Heroku/Vercel replacement with built-in Traefik HTTPS, Git deploys, and backups.

Before you start
  • A VPS with 2 vCPU / 4 GB RAM (Coolify + a couple of apps)
  • A fresh Ubuntu 22.04/24.04/26.04 server with root/sudo SSH access
  • A domain you can point at the server (for HTTPS)
Need a box for this guide? Kamatera's free tier lets you spin one up now.Start free on Kamatera → (opens in new tab)

What Coolify is

Coolify is an open-source, self-hostable platform-as-a-service — think Heroku, Vercel, or Netlify, but running on a box you own. You point it at a Git repository, it builds your app in a container, wires up a reverse proxy, and issues an HTTPS certificate, all from a web dashboard. Databases, cron jobs, one-click services (Postgres, Redis, MinIO, Plausible, and dozens more), and multi-server management come built in.

The appeal is simple: predictable cost and no per-seat or per-build billing. A managed PaaS charges you more as your traffic and team grow. A single VPS running Coolify costs the same whether you deploy once a month or fifty times a day. You trade a monthly platform bill for owning the server — and for a project you can point at as many apps as the box can hold.

One honest caveat before you start: Coolify moves fast. The v4 line is under active development and releases land frequently. That's good for features, but it means you should read the changelog before upgrading and keep backups current (both covered below). This guide targets the current v4 installer.

Server sizing — why 2 vCPU / 4 GB

Coolify's published minimum is 2 CPU cores, 2 GB RAM, and 30 GB of disk. That minimum runs Coolify itself: the dashboard, its internal Postgres database, a Redis instance, a realtime service, and the Traefik proxy. It leaves very little headroom for the apps you actually want to deploy.

The important detail: by default, Coolify deploys your apps onto the same server it runs on. Every app you build is another container — with its own Node/PHP/Python runtime, its own memory footprint, and a build step that spikes CPU and RAM. Node builds in particular are memory-hungry and will OOM-kill on a 2 GB box.

So 2 vCPU / 4 GB RAM is the realistic floor for Coolify plus a couple of small apps and a database. That headroom is why we recommend a 2 vCPU / 4 GB VPS, with room to add capacity as your app count grows. If you plan to run more than a handful of apps, size up to 8 GB — it's cheaper than debugging failed deploys. Give the disk room too: container images and build caches accumulate fast, so 40–80 GB is comfortable.

Prepare the server

Start from a fresh Ubuntu 22.04, 24.04, or 26.04 server. Coolify manages Docker and its own dependencies, so a clean OS is best. SSH in as root (or a sudo user) and update the system first:

apt update && apt upgrade -y

Create a non-root user with sudo rights to log in as day to day:

adduser deploy
usermod -aG sudo deploy

Coolify's installer needs Docker, curl, and a handful of tools — but you don't install them by hand. The installer does it for you. What you do need to handle yourself is the firewall. Coolify uses port 8000 for its dashboard, 80 and 443 for your deployed apps, and 22 for SSH. Open them before you install:

ufw allow 22
ufw allow 80
ufw allow 443
ufw allow 8000
ufw enable
Where to host itaffiliate disclosure
Hetzner Cloudrun it on
2 vCPU · 4 GB RAM · 80 GB SSD · $23.59/mo
Get Hetzner Cloud (opens in new tab)
Kamaterafree trial
1 vCPU · 1 GB RAM · 20 GB SSD · $4.00/mo
Start free on Kamatera → (opens in new tab)
DigitalOceanalso works on
1 vCPU · 1 GB RAM · 25 GB SSD · $6.00/mo
Deploy on DigitalOcean → (opens in new tab)

Paid link — we earn a commission if you shop through it.

Install Coolify

Coolify ships a single official installer. Run it as root:

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

The script does a lot in one pass:

  • installs base tooling (curl, wget, git, jq, openssl),
  • installs Docker Engine (v24+) and configures the daemon,
  • creates Coolify's data directory at /data/coolify,
  • generates the SSH keys Coolify uses to manage servers,
  • pulls the Coolify containers and starts them.

Give it a couple of minutes. When it finishes, the terminal prints the URL to open. Point your browser at:

http://YOUR_SERVER_IP:8000

First-run setup

The first time you load that URL, Coolify shows a registration screen.

Create your admin account immediately. This is a genuine security step, not a formality: the registration page is open until the first account is created, so whoever registers first controls the server. Do it the moment the install finishes — before you go make coffee.

Once you're in, Coolify registers the machine it's running on as the "localhost" server automatically. That's the box you just installed on, and it's ready to deploy to out of the box. You don't need to add a remote server unless you later want Coolify to deploy to other machines it manages over SSH.

HTTPS + domain

Serving apps over http://IP:8000 is fine for a first test, but you want real domains and TLS. Coolify uses Traefik as its default reverse proxy, and Traefik handles Let's Encrypt certificates automatically.

First, point DNS at the server. Create an A record for your domain (say app.example.com) pointing at the server's public IP. If you want a dedicated hostname for the Coolify dashboard itself, add one for that too (e.g. coolify.example.com).

For the dashboard, open Settings in Coolify and set the Instance Domain (FQDN) to your dashboard hostname. Once DNS resolves, Traefik requests a certificate and the dashboard moves to HTTPS on that name — no more :8000.

For each app, add your domain in the application's Domains field. When you save, Traefik kicks off an ACME HTTP-01 challenge: it serves a verification file over port 80, Let's Encrypt fetches it, and — once DNS resolves — a certificate is issued in roughly 30–90 seconds. This is exactly why ports 80 and 443 must be open. Certificates are stored in /data/coolify/proxy/acme.json and Traefik renews them automatically about 30 days before the 90-day expiry, so you never touch renewals by hand.

Deploy your first app

With the server registered and a domain ready, deploying is quick:

  1. Create a Project, then an Environment (Coolify scaffolds a default one).
  2. Add a New Resource → Application and choose your source — a public Git URL, or connect GitHub/GitLab so Coolify can deploy private repos and rebuild on push.
  3. Pick the repository and branch. Coolify auto-detects the build type (Nixpacks, a Dockerfile, or Docker Compose). Override the build pack if you need to.
  4. Set the Domain (from the step above) and any environment variables your app needs.
  5. Hit Deploy. Coolify clones the repo, builds the image, starts the container, and routes your domain to it through Traefik.

Watch the live build log in the dashboard. When it goes green, your app is live on HTTPS. Enable auto-deploy and every push to the branch redeploys.

Backups

Coolify's own database is the most important thing on the box. It holds every project, every environment variable, every secret, and every server connection you've configured. Lose it and you lose the map to your entire setup, even if the app containers survive.

Coolify has a built-in backup feature for its internal Postgres database. In Settings → Backup, configure a scheduled backup and — critically — point it at off-box storage (an S3-compatible bucket). A backup that only lives on the same server dies with the server. Everything Coolify needs to restore itself lives under /data/coolify, so that path (plus the database dump) is what you're protecting.

Two more habits worth building:

  • Back up your applications' own databases (the Postgres/MySQL services you create in Coolify) on their own schedules — the platform backup covers Coolify's config, not your app data.
  • Periodically test a restore. An untested backup is a guess.

Upgrades

Coolify can update itself. In Settings you can enable auto-updates, or take the update when the dashboard shows a new-version notification. To upgrade manually from the terminal, re-run the installer:

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

Because Coolify iterates quickly, read the release notes before a major upgrade and make sure your backup ran first. Pin to a specific version if you want to control exactly when you move by passing it to the installer, e.g. ... | sudo bash -s 4.0.0. For most people, staying on the current stable line with a fresh backup is the right call.

Troubleshooting

Dashboard won't load on :8000. Almost always the firewall. Confirm port 8000 is open (ufw status) and, if your VPS host has a separate cloud firewall, that 8000, 80, and 443 are allowed there too — cloud firewalls sit in front of ufw.

Certificate never issues / app stuck on HTTP. The ACME challenge needs DNS pointing at the server and port 80 reachable from the internet. Check the A record has propagated (dig app.example.com) and that nothing else is bound to port 80. Traefik retries, but it can't verify a domain that doesn't resolve to your box yet.

A build fails or the server grinds to a halt. Usually memory. A Node or similar build spikes RAM and gets OOM-killed on an undersized box — the single best argument for the 4 GB (or larger) sizing above. Check container logs in the dashboard, and size up if builds routinely fail.

Verification + next steps

You're done when you can: load the Coolify dashboard over HTTPS on your own domain, deploy an app from Git and reach it on its own domain with a valid certificate, and see a scheduled backup landing in off-box storage.

From here, add more apps, wire up one-click databases, or register additional servers for Coolify to manage. The one thing that makes or breaks the experience is the box underneath it — Coolify and your apps share it. A 2 vCPU / 4 GB box is the right tier; Best VPS for self-hosting ranks the current options by price.

Next steps

How to self-host Coolify →More self-hosted platform-as-a-service tools →Automatic HTTPS with Caddy →Run Claude Code with Ollama on Your Own VPS →How to Deploy Actual Budget on a VPS →How to Deploy AnythingLLM on a VPS →How to Deploy Appwrite on a VPS →How to Deploy Audiobookshelf on a VPS →How to Deploy Authelia on a VPS →How to Deploy authentik on a VPS →How to Deploy Baserow on a VPS →How to Deploy Beszel on a VPS →How to Deploy Bitwarden on a VPS →How to Deploy BookStack on a VPS →How to Deploy CapRover on a VPS →How to Deploy Checkmate on a VPS →How to Deploy Directus on a VPS →How to Deploy docker-mailserver on a VPS →How to Deploy Docmost on a VPS →How to Deploy Dokku on a VPS →How to Deploy Dokploy on a VPS →How to Deploy Firefly III on a VPS →How to Deploy Forgejo on a VPS →How to Deploy Gatus on a VPS →How to Deploy Ghostfolio on a VPS →How to Deploy Gitea on a VPS →How to Deploy GitLab on a VPS →How to Deploy GlitchTip on a VPS →How to Deploy Grafana on a VPS →How to Deploy Graylog on a VPS →How to Deploy Headscale on a VPS →How to Deploy Healthchecks on a VPS →How to Deploy Home Assistant on a VPS →How to Deploy Immich on a VPS →How to Deploy Jan on a VPS →How to Deploy Jellyfin on a VPS →How to Deploy Karakeep on a VPS →How to Deploy Keycloak on a VPS →How to Deploy Leantime on a VPS →How to Deploy LibreChat on a VPS →How to Deploy Linkwarden on a VPS →How to Deploy LocalAI on a VPS →How to Deploy Mailcow on a VPS →How to Deploy Mailu on a VPS →How to Deploy Matomo on a VPS →How to Deploy Mattermost on a VPS →How to Deploy Meilisearch on a VPS →How to Deploy Memos on a VPS →How to Deploy n8n on a VPS →How to Deploy Navidrome on a VPS →How to Deploy NetBird on a VPS →How to Deploy Netdata on a VPS →How to Deploy Nextcloud on a VPS →How to Deploy Next.js to a VPS →How to Deploy Nginx Proxy Manager on a VPS →How to Deploy NocoDB on a VPS →How to Deploy ntfy on a VPS →How to Deploy Ollama on a VPS →How to Deploy Open WebUI on a VPS →How to Deploy OpenHands on a VPS →How to Deploy OpenObserve on a VPS →How to Deploy OpenProject on a VPS →How to Deploy Outline on a VPS →How to Deploy Pangolin on a VPS →How to Deploy Paperless-ngx on a VPS →How to Deploy Passbolt on a VPS →How to Deploy Plane on a VPS →How to Deploy Plausible Analytics on a VPS →How to Deploy Pocket ID on a VPS →How to Deploy PocketBase on a VPS →How to Deploy Prometheus on a VPS →How to Deploy Psono on a VPS →How to Deploy Radarr on a VPS →How to Deploy Rocket.Chat on a VPS →How to Deploy SigNoz on a VPS →How to Deploy Sonarr on a VPS →How to Deploy Stalwart on a VPS →How to Deploy Stirling-PDF on a VPS →How to Deploy Supabase on a VPS →How to Deploy Synapse on a VPS →How to Deploy Taiga on a VPS →How to Deploy TeamPass on a VPS →How to Deploy Tinyauth on a VPS →How to Deploy Traefik on a VPS →How to Deploy Trilium on a VPS →How to Deploy Twenty CRM on a VPS →How to Deploy Umami on a VPS →How to Deploy Uptime Kuma on a VPS →How to Deploy Vaultwarden on a VPS →How to Deploy Vikunja on a VPS →How to Deploy wg-easy on a VPS →How to Deploy Wiki.js on a VPS →How to Deploy Zabbix on a VPS →How to Deploy Zitadel on a VPS →How to Deploy Zulip on a VPS →Docker & Compose on Ubuntu 26.04 →Building AI Workflows with n8n →Install Open WebUI with Ollama →Adding AI-Powered Insights to Plausible Analytics →Building AI-Powered Apps with Supabase and pgvector →

We use analytics cookies (Google Analytics, PostHog) to see which guides are useful. No ad networks, no cross-site tracking. See our privacy policy.