Compare / self-hosted PaaS

Coolify, Dokploy, or a managed platform

A self-hosted PaaS puts a Heroku-shaped interface on a server you rent: Coolify and Dokploy both give you git-driven deploys, TLS, and one-click databases for the price of the VPS. The honest question is not which is better — it is whether owning the host is worth what it costs you, and that answer changes as the project grows.

Why developers look for a self-hosted PaaS alternative

Coolify is the mature one

Apache 2.0, around 40,000 GitHub stars, over 280 one-click services, and a v4.0 release in May 2026 that added an MCP server — the first self-hosted PaaS an agent can drive natively.

Dokploy is the lean one

Source-available, around 24,000 stars since launching in April 2024, built on Docker Swarm with first-class Compose support. Faster to learn, smaller surface, fewer moving parts.

The server is cheap and the ownership is not

A $12 VPS runs several small apps. You also own kernel updates, firewall rules, certificate renewals, disk space, database backups, and a restore you have actually tested.

One box is one box

Scaling past it means a second server, a load balancer, shared storage, and session state that is not local — which is the work a platform was doing for you.

Lizard vs self-hosted PaaS

Every figure read off self-hosted PaaS’s published pricing and our own. Last verified: August 2026.

Compared byLizardself-hosted PaaS
Infrastructure cost$0.0278 per vCPU-hour, $0.0139 per GB-hour, on measured useYour VPS bill — about $12 a month for a small server
Who patches the hostWe doYou do
Database backupsManaged PostgresYours to schedule, store off-box, and test
TLS certificatesIssued on the first deploy, renewed for youHandled by Coolify or Dokploy, until DNS moves
IsolationA pod per service, with a default-deny network policyDocker containers sharing one kernel
Scaling past one machinelizard scale, or another serviceA second server, a load balancer, and shared state
LicenceA hosted serviceCoolify is Apache 2.0; Dokploy is source-available
Who gets pagedWe doYou do

When self-hosting is the better choice

Side projects, homelabs, agencies running many small client apps, and anyone whose bill would otherwise be dominated by a dozen near-idle services. A $12 server running eight apps under Coolify is genuinely cheaper than any per-service platform, you keep full control of the data, and the software is good — Coolify in particular is a well-built project with a real community. If you enjoy running the box, run the box.

Moving from self-hosted PaaS

No Dockerfile required — lizardpack detects the stack and writes one on the build node. If your repo already has a Dockerfile, it is used as it stands.

$npm i -g @lizard-build/cli
$lizard up
$lizard add postgres redis
$lizard domain add app.example.com

Frequently asked questions

Coolify if you want maturity and breadth: Apache 2.0, around 40,000 stars, over 280 one-click services, and an MCP server since v4.0 in May 2026. Dokploy if you want something leaner and quicker to learn, built on Docker Swarm with first-class Docker Compose support. Coolify has more features; Dokploy has fewer things to understand.

On the invoice, almost always — a $12 VPS running several apps beats per-service pricing. Once you count the hours spent on kernel updates, certificate renewals, backup testing, and the evening the disk fills, the gap narrows and often reverses. The break-even is your hourly rate, not the server price.

It does not own the machine underneath. Kernel patching, disk capacity, off-box backups, monitoring, and failover to a second host stay yours. It also cannot schedule across servers the way a real orchestrator does — scaling past one box means building the surrounding infrastructure yourself.

Yes, and the Dockerfile comes with you. Run lizard up in the repo — an existing Dockerfile is used as it stands — then lizard add postgres redis for the managed pieces, pg_dump and pg_restore for the data, lizard secrets set for the environment, and lizard domain add for the domain and certificate.

Every service runs in its own pod with a default-deny network policy, so no other tenant can reach it and it cannot open connections into the platform itself. On a box you host, you configure that yourself, and one escaped container reaches everything else on the machine — including your other clients, if you host several. For untrusted or generated code, a Lizard sandbox goes further: its own Firecracker micro-VM, with its own kernel.

Build with AI. Ship with Lizard.

You don't need a platform team to go live. Your whole cloud, one CLI command away.

Try for free

No credit card required

We use cookies for essential site functionality and analytics. See our Cookie Policy.