Few Servers

Home › Self-hosting

Deploy Coolify on a $6 VPS in 15 minutes, timed step by step

Hands-on review. We paid for the plans we tested. Links marked as affiliate links earn us a commission at no cost to you; it never changes what we recommend. Details.

Coolify is the self-hosted alternative to Heroku, Vercel and Netlify: one server, a web UI, push-to-deploy for anything that runs in Docker. The project's own docs say you need 2 CPUs and 2 GB of RAM. We wanted to know whether the $6 DigitalOcean droplet (1 vCPU, 1 GB RAM, 25 GB SSD) is enough for a small team's side projects, so we installed it, timed every step and left it running.

Short version: it works, with one trick (a 2 GB swap file). The install script took 172 seconds, the first app was answering HTTP requests 210 seconds after clicking Deploy, and the measured steps from an empty account to a running app add up to just under 10 minutes (our wall clock said 23, because of a wrong base directory described below and a coffee). Memory after boot sat at 618 MB used with four containers healthy; the build peaked at 720 MB plus 669 MB of swap, which is why the swap file is not optional.

What you need

Step 1: create the droplet (1 minute)

In the DigitalOcean console choose Create → Droplets. Pick the region closest to you, then Ubuntu 24.04 (LTS) as the image.

DigitalOcean create droplet: region and Ubuntu 24.04 image selected

Under Choose a Droplet Plan stay on Basic → Regular and pick the $6.00/mo plan: 1 vCPU, 1 GB RAM, 25 GB SSD, 1000 GB transfer. Skip the $4 plan: 512 MB is not enough for Coolify's four containers even with swap.

The $6 Basic plan: 1 vCPU, 1 GB RAM, 25 GB SSD

Under Authentication choose SSH Keys and add your public key. Do not use a root password; Coolify itself will later use SSH keys to talk to the server, and password logins are the first thing bots try.

SSH key selected for authentication

Tick Improved Metrics and monitoring (free), give the droplet a name, and click Create Droplet. Ours showed a public IP after about 60 seconds.

Droplet active with public IPv4 and the $6/month cost shown

Step 2: add swap (30 seconds)

This is the part that makes the 1 GB plan work. Log in and create a 2 GB swap file:

ssh root@YOUR_DROPLET_IP
fallocate -l 2G /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
echo '/swapfile none swap sw 0 0' >> /etc/fstab
free -m

Without swap the install still completes, but the first docker build of a real app pushes demand past 1 GB and the kernel kills a container. With swap the build gets slow instead of dying; we measured the peak below (669 MB of swap in use during the build).

Step 3: run the Coolify installer (172 seconds)

One command, from the official docs:

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

We timed it with date before and after. On the $6 droplet in Frankfurt:

StepWhat it doesTime
1-2OS check, apt packages (curl, wget, git, jq, openssl), SSH config6 s
3-4Installs Docker 29 and configures the network pool57 s
5-8Downloads compose files, writes .env, creates the localhost SSH keyunder 1 s
9Pulls and starts Coolify, Postgres, Redis, the realtime server and the Traefik proxy109 s
Total172 s

When it finishes it prints Your instance is ready to use! and the URL http://YOUR_DROPLET_IP:8000. Four containers are running:

coolify           Up (healthy)
coolify-db        Up (healthy)
coolify-redis     Up (healthy)
coolify-realtime  Up (healthy)

Memory right after the install: 618 MB used of 961 MB, swap 32 MB. Disk: 7.1 GB used of 24 GB (Docker images are the bulk of it).

Step 4: create the root account and finish onboarding

Open http://YOUR_DROPLET_IP:8000 in a browser. The first screen creates the root user; do this straight away, because until you do, anyone who finds the port can.

Coolify first-run screen: create the root account

After the account, a three-step onboarding wizard asks where to deploy. Pick This machine (the droplet itself); Coolify connects to it over its own localhost SSH key, checks that Docker is running and creates "My first project" with a production environment. The wizard offers to provision new servers on Hetzner, Vultr or DigitalOcean from inside Coolify, which is how you add a second box later.

Coolify onboarding: choose This machine as the first server

The whole wizard is four clicks and took us under a minute; it ends on a "Setup complete" screen with the server, the project and the Docker engine all green, and a Deploy Your First Resource button.

Step 5: deploy your first app

