Installing Coolify on Ubuntu 24.04 is a one-line command if everything goes right. About 10% of the time, something goes sideways and the script either bails or finishes cleanly but the dashboard isn't reachable, leaving you with a server that's been touched but isn't actually running anything useful. This guide walks through the install end to end, including the prerequisites the official docs assume you've already set up and the failure modes that catch first-timers.
Written against Coolify v4.0.0, the current stable as of April 2026. Works for Ubuntu 22.04 and Ubuntu 24.04 LTS, both supported by the official install script. If you're on a non-LTS Ubuntu version or a different distribution, a few of the steps differ.
Prerequisites for installing Coolify
The minimum requirements according to the official Coolify documentation:
- Operating system, Ubuntu 20.04, 22.04, 24.04 LTS or Debian 11, 12. The install script supports these explicitly. Other distros (CentOS, Rocky, Arch) work in principle but aren't covered by the script and require manual steps
- CPU, 2 cores minimum, AMD64 or ARM64 architecture
- RAM, 2 GB minimum (Coolify itself uses about 600 MB, leaving 1.4 GB for your applications, which is tight). 4 GB is the realistic minimum for any production use, 8 GB is comfortable for multi-app setups
- Disk space, 30 GB total with at least 20 GB free. The install script checks for this and will fail if you're under
- Network, public IPv4 address, ports 22, 80, 443, 8000, 6001 and 6002 open in your firewall
- Root access, the install script requires running as root or with sudo. Non-root setups aren't fully supported as of v4
- curl, comes pre-installed on every modern Ubuntu, used to fetch the install script
If you're spinning up a fresh VPS for this, the LumaDock Coolify VPS ships with v4 already installed on Debian 12, so you can skip everything in this guide and go straight to the dashboard. If you want to install Coolify on a server you already have or you're following along on a fresh VPS from elsewhere, keep reading.
Step 1, prepare the Ubuntu 24.04 server
SSH into your fresh server as root (or as a user with sudo). Update the package lists and upgrade existing packages first:
apt update
apt upgrade -y
Reboot if the upgrade installed a new kernel (you'll see a notice if it did):
reboot
SSH back in after the reboot.
Configure the firewall
Ubuntu 24.04 ships with UFW available but not enabled by default. Enable it and open the ports Coolify needs:
ufw allow 22/tcp # SSH
ufw allow 80/tcp # HTTP
ufw allow 443/tcp # HTTPS
ufw allow 8000/tcp # Coolify dashboard
ufw allow 6001/tcp # Coolify Realtime
ufw allow 6002/tcp # Coolify Realtime
ufw enable
Confirm with ufw status. You should see all six rules listed. The dashboard port (8000) being open during initial setup is necessary, you can lock it down to your IP only after first login if you want.
Verify disk space
Before running the install script, check available space:
df -h /
Look at the "Avail" column for the root filesystem. You need at least 20 GB free. If your VPS came with a smaller disk that's mostly full from the OS install, the Coolify install script will fail with "insufficient disk space" partway through. Either resize the disk before continuing or pick a VPS plan with more space.
Confirm IPv4 routing
This is the gotcha that hits Hetzner and a few other providers. The Coolify install script downloads packages from GitHub Container Registry over IPv6 by default if the server has IPv6 routing. On some providers, IPv6 routing is broken for outbound connections, which causes the GitHub package fetch to time out and the install to fail.
Test outbound IPv6 by running:
curl -6 https://github.com
If this hangs or fails, you have an IPv6 routing problem. Force the system to prefer IPv4 by editing /etc/gai.conf:
echo "precedence ::ffff:0:0/96 100" >> /etc/gai.conf
This makes IPv4 the preferred outbound option. The Coolify install will work after this. You can revert the change after install if you want, but it doesn't hurt to leave it.
Step 2, run the Coolify install script
The official install command:
curl -fsSL https://cdn.coollabs.io/coolify/install.sh | sudo bash
What this does:
- Downloads the install script from Coolify's CDN
- Runs it as root (via sudo bash)
- Checks system requirements (disk space, RAM, OS)
- Installs Docker if it's not already present, using Docker's official installer
- Installs Docker Compose plugin
- Creates the
/data/coolifydirectory tree - Pulls the Coolify Docker image
- Generates random secrets for the Coolify database, encryption key and admin user
- Starts the Coolify containers (coolify, coolify-db, coolify-redis, coolify-realtime, coolify-proxy)
- Prints the dashboard URL when done
The whole process takes 3 to 10 minutes depending on your network speed and disk performance. The slowest part is usually pulling the Docker images.
If the script reports success, you'll see a final message like:
Coolify is ready! Visit http://your-server-ip:8000
If it doesn't, see the troubleshooting section below.
Step 3, access the Coolify dashboard for the first time
Open http://your-server-ip:8000 in a browser. The first request takes 1-2 minutes after the install finishes because the containers are still starting. If you get a connection error immediately, wait 60 seconds and try again.
The first page is the admin signup. Pick an email and a strong password. There's no default username or password, you create the admin account on first visit. Save these credentials somewhere safe, recovery requires SSH access to the server and a manual database edit if you lose them.
After signup, you're in the dashboard. The first thing to do is connect the local server. The dashboard guides you through this on first visit or you can navigate to Servers → + Add a new server → Localhost. Coolify uses the Docker socket to connect to itself, no SSH key needed for the local server.
Step 4, immediate post-install hardening
Don't skip this. A fresh Coolify install with port 8000 open to the internet is a target. Two changes within the first hour:
Restrict port 8000 to your IP
Once you've logged in, lock down port 8000 so only your IP can reach the dashboard:
ufw delete allow 8000/tcp
ufw allow from YOUR.PUBLIC.IP/32 to any port 8000
Replace YOUR.PUBLIC.IP with your actual public IP. Find it at ifconfig.me or similar. After this, only requests from that IP can reach the Coolify dashboard. Application traffic still goes through Traefik on 80 and 443 for everyone.
If you have a dynamic IP (residential ISP), use a wider range or pair this with a VPN. The point is to take the dashboard off the public internet.
Set up a domain for the dashboard with HTTPS
Long-term, you want the dashboard reachable via HTTPS at a real domain instead of http://ip:8000. From the Coolify dashboard, go to Settings → General and set the Instance Domain to something like coolify.yourdomain.com. Point an A record at your server's IP. Coolify issues a Let's Encrypt cert for the domain (the Coolify SSL guide covers the cert flow in detail).
After the cert issues, you can reach the dashboard at https://coolify.yourdomain.com over HTTPS. The IP-based URL on port 8000 still works as a fallback, you can close port 8000 entirely once the domain works if you want.
Common Coolify install failures and how to fix them
Script finishes successfully but dashboard not reachable on port 8000
Most common failure mode according to the Coolify troubleshooting docs. Three possible causes:
Containers haven't started yet. Run docker ps on the server. You should see four Coolify containers (coolify, coolify-db, coolify-redis, coolify-realtime) all in the "running" state. If they aren't, wait 60 seconds and try again. If they're stuck in "starting" or "restarting" state, check docker logs coolify for the actual error.
Port 8000 not open. Run ufw status to verify the firewall rule is in place. If the port is open in UFW but still not reachable, check if your VPS provider has a separate cloud firewall (some providers like AWS, GCP, Hetzner Cloud do, distinct from the OS firewall).
Service binding to the wrong interface. Run netstat -tulpn | grep 8000 on the server. The result should show 0.0.0.0:8000 not 127.0.0.1:8000. If it's bound to localhost, Coolify's port mapping went wrong, usually because the install script didn't complete successfully despite reporting success. Re-run the install script.
Insufficient disk space
The install script checks for at least 20 GB free and bails if it's less. Free up space by removing unused packages, old log files and any leftover system snapshots. apt autoremove and journalctl --vacuum-time=7d are good starting points. If your disk is just too small, you'll need to resize the VPS or pick a different plan.
Docker version too old
Older Ubuntu 20.04 installations might have a Docker version older than 24, which Coolify doesn't support. The install script tries to install or upgrade Docker but if there's a conflict with an existing installation it can fail. Remove the old Docker first:
apt remove docker docker.io containerd runc
apt purge docker-ce docker-ce-cli containerd.io
rm -rf /var/lib/docker
Then re-run the Coolify install script, which will install a fresh Docker.
IPv6 timeout during package fetch
Covered in Step 1. The fix is the /etc/gai.conf change to prefer IPv4. If you skipped that step and the install fails with timeouts pulling images, edit gai.conf and re-run.
"Permission denied" or sudo errors
You're running as a non-root user without sudo or sudo isn't configured to allow your user. Switch to root with sudo -i or add your user to the sudo group with usermod -aG sudo yourusername.
SSL connection errors during install
Your server's clock is wrong. SSL certificate validation depends on accurate time. Sync the clock:
apt install -y systemd-timesyncd
timedatectl set-ntp true
Wait a minute, then re-run the install script.
"Cannot connect to the Docker daemon"
Docker is installed but not running. Start it:
systemctl enable docker
systemctl start docker
Re-run the Coolify install script.
Localhost server fails to connect after install
The dashboard loads but when you try to add the localhost server it errors with "cannot connect." This is usually a Docker socket permission issue. Verify the Coolify container can read the socket:
docker exec coolify ls -la /var/run/docker.sock
Should show the socket file. If it isn't visible, the docker socket isn't mounted into the Coolify container correctly, which usually means a partial install. Re-run the install script or recreate the Coolify container.
What the install script doesn't do
Worth being explicit about. After the install finishes, Coolify is running but you still need to:
- Set up automated backups, the install script doesn't configure backups. The Coolify database backups guide covers Postgres, MySQL and MongoDB backups to S3-compatible storage
- Configure SSH hardening, defaults are reasonable but not great. Disable password auth, require SSH keys, change the default SSH port if you want. The production server security guide covers SSH hardening, Fail2ban and firewall best practices
- Set up monitoring, Coolify's built-in Sentinel provides basic metrics but for proper observability you want Prometheus and Grafana. The Coolify monitoring guide covers the full stack
- Configure notifications, Coolify can send deploy alerts to Slack, Discord, Email and others, but you have to configure them. Profile → Notifications
- Connect a Git source, before you can deploy anything, you need to connect GitHub, GitLab, Gitea or Bitbucket as a Source. The Coolify GitHub setup guide covers the GitHub App flow in detail
Updating Coolify after install
Coolify has a built-in update flow. From the dashboard, go to Settings → Update, click the update button when a new version is available. Coolify pulls the new image and restarts the dashboard container, the application containers keep running so your apps stay up during the update.
From the command line, you can also run the install script again, it detects an existing installation and updates in place:
curl -fsSL https://cdn.coollabs.io/coolify/install.sh | sudo bash
Either path takes 1-2 minutes. The dashboard is briefly unavailable during the restart, then it comes back on the new version.
What I suggest you do next...
With Coolify running, the natural progression is: connect a GitHub Source, deploy your first application, set up SSL on a custom domain, configure backups, configure monitoring. Each of these has a dedicated guide:
- Connect GitHub to Coolify
- Set up SSL on Coolify
- Coolify database backups
- Coolify monitoring with Prometheus and Grafana
For specific stacks, the deploy guides for Next.js, Laravel, Django and SvelteKit walk through deploying real applications.

