Deploy apps with Coolify on your own VPS
Install Coolify on a fresh server, secure its dashboard, give it a domain with HTTPS, and deploy your first app from Git. Ports, backups and updates.
Coolify is an open-source, self-hosted platform that deploys apps, databases and services from Git, with automatic HTTPS, much like Heroku or Vercel on a server you own. You install it with one command on a fresh server with at least 2 CPU cores and 2 GB of memory, then do everything else in its web dashboard.
This guide covers the install, the security steps people skip, and a first deployment.
What you need
- A fresh server running Ubuntu 24.04 or Debian 12 or 13. Coolify takes over Docker and ports 80 and 443, so don't install it next to an existing nginx or Docker setup.
- At least 2 CPU cores and 2 GB of memory for Coolify itself, per its documentation. Your apps need memory on top of that, so 4 GB is a more comfortable start.
- Disk for Docker images and builds. They add up quickly; 40 GB fills sooner than you'd think with a few apps.
- A domain you can add DNS records to.
Lock down port 8000 before you install
Right after the install, Coolify's dashboard is on http://<your server's IP>:8000, and whoever opens it first becomes the admin, with root on your server. Scanners find new servers fast.
So either be ready to create the account the moment the installer finishes, or restrict the port to your own address first. Docker publishes ports past ufw, so ufw can't do this; a firewall in front of the server can. On VPSNine, the panel firewall does it with these rules and the default set to deny, with 203.0.113.7 replaced by your own IP:
allow tcp 22
allow tcp 80
allow tcp 443
allow tcp 8000 from 203.0.113.7
allow tcp 6001-6002 from 203.0.113.7Ports 6001 and 6002 carry the dashboard's live updates and web terminal while you're using the IP address.
Install
Log in as root and run Coolify's installer:
curl -fsSL https://cdn.coollabs.io/coolify/install.sh | bashIt installs Docker if needed, pulls Coolify's containers and starts them. It takes a few minutes. When it finishes, it prints the dashboard address.
Open http://203.0.113.10:8000 (your server's address) and create the admin account straight away, with a strong password. Then turn on two-factor login in your profile.
Give the dashboard a domain
Working over plain HTTP on an IP address is fine for five minutes, not for good. Point a domain at the server: at your DNS provider, add an A record for coolify.example.com with the server's IPv4 address.
For your apps, a wildcard record saves adding one per app: an A record for *.apps.example.com, pointing at the same address.
In Coolify, open Settings, set the instance's domain to https://coolify.example.com and save. Coolify's proxy (Traefik) requests a Let's Encrypt certificate. Reload the dashboard on its new address.
Once that works, close 8000, 6001 and 6002 to the world. Everything now goes over 80 and 443. In the panel firewall, delete those lines.
Deploy your first app
- In Coolify, create a Project. It's just a folder for related apps.
- Add a Resource and choose Public Repository for an open repository, or connect GitHub or a deploy key for a private one.
- Paste the repository URL. Pick a build pack:
- Nixpacks works out how to build common Node.js, Python, Go, PHP and Ruby apps on its own.
- Dockerfile uses the one in your repository.
- Docker Compose runs a
compose.yamlfrom the repository.
- Set the domain, like
https://myapp.apps.example.com, and the port your app listens on inside its container. - Add environment variables if the app needs them, then Deploy.
Coolify builds the image, starts the container, and gets a certificate for the domain. The build log streams in the dashboard. Turn on automatic deployments and every push to the branch redeploys.
For a database, add a resource and choose PostgreSQL, MySQL, Redis or another from the list. Coolify gives you a connection string to paste into your app's environment. Don't make databases public unless you really mean to.
One-click services
Coolify also has a catalogue of ready-made services, from n8n and Uptime Kuma to Plausible and Gitea. Add a resource, choose Service, pick one and give it a domain. It's a quick way to try things without writing a Compose file.
Backups
Coolify can back up its databases on a schedule to any S3-compatible storage. Set up an S3 destination under Storages, then turn on scheduled backups for each database and for Coolify's own database in Settings.
That doesn't cover files your apps keep in volumes. For those, copy the volumes off the server on a schedule; Backups you should run has the approach. A server snapshot before upgrades is cheap insurance too.
Updates
Coolify updates itself automatically by default, which you can change in Settings. Its update notes are worth reading before a big version. Keep the server itself patched as well: automatic security updates handle the operating system, and Coolify handles its own containers.
When it goes wrong
- The dashboard won't load after the install: check the containers with
docker ps. All thecoolifyones should be up.docker logs coolifysays why if one isn't. - An app's certificate never arrives: DNS for that domain doesn't point at the server yet, or port 80 is blocked. Let's Encrypt needs both.
- Builds fail with out-of-memory errors or the server freezes during a build: building images is memory-hungry. Add swap, build fewer things at once, or move up a plan.
- The disk fills up: old images and build caches. Coolify can clean them up on a schedule in the server's settings;
docker system dfshows what's using space.
Doing it on VPSNine
The Coolify one-click app runs the official installer on the first boot. Set the panel firewall rules above as soon as the server shows up in the panel. Give the installer about five minutes after the server is ready, then open http://<your IPv4>:8000 and create your admin account.
Coolify needs at least the Standard plan, with 2 vCPUs and 4 GB of memory, and is available on Ubuntu and Debian. If you'll build lots of apps on the server itself, Extreme gives builds more room. The plans page has the specs.