home / blog / coolify ← your own heroku, kinda

PaaS & Self-Hosting

Setting Up Coolify: Your Self-Hosted Vercel on Ubuntu Server

Published: July 13, 2026 • 10 min read · ← Back to Blog

Quick Reference Sheet

What it is for:
Deploying web apps, APIs, and databases to your own server with automatic HTTPS, reverse proxy, and a visual dashboard. No cloud vendor lock-in.
Who uses it:
Developers and homelab operators who want a self-hosted alternative to Vercel, Heroku, Railway, or Render running on their own hardware.
Prerequisite:
A running Ubuntu Server 22.04 or 24.04 LTS with SSH access and at least 2GB RAM. Set that up first →
Command Snippet Notice: Copy code blocks using the Copy button. Always replace placeholders with your actual values:
How to find the parameters for this guide:
  • your-server-ip: Run hostname -I on your server terminal to get the IP address (e.g. 192.168.1.200).
  • your-domain.com: Your registered domain or subdomain pointed at your server's public IP via a DNS A record.
  • admin@your-domain.com: Your real email address - used by Coolify to request Let's Encrypt SSL certificates.

Once your Ubuntu Server is installed, hardened with SSH, and network-configured, the logical next step is giving it a deployment interface. Coolify is an open-source platform that transforms your bare server into a private cloud. You get a visual dashboard to deploy apps from Git repositories, spin up PostgreSQL, MySQL, Redis, or MongoDB databases, and automatically provision SSL certificates for your domains. Everything runs entirely on your own hardware with zero monthly fees.

1. What You Can Do With Coolify

Before installing, here is what Coolify gives you out of the box:

  • App Deployments: Connect a GitHub, GitLab, or Bitbucket repository. Coolify automatically pulls the code, detects the runtime (Node.js, Python, PHP, Go, static HTML, Docker), builds it, and deploys it as a running container.
  • One-Click Databases: Spin up PostgreSQL, MySQL, MariaDB, MongoDB, or Redis with isolated storage volumes, auto-generated credentials, and scheduled backups.
  • Automatic SSL: Built-in Caddy and Traefik reverse proxy support. Point your domain at the server, add it in the dashboard, and HTTPS is provisioned via Let's Encrypt automatically. No manual Certbot setup needed.
  • Multiple Servers: Connect additional remote machines to the same Coolify dashboard and deploy workloads across all of them from one interface.
  • Preview Deployments: Automatically deploy pull request branches as isolated preview environments, just like Vercel's preview URLs.

2. What the Coolify Dashboard Looks Like

After installation, Coolify is accessible at http://your-server-ip:8000 in your browser. Below is a representative mockup of the main dashboard panels you will interact with. You can also try the live demo at demo.coolify.io before installing.

http://192.168.1.200:8000
Coolify
Self-Hosted Platform
Dashboard
Projects
Databases
Servers
Overview
Applications
3
All running
Databases
2
PG + Redis
SSL Domains
3
Auto HTTPS
Recent Deployments
portfolio-frontend
2 min ago
api-backend
1 hr ago
staging-preview
Building...
Coolify Dashboard - accessed at http://your-server-ip:8000 after install • Try the live demo at demo.coolify.io

3. Installing Coolify on Your Ubuntu Server

SSH into your server and run the official one-line installer with sudo (it requires root). This downloads and executes the Coolify setup script, automatically installs Docker, configures the required services, and starts the dashboard:

curl -fsSL https://cdn.coollabs.io/coolify/install.sh | sudo bash
Caution: Always Review Install Scripts
Piping a curl command directly to bash runs code from the internet with full root privileges. Before running on a production server, inspect the script first: download it with curl -fsSL https://cdn.coollabs.io/coolify/install.sh -o install.sh, review the file contents, then execute with bash install.sh.

The installation takes 3–5 minutes. When it completes, you will see a success message:

Congratulations! Coolify is ready to use.
Open your browser and navigate to http://your-server-ip:8000
to complete the setup.
Troubleshooting: Port 8000 unreachable after install
Workaround: Your server's UFW firewall may be blocking port 8000. Run the commands below on your server terminal to open it, then enable the firewall. Port 22 stays open so you never lock yourself out of SSH:
# SSH first — never lock yourself out, then the Coolify dashboard port
sudo ufw allow 22/tcp
sudo ufw allow 8000/tcp
sudo ufw enable
sudo ufw status