The resource picker lists a few hundred one-click services (Sonarr, Plausible, n8n, Uptime Kuma and so on) plus the generic sources: public Git repository, private repository, GitHub app, Dockerfile, Docker Compose, Docker image. We chose Public Git Repository and pointed it at Coolify's own examples repo, https://github.com/coollabsio/coolify-examples, with the base directory /javascript/runtimes/nodejs (a tiny Fastify server on port 3000). Coolify inspects the repo, proposes Railpack as the build pack and shows the branch, port and base directory for review.

Public repository build configuration: Railpack, port 3000, base directory

Click Continue, then Actions → Deploy. The deployment log streams live:

Deployment log: BuildKit detected, helper image pulled, Railpack build plan generated

We timed it from the Deploy click to the first HTTP 200 from the public URL: 210 seconds. That breaks down into about 100 s of pulling the Railpack builder and Node base images (first deploy only; later deploys reuse them), 60 s of npm install on a 1 vCPU, and 20 s to start the container and for Traefik to pick up the route. The second deploy of the same app took 1 min 52 s.

Coolify gives every app a working URL immediately, on the free sslip.io wildcard DNS: http://<app-id>.64.226.72.55.sslip.io. Ours answered {"hello":"from nodejs #2"}.

Deployment history: two successful deployments

One honest mistake worth recording: on our first attempt we typed the base directory as /nodejs (the folder had moved in the repo). Railpack happily built an image from an empty directory, the deployment reported Success, and the container then restarted every few seconds because it had nothing to run. Check the runtime logs after your first deploy, not just the green badge.

What the build did to a 1 GB server

This is where the swap file earns its keep. Our sampler logged memory every five seconds during the build:

MomentRAM usedSwap usedLoad (1 vCPU)
Idle, Coolify only618 MB32 MB0.5
npm install running765 MB498 MB4.2
Image export, peak720 MB669 MB7.0
App running, 5 min later648 MB478 MB0.4

Without the 2 GB swap file, the peak would have been about 1.4 GB of demand on a 961 MB box: the kernel's OOM killer would have taken out either the build or Coolify's own database. With swap, the build was slow (load 7 on one core) but finished. The Fastify app itself uses 31 MB.

Is 1 GB enough? The verdict so far

Resident memory per container after the deploy, from docker stats:

ContainerMemory
coolify (the app)150 MB
coolify-proxy (Traefik)38 MB
coolify-realtime25 MB
coolify-db (Postgres)23 MB
coolify-sentinel9 MB
coolify-redis7 MB
your app (Fastify)31 MB
Total283 MB

Coolify's own footprint is about 250 MB; the rest of the "used" figure is the kernel, Docker and page cache. Disk after one build: 11 GB of 24 GB (base images and the build cache are the bulk; Coolify's cleanup job reclaims the cache weekly).

So: for one or two small apps, a static site, or a private tool, the $6 droplet with swap is fine and we are leaving ours running. We will update this section with the 7-day numbers (memory trend, swap, any restarts) once we have them.

What the $6 plan cannot do

Cost comparison

OptionMonthlyNotes
DigitalOcean $6 droplet + Coolify$6.00Unlimited apps within the box, your own domain, free SSL via Traefik
DigitalOcean $12 droplet + Coolify$12.00The comfortable size for a small team
Heroku Eco dyno$5 per app, sleepsOne app, sleeps after 30 min idle
Render starter$7 per serviceOne service
Railway hobby$5 + usageUsage-based

For a team running three or four small services, a single Coolify box replaces $20-40 of PaaS fees. The trade: you own the updates and backups.

FAQ

Does Coolify work with 1 GB of RAM?

Yes, with a swap file. Coolify's own containers use about 250 MB; the problem is the build step, which peaked at 720 MB of RAM plus 669 MB of swap in our test. Without swap the kernel kills a container during the first real build. With a 2 GB swap file the build is slow but completes.

How long does the Coolify install take?

172 seconds on a $6 DigitalOcean droplet in Frankfurt, measured from running the official install script to the "Your instance is ready" message. Most of that is installing Docker (57 s) and pulling the Coolify images (109 s).

How much does it cost to run Coolify on DigitalOcean?

$6.00 a month for the droplet ($0.009 an hour), plus $1.20 a month if you turn on weekly backups. Coolify itself is free and open source. There is no per-app charge, so the cost does not change when you add a second or third small app.

Should I use the $4 droplet instead?

No. The $4 plan has 512 MB of RAM and 10 GB of disk; Coolify's images alone used 7 GB in our install and the four core containers need more than 512 MB before any app runs.

Which plan for a small team running several apps?

The $12 droplet (2 GB RAM, 50 GB SSD) is the realistic minimum once you run three or more services or any database next to your apps. It is still far cheaper than one dyno or service on a hosted PaaS.

Next steps