# How to Set Up Coolify on a VPS or Dedicated Server (2026 Guide)

> Install Coolify on a VPS or dedicated server step by step: requirements, firewall ports, the installer, securing the admin account, DNS and your first deploy.

Source: https://bytevancer.com/blog/how-to-set-up-coolify · Published 2026-09-25 · Updated 2026-10-01 · ByteVancer · Guide

**From a fresh Linux server to your first HTTPS deployment: the requirements, ports, one-line installer, the admin-account step you must not skip, and DNS that actually resolves.**

Coolify turns a Linux server into your own deployment platform: connect a Git repository, pick a build pack, and it builds, runs and serves your app over HTTPS. This guide takes a fresh VPS or dedicated server to a first live deployment, following Coolify's official documentation. If you are still deciding between platforms, start with our [Coolify vs Openship comparison](https://bytevancer.com/blog/coolify-vs-openship).

## What you need

- **CPU** — Minimum: 2 cores; Notes: It can run on 1 core, but that is not recommended
- **RAM** — Minimum: 2 GB; Notes: Bitdoze reports Coolify idling at ~1.5–2 GB, so leave headroom for builds
- **Disk** — Minimum: 10 GB; Notes: Leave room for images and build output
- **Architecture** — Minimum: amd64 or arm64; Notes: Includes 64-bit Raspberry Pi
- **Operating system** — Minimum: Linux only; Notes: Debian/Ubuntu, RHEL family (CentOS, Fedora, RHEL, AlmaLinux, Rocky), SUSE, Arch, Alpine, Raspberry Pi OS 64-bit
- **Access** — Minimum: Root over SSH; Notes: The installer must run as root

Coolify runs on a VPS, a dedicated server, a VM, a 64-bit Raspberry Pi or even an old laptop — anything running Linux that you can reach over SSH. The docs recommend starting from a fresh server. On Ubuntu, use an LTS release (20.04, 22.04 or 24.04); non-LTS releases need the manual installation path.

**📊 Coolify: bare floor vs official minimum (RAM and disk, GB)**
- **RAM** — Runs, not recommended 0.5 GB · Official minimum 2 GB
- **Disk** — Runs, not recommended 4 GB · Official minimum 10 GB

*The docs say Coolify can run on 1 CPU core, 512 MB RAM and 4 GB disk, but recommend 2 cores, 2 GB and 10 GB. Bitdoze reports Coolify idling at about 1.5–2 GB of RAM, which is why the 512 MB floor leaves nothing for your apps or builds.*
*Source: Coolify docs (self-hosted installation), Bitdoze*

## Setup at a glance

**Coolify setup, start to finish**
Provision a server → SSH in as root → Run the installer → Open :8000 → Create the admin → Back up .env → Set domain & DNS → Deploy your first app

1. **Provision a server** — Fresh Linux server, 2 cores / 2 GB RAM / 10 GB disk or more.
2. **SSH in as root** — Open the firewall ports listed below first.
3. **Run the installer** — One curl command installs Coolify.
4. **Open :8000** — Browse to http://<server-ip>:8000.
5. **Create the admin** — Immediately — the first account to register gets root-level control.
6. **Back up .env** — Copy /data/coolify/source/.env somewhere safe.
7. **Set domain & DNS** — A and wildcard records, then serve the dashboard on a domain.
8. **Deploy your first app** — Project → resource → build pack → deploy.

## Step 1: Open the firewall ports

- **22/tcp** — Purpose: SSH; Keep open?: Always — never remove this rule
- **80/tcp** — Purpose: HTTP and certificate generation; Keep open?: Yes
- **443/tcp** — Purpose: HTTPS; Keep open?: Yes
- **8000/tcp** — Purpose: Dashboard via IP; Keep open?: Only until the dashboard is on a domain
- **6001/tcp** — Purpose: Real-time communication; Keep open?: Only until the dashboard is on a domain
- **6002/tcp** — Purpose: Web terminal; Keep open?: Only until the dashboard is on a domain

> **Use your provider's firewall** — Coolify's docs recommend configuring these rules in your hosting provider's firewall rather than on the server itself where possible. Whatever you use, never remove the SSH rule — it is how you get back in.

## Step 2: Run the installer

SSH into the server as root and run the official install script:

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

> **Docker installed via snap? Remove it first** — If Docker was installed through snap, remove that installation before running the Coolify installer.

## Step 3: Create the admin account immediately

When the installer finishes, open `http://<server-ip>:8000` and register straight away. The first person to register becomes the administrator — with root-level control of your server. Leaving the registration page open on a public IP, even briefly, is a real risk.

### Safer alternative: pre-create the root user

To never expose registration at all, pass the root user's credentials to the installer as environment variables. Replace the example values with your own, and use a strong password:

```bash
env ROOT_USERNAME=RootUser ROOT_USER_EMAIL=example@example.com ROOT_USER_PASSWORD='StrongPassword123!' bash -c 'curl -fsSL https://cdn.coollabs.io/coolify/install.sh | bash'
```