After opening the port, verify Coolify's containers are all running by checking Docker:

docker ps | grep coolify

All Coolify containers should show a status of Up. If any show Exited, restart the Coolify service:

docker restart coolify

4. Accessing the Dashboard & First-Time Setup

Open a web browser on any device connected to the same network as your server and navigate to port 8000. Get your server IP by running hostname -I on the server, then enter it in your browser:

http://your-server-ip:8000

You will be greeted by the Coolify onboarding wizard. Complete these steps:

  1. Create Admin Account: Enter a username, email address, and strong password. This becomes your primary administrator login for the entire dashboard.
  2. Instance Settings: Set an instance name (e.g. my-homelab) and optionally a public domain if you have one. You can skip this and configure it later under Settings → Instance.
  3. Server Validation: Coolify automatically detects the local server where it is installed. Click Validate & Continue. It runs a pre-flight check verifying Docker is accessible, disk space is sufficient, and network connectivity is active.
Troubleshooting: Server validation fails on "Docker socket not accessible"
Workaround: Coolify needs access to the Docker socket. Add your user to the docker group, then log out and back in to apply the change:
sudo usermod -aG docker $USER

After logging back in, if Coolify is already running, restart it to pick up the new socket permissions:

docker restart coolify

5. Deploying Your First Application

Navigate to Projects → New Project → Add New Resource → Application. Then follow these steps:

  1. Connect Git Source: Click GitHub and authorize Coolify to access your account. Select the repository you want to deploy.
  2. Choose Branch: Select the deployment branch (e.g. main or production).
  3. Build Configuration: Coolify auto-detects the runtime from your repo's package.json, Dockerfile, requirements.txt, or Procfile. Set the build command (e.g. npm run build) and start command (e.g. npm start) if not auto-detected.
  4. Set Domain: In the Domains field, enter the domain or subdomain you want (e.g. app.your-domain.com). Make sure your DNS A record is already pointing to your server's public IP before this step.
  5. Click Deploy. Coolify pulls the code, runs the build, starts the container, and provisions HTTPS automatically. You can monitor the real-time build log stream directly in the browser.
Caution: Automatic SSL Requires a Public DNS A Record
Let's Encrypt certificate issuance only works if your domain's DNS A record is publicly resolvable to your server's public IP address. If your server is behind a home NAT or CGNAT (common with fiber and Starlink connections), Let's Encrypt cannot reach it to validate ownership. In that case, use a Cloudflare Tunnel or a VPS with a static public IP as a proxy endpoint in front of your home server.

6. Accessing Coolify Remotely & On Mobile

Since Coolify is a web application, you can access your dashboard from any device - phone, tablet, or laptop - as long as you can reach your server's IP.

  • Same local network: Navigate directly to http://your-server-ip:8000 in any browser. No configuration needed.
  • Outside your network via SSH tunnel: Run the tunnel command below from your remote machine. While this session stays open, open http://localhost:8000 locally and it routes securely through the encrypted SSH channel:
ssh -L 8000:localhost:8000 administrator_user@your-server-ip
  • On mobile (same Wi-Fi): Open your mobile browser and navigate to http://your-server-ip:8000 while on the same network as your server.
  • On mobile (remote access): Use the Termius app to set up an SSH tunnel from your phone, or configure your router's port forwarding to expose port 8000 externally (not recommended without a domain and SSL in front of it).
Troubleshooting: Coolify dashboard unreachable after server reboot
Workaround: Coolify runs as Docker containers with restart-always policies, so the Docker daemon auto-starts them on boot. If they do not come up, bring the stack up manually from its install directory:
cd /data/coolify/source && docker compose up -d

Check the current service state to confirm it is active and running:

docker ps --filter "name=coolify" --format "table {{.Names}}\t{{.Status}}"

7. Summary Checklist

  • Coolify Installed: Single curl command bootstraps the full platform on Ubuntu Server.
  • Dashboard Access: Available at http://your-server-ip:8000 in any browser on the local network.
  • App Deployments: Connect GitHub repos, set build commands, and deploy with automatic SSL on custom domains.
  • Databases: One-click PostgreSQL, MySQL, Redis, MongoDB with isolated volumes and auto-generated credentials.
  • Remote Access: Access locally on the network or securely via SSH tunnel from anywhere. Auto-starts on reboot via systemd.

Related Reads

“If it hurts, do it more frequently.”

— Martin Fowler