Day 256 of the year: Programmers' Day. 10% off every month for as long as you keep your server. code DAY256. Claim 10% Programmers' Day: 10%: DAY256 Claim 10%
Skip to content
Self-hosted PaaS

Coolify or Dokploy on a VPS you actually control.

First month $1, then the normal monthly price. One per customer.

A KVM VPS on AMD EPYC with NVMe RAID10 and full root, in Amsterdam or New York. Install Coolify or Dokploy in minutes, connect your Git repo and deploy the way you did on Vercel, Netlify, Heroku or Railway. One flat price, unlimited traffic.

Provisioning
30-60 safter payment
Traffic
Unlimitedno bandwidth bill
Storage
NVMe RAID10on every node
4K random read
122,959 IOPSfio, 2 vCPU dedicated
Plan
S-4 to start, S-8 when the box also builds
2 vCPU, 4 GB and 60 GB NVMe carries two or three small apps plus Postgres. Move to 3 vCPU, 8 GB and 120 GB when image builds run on the same server.
Region
Amsterdam or New York
Same price in both. Amsterdam sits 9.0 ms from London and 8.5 ms from Frankfurt. New York is 4-7 ms from Philadelphia and 7-12 ms from Washington DC.
OS
Ubuntu 24.04 LTS
Both official installers support it. Debian 13 is the other sensible choice. Pick it at order time, no ISO needed.
Install
One command
Coolify: the official installer from cdn.coollabs.io. Dokploy: the installer from dokploy.com. Both pull Docker for you.
Proxy
Traefik by default
Both tools ship Traefik as the reverse proxy and request Let's Encrypt certificates for each app domain. Coolify can switch to Caddy.
Expect
Dashboard on port 8000 or 3000
Coolify answers on 8000, Dokploy on 3000. Give it a domain with TLS, then close the raw port in the firewall.

Transparent pricing

Plans and prices

Monthly price, no setup fee
Day 256 of the year: Programmers' Day. 10% off every month for as long as you keep your server.DAY256Start a VPS with this code
1:2 to 1:4Shared vCPU on EPYC Milan, capped at one to four shares per node, with the node headroom left unsold.
PlanvCPUMemoryNVMeTrafficMonthly1 year
Standard
S-2Standard1vCPU2 GBMemory30 GBNVMe RAID10UnlimitedTraffic$7.99/moFirst month $1$7.19/mo on 1 yearStart for $1
S-4Standard2vCPU4 GBMemory60 GBNVMe RAID10UnlimitedTraffic$13.99/moFirst month $1$12.59/mo on 1 yearStart for $1
S-8Standard3vCPU8 GBMemory120 GBNVMe RAID10UnlimitedTraffic$24.99/moFirst month $1$22.49/mo on 1 yearStart for $1
S-16Standard4vCPU16 GBMemory240 GBNVMe RAID10UnlimitedTraffic$44.99/moFirst month $1$40.49/mo on 1 yearStart for $1
S-32Standard8vCPU32 GBMemory480 GBNVMe RAID10UnlimitedTraffic$84.99/moFirst month $1$76.49/mo on 1 yearStart for $1
S-64Standard16vCPU64 GBMemory720 GBNVMe RAID10UnlimitedTraffic$159.99/moFirst month $1$143.99/mo on 1 yearStart for $1
Dedicated CPU
D-4Dedicated1vCPU4 GBMemory45 GBNVMe RAID10UnlimitedTraffic$37.00/moFirst month $1$31.45/mo on 1 yearStart for $1
D-8Dedicated4vCPU8 GBMemory90 GBNVMe RAID10UnlimitedTraffic$69.00/moFirst month $1$58.65/mo on 1 yearStart for $1
D-16Dedicated4vCPU16 GBMemory160 GBNVMe RAID10UnlimitedTraffic$118.00/moFirst month $1$100.30/mo on 1 yearStart for $1
D-32Dedicated6vCPU32 GBMemory220 GBNVMe RAID10UnlimitedTraffic$215.00/mo$182.75/mo on 1 yearDeploy D-32
D-64Dedicated10vCPU64 GBMemory400 GBNVMe RAID10UnlimitedTraffic$377.00/mo$320.45/mo on 1 yearDeploy D-64
High Memory
H-64High Memory8vCPU64 GBMemory480 GBNVMe RAID10UnlimitedTraffic$249.00/mo$211.65/mo on 1 yearDeploy H-64
H-128High Memory16vCPU128 GBMemory960 GBNVMe RAID10UnlimitedTraffic$459.00/mo$390.15/mo on 1 yearDeploy H-128
H-192High Memory24vCPU192 GBMemory1.4 TBNVMe RAID10UnlimitedTraffic$669.00/mo$568.65/mo on 1 yearDeploy H-192
Prices in USD. Code DAY256 gives 10% off every month for as long as you keep your server, on monthly and yearly terms.