## Step 4: Back up the .env file

Coolify stores its configuration in `/data/coolify/source/.env`. It contains the APP_KEY that encrypts values in Coolify's database — lose it and those values can't be decrypted. Copy it off the server to a safe place, such as your password manager or an encrypted backup, and keep it out of version control.

## Step 5: Point DNS at the server

- **A** — Name: app (e.g. app.example.com); Value: Server IP; Why: A specific domain for one application
- **A** — Name: *; Value: Server IP; Why: Wildcard for Coolify-generated domains (does not cover the apex domain)

Point each domain at the server that runs the resource, not at the server that hosts the Coolify dashboard — with multiple servers these are often different machines. Before deploying, confirm the record resolves:

```bash
dig +short app.example.com A
```

The command should print your server's IP. Coolify's own DNS validation uses 1.1.1.1 as its default resolver, so a record that has not propagated there yet will fail validation even if it resolves elsewhere. Once DNS works, configure Coolify to serve the dashboard itself on a domain through its proxy.

## Step 6: Deploy your first app

In the dashboard, create a Project and add a resource to it — an application, a database or a one-click service. For an application, connect the repository and choose how it is built:

- **Nixpacks** — auto-detects the stack and builds it; the usual starting point.
- **Railpack** — currently in beta.
- **Static** — for static sites.
- **Dockerfile** — when your repository already has one.
- **Docker Compose** — for multi-container stacks.
- **Docker image** — deploy a prebuilt image instead of building.

By default the build runs on the deployment server itself. The coolify-proxy container on that server — Traefik by default, Caddy as an alternative — routes your domain to the app and obtains a Let's Encrypt certificate, so the first deploy ends on HTTPS.

## Step 7: Close the bootstrap ports

Once the dashboard is served on a domain through the proxy, you no longer need ports 8000, 6001 and 6002 open to the internet. Remove those rules and keep 22, 80 and 443. This shrinks the attack surface to the proxy and SSH.

> **Check your GitHub webhook before you close port 8000** — If Coolify's GitHub App still sends its webhook to the server's IP on port 8000, auto-deploy stops silently once that port is closed. It happened to us; see [how we run bytevancer.com on Coolify](https://bytevancer.com/blog/how-to-set-up-coolify#how-we-run-bytevancer) for the fix.

## Scaling out: more servers and a build server

Coolify can manage more than one machine: add remote servers over SSH and validate them from the dashboard. You can also add a dedicated build server — it cannot run resources, but it builds images and pushes them to a registry so builds stop competing with production for memory. On a small VPS that is the main lever you have; our [comparison with Openship](https://bytevancer.com/blog/coolify-vs-openship) covers how Openship handles the same problem by building off-box.

## How we run bytevancer.com on Coolify

This guide is not theory: bytevancer.com itself runs on Coolify. The site is built from a **Dockerfile** and deployed by a self-hosted Coolify instance (v4.3.x). The source lives in a private GitHub repository connected through Coolify's GitHub App, so every push to `main` deploys automatically, and a deploy takes about three minutes. Cloudflare sits in front of the site.

**Our deploy pipeline**
Push to main → Webhook → Build → Live → Cloudflare

1. **Push to main** — A commit lands on main in the private GitHub repo.
2. **Webhook** — Coolify's GitHub App notifies the Coolify instance.
3. **Build** — Coolify builds the image from the repo's Dockerfile.
4. **Live** — The new version is serving about 3 minutes after the push.
5. **Cloudflare** — Traffic reaches the site through Cloudflare.

### Lesson 1: closing port 8000 silently stopped auto-deploy (Sep 2026)

Coolify's docs say you can close ports 8000, 6001 and 6002 once the dashboard runs on a domain through the proxy, so we did (Step 7 above). Auto-deploy then stopped without any error in Coolify: the GitHub App's webhook URL still pointed at http://<server-ip>:8000, the port we had just closed.

**What broke, and how we fixed it**

**💥 What broke** — Pushes to main no longer started a deploy. GitHub's Recent Deliveries for the app showed "failed to connect to host". Cause: the webhook still targeted http://<server-ip>:8000.

**🔧 How we fixed it** — Updated the GitHub App's Homepage, Callback, Setup and Webhook URLs to the Coolify domain. Webhook URL: `https://coolify.<your-domain>/webhooks/source/github/events` Pushed a commit to test: the deploy started within seconds.

> **Checklist after hardening the firewall** — In GitHub, open your Coolify GitHub App (personal account: Settings → Developer settings → GitHub Apps; organisation: the org's settings) → Advanced → Recent Deliveries. Failed deliveries mean the webhook still points at an address you closed.

### Lesson 2: Search Console said robots.txt was unreachable (Sep 2026)

Google Search Console showed our sitemap as "Couldn't fetch". The URL Inspection live test reported "Robots.txt unreachable", and Crawl stats → Host status showed a high robots.txt fetch fail rate, even though robots.txt returned 200 from 15 locations worldwide.

**What broke, and how we fixed it**

**💥 What broke** — Sitemap: "Couldn't fetch". Live test: "Robots.txt unreachable". High robots.txt fetch fail rate in Crawl stats → Host status. Two suspects: robots.txt was rendered per request, and Cloudflare's "Bot Preference Sync" prepends Cloudflare's bot settings to robots.txt at the edge.

**🔧 How we fixed it** — Made robots.txt a static, prebuilt file. Turned off Cloudflare's "Bot Preference Sync". Re-ran the live test: "URL is available to Google".

*Takeaway: keep robots.txt static, and test it from Search Console's live test, not just curl.*

## Troubleshooting

> **Docker installed via snap, or a non-standard setup** — Coolify's docs say to remove a snap-installed Docker before running the installer. For setups the automatic installer doesn't cover, use the manual installation instead.

> **Ubuntu non-LTS release** — The automatic installer targets Ubuntu LTS (20.04, 22.04, 24.04). On a non-LTS release, use Coolify's manual installation instead.

> **Domain won't validate or no certificate is issued** — Run dig +short against your domain and confirm it returns the IP of the server running the resource. Remember the wildcard record does not cover the apex domain, and validation checks against 1.1.1.1. Port 80 must be open for certificate generation.

Want to compare with the newer alternative? See our [Openship setup guide](https://bytevancer.com/blog/how-to-set-up-openship) and the [Coolify vs Openship breakdown](https://bytevancer.com/blog/coolify-vs-openship).

## Frequently asked questions

**What are the minimum server requirements for Coolify?**
Coolify's documentation lists 2 CPU cores, 2 GB RAM and 10 GB of disk on amd64 or arm64 Linux. It can run on 1 core, 512 MB RAM and 4 GB disk, but that is not recommended. Bitdoze reports Coolify idling at roughly 1.5–2 GB of RAM.

**Which ports does Coolify need open?**
22 for SSH, 80 for HTTP and certificate generation, 443 for HTTPS, 8000 for the dashboard via IP, 6001 for real-time communication and 6002 for the web terminal. Once the dashboard is served on a domain through the proxy, you can close 8000, 6001 and 6002.

**Why must I create the Coolify admin account immediately?**
The first account to register on a new Coolify instance becomes the admin, with root-level control of the server. Register right after installation, or pre-create the root user with the ROOT_USERNAME, ROOT_USER_EMAIL and ROOT_USER_PASSWORD variables so registration is never exposed.

**Can I install Coolify on a dedicated server instead of a VPS?**
Yes. Coolify runs on a VPS, a dedicated server, a VM, a 64-bit Raspberry Pi or any Linux machine with SSH access. A fresh server is recommended. A dedicated server gives builds and apps more headroom to share.

**How do I set up DNS for apps deployed with Coolify?**
Create an A record for each app domain pointing at the server that runs the resource, and optionally a wildcard (*) A record for Coolify-generated domains; the wildcard does not cover the apex. Verify with dig +short app.example.com A.

## Keep reading

- [Coolify vs Openship: Self-Hosted PaaS on a VPS or Dedicated Server (2026)](https://bytevancer.com/blog/coolify-vs-openship) — Coolify vs Openship on a VPS or dedicated server: maturity, build packs, where builds run, proxies, resources, security, and which one to pick.
- [How to Set Up Openship on a VPS or Dedicated Server (2026 Guide)](https://bytevancer.com/blog/how-to-set-up-openship) — Install Openship on a VPS step by step: CLI or Docker Compose, server requirements, guided setup, your first deploy from dashboard or CLI, and hardening.
- [All ByteVancer engineering articles](https://bytevancer.com/blog)

## Rather have Coolify set up and hardened for you?

We install, secure and maintain self-hosted deployment platforms — firewalls, DNS, backups and CI/CD pipelines that just work. See our [Coolify setup and DevOps services](https://bytevancer.com/services/devops-services) or [talk to the team](https://bytevancer.com/contact).

## Sources

- [Coolify docs — Self-hosted installation](https://coolify.io/docs/start-with-self-hosted)
- [Coolify docs — Server firewall](https://coolify.io/docs/core/infrastructure/servers/firewall)
- [Coolify docs — DNS configuration](https://coolify.io/docs/core/networking/dns)
- [Coolify docs — Builds overview](https://coolify.io/docs/applications/builds/overview)
- [Coolify docs — Proxy overview](https://coolify.io/docs/core/networking/proxy/overview)
- [Coolify — official site](https://coolify.io/)
- [Bitdoze — Openship: a self-hosted PaaS](https://www.bitdoze.com/openship-self-hosted-paas/)

---

*This is the Markdown copy of https://bytevancer.com/blog/how-to-set-up-coolify — the page itself has the interactive charts and diagrams.*