Why teams move off Vercel, Netlify, Heroku and Railway.

The hosted platforms do the first deploy beautifully. Nobody argues with that part. Later on, the bill turns up, and so do the limits.

One flat price instead of meters

No per-seat fee, no build minutes, no bandwidth tier. An S-4 (2 vCPU, 4 GB, 60 GB NVMe) at €11.99 a month ($13.99) runs a handful of apps and their database, and traffic is unlimited. The renewal price is the same as the first invoice.

The database lives next to the app

Postgres, MySQL, Redis, MongoDB: all four are one-click services in both tools, and they land on the same NVMe RAID10 disk your app already sits on. Which means no separate database bill. And no cross-provider latency tacked onto every query, which is the part people notice first.

Any stack that fits in a container

Next.js, Nuxt, SvelteKit, Django, Laravel, Rails, Go, or a plain static site. The rule is short: if it builds with Nixpacks, a Dockerfile or a compose file, it deploys. Cron jobs and background workers are simply more containers.

Root access when something breaks

You get KVM with your own kernel, a VNC console and a REST API. So a build hangs, or some container has been quietly eating the disk for a week. Fine. You SSH in, read the docker logs, fix it yourself. That is the whole point.

Which plan for this workload.

Coolify and Dokploy are light by themselves. The apps, the databases and above all the builds decide the size.

Setup Plan Why
Dashboard plus one or two static sites or a single small app, images built elsewhere S-2 1 vCPU, 2 GB and 30 GB NVMe. Fine for the control plane and a light app. Builds on this box will run out of memory.
Two or three small apps with Postgres, builds still small S-4 2 vCPU and 4 GB gives the apps and the database room, and 60 GB holds a reasonable image history.
Several apps, image builds on the same server, preview deployments S-8 3 vCPU and 8 GB absorbs a Node or Rust build without starving the running apps. 120 GB for image layers.
Staging plus production for a team, background workers, Redis S-16 4 vCPU, 16 GB and 240 GB. Enough headroom that a bad deploy does not take the other apps down with it.
Predictable build times, CPU-bound apps D-8 Four cores pinned 1:1 on EPYC Genoa. Builds take the same time every run. See our benchmarks page.

Our rule of thumb: Coolify or Dokploy with two or three small apps and Postgres wants an S-4. Once builds run on the same box, go to an S-8 (3 vCPU, 8 GB, 120 GB NVMe) at €21.99 a month ($24.99). The reason is memory, not CPU. A Next.js build can take 2 GB on its own, and on a 2 GB plan that means the kernel kills either the build or a running container.

Disk is the other honest limit. Every deploy leaves an image behind, and the S-2 (1 vCPU, 2 GB, 30 GB NVMe) at €6.99 a month ($7.99) is full after a few dozen builds unless old images are pruned. The 60 GB on the S-4 lasts longer but still needs pruning. Resizing adds RAM and vCPU in place, data and IP stay, usually one short reboot. Extra disk is +100 GB NVMe for €11.00 a month on Standard plans.

Setting it up on BuyVPS.

Step 1: order the VPS with Ubuntu 24.04 and log in

Pick Ubuntu 24.04 at checkout. The VPS is provisioned 30 to 60 seconds after payment. Log in as root over SSH and bring the base system up to date before installing anything.

ssh root@YOUR_IP
apt update && apt upgrade -y
reboot

Step 2: open only the ports you need

SSH, HTTP and HTTPS stay open. The dashboard port stays open only until the dashboard has its own domain.

apt install -y ufw
ufw allow 22/tcp
ufw allow 80/tcp
ufw allow 443/tcp
ufw allow 8000/tcp   # Coolify (use 3000/tcp for Dokploy)
ufw enable

Step 3: run the installer

Both projects publish a one-line installer. Paste it in and it installs Docker on the box, pulls the images and brings up the control plane. One thing though. Run one installer, never both, so decide first.

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

# Dokploy
curl -sSL https://dokploy.com/install.sh | sh

Then open http://YOUR_IP:8000 (Coolify) or http://YOUR_IP:3000 (Dokploy) and create the admin account straight away. Until it exists, anyone who finds the port can claim the instance.

Step 4: point DNS at the server

Two DNS records to start. An A record for the dashboard itself, paas.example.com say, and a wildcard along the lines of *.apps.example.com, both pointing at the VPS IPv4. Want IPv6 too? Add an AAAA record from your /64 next to them. Then set the instance domain in the dashboard and wait. Traefik goes off, asks Let's Encrypt for a certificate, and a moment later the dashboard answers on HTTPS without you touching anything else.

Step 5: connect Git and deploy the first app

Add a project, connect GitHub, GitLab or a plain Git URL, pick the branch and the build pack, and copy the environment variables from the old platform. The first deploy builds on the VPS, so watch free -m during that run to see whether the plan fits.

Step 6: close the dashboard port

Once the dashboard answers on its domain, remove the raw port.

ufw delete allow 8000/tcp   # or 3000/tcp
ufw status

Coolify or Dokploy: which one to install.

Both are open source, both run on Docker, both deploy from Git with Traefik in front. The differences are in scope.

Coolify: the broader toolbox

Coolify manages several servers from one dashboard over SSH, ships a large catalogue of one-click services and supports Nixpacks, Dockerfile and compose builds. It is the closer match if you are replacing Heroku or Railway with many small services.

Dokploy: the smaller surface

Dokploy sits on Docker Swarm underneath. That is where its rolling updates and replicas come from, no extra tooling needed. The UI is smaller, and quicker to learn because of it. We'd pick it for a single server running a handful of apps and compose stacks.

What they share

Git-triggered deploys, automatic TLS, environment variables per app, one-click databases with scheduled backups, a terminal straight into any container. Both have every item on that list, which makes the comparison a bit boring, honestly. And on an S-4 either one leaves most of the RAM to your apps.

Our advice

Coolify if you want the broadest feature set or plan to add a second server later. Dokploy if you like Swarm or want fewer moving parts. Both install in minutes, so trying each on the €1 month is cheap.

Pitfalls we see, and how to avoid them.

Builds on the same box kill a 2 GB plan

This is the ticket we get most often. A framework build asks for more memory than every running app put together, the kernel has to pick a victim, and one of your containers is just gone. Not crashed. Killed. On the S-2, build in CI and push to a registry instead, or size up to an S-8.

Old images quietly fill the disk

Every deploy adds layers. On a 30 GB or 60 GB disk this ends with a failed deploy and a full root filesystem. Check df -h and docker system df weekly and prune with docker image prune -af.

Dashboard port left open to the internet

Port 8000 or 3000 reachable by IP is a login page for the whole world. Set a domain with TLS, then delete the ufw rule. Keep in mind that Docker publishes ports through its own iptables chain, so bind internal services to 127.0.0.1 rather than trusting ufw alone.

No backup of the control plane

Coolify keeps its state in /data/coolify, Dokploy keeps it in /etc/dokploy. Lose that directory and you are recreating every app by hand, which nobody enjoys. So use the built-in database backups to S3-compatible storage. And add our backup add-on, at 20 to 60 percent of the plan price, for a copy of the whole disk.

Pick the region closest to your users.

Server-rendered pages feel the round trip. Amsterdam is AMS-IX adjacent and 9.3 ms from Paris. New York sits in the Hudson Street carrier hotel, 5-8 ms from Boston. The regions are 75-90 ms apart, so keep app and database in one.

Amsterdam, for Europe
New York, for North America
See all locations

Questions about running Coolify or Dokploy on a VPS.

Can I run Coolify on the S-2?

Yes, with a caveat. The dashboard plus one or two light apps is fine, as long as their images get built somewhere else. Build on the box itself and you will hit the 2 GB limit, and after a few dozen deploys the 30 GB disk is full of image layers. So for anything with a database and builds, start on the S-4.

Do I need a domain before I install?

No. Both dashboards come up on the raw IP and port first. But you do need a domain for TLS and for your apps. So once the admin account exists, set an A record and a wildcard, and then close that port.

How do I move a Next.js app from Vercel?

Connect the same repository in Coolify or Dokploy, pick Nixpacks or drop in a Dockerfile, and copy the environment variables across. Then deploy to a temporary subdomain. Test it there. Properly, not just one page load, and only after that do you switch the DNS record. And leave the Vercel project running until the switch is finished, because DNS takes its time to catch up and nobody wants downtime for that.

Which is better, Coolify or Dokploy?

Neither is better in general. Coolify has the broader feature set and multi-server management. Dokploy has a smaller UI and runs on Docker Swarm. Both fit on an S-4 with a few apps, and both are documented at their official sites, for example coolify.io.

How are backups handled?

The PaaS can back up its databases on a schedule to S3-compatible storage. For the whole VPS, our backup add-on costs 20 to 60 percent of the plan price depending on the plan. We recommend both, because a database dump does not restore your app configuration.

Can I resize later without reinstalling?

Yes. RAM and vCPU are changed in place, also via the API. Data and IP address stay, and it usually takes one short reboot. Going from S-4 to S-8 when builds start to hurt is the typical path. The first order is also covered by our 30-day performance guarantee.

Ready to deploy

Deploy a measured VPS

From $6.79/mo on a 2-year term. KVM on AMD EPYC, NVMe RAID10, ECC memory. No setup fee, cancel monthly.

30-day performance guarantee. Not satisfied? Full refund, no admin fee. How it works