Independent testing Updated August 2026 387 self-hosting guides 5 VPS providers tested

guide

Kamal VPS Requirements: RAM, CPU & Storage Guide

Kamal runs on your machine, not the server. Size the VPS it deploys to: RAM for your app plus a deploy overlap, and disk for three days of rollback images.

Kamal is a deployment tool that runs on your own machine or CI runner, not on the server. So โ€œKamal VPS requirementsโ€ is really a question about the machine Kamal deploys to: it has to run your application containers, kamal-proxy, any accessories you declared, and a few days of old images kept for rollback.

Kamalโ€™s own resource cost on the host is zero. Size everything else.

What Consumes Resources on the Host

After kamal setup, the server runs three things:

Only the middle two matter for sizing. kamal-proxy is a single static binary and its footprint disappears next to any real application.

RAM

The figure that catches people out is not steady-state memory, it is the deploy overlap. Kamal boots the new container while the old one is still serving traffic, and only stops the old one after the new one passes its health check. Peak memory is therefore your normal usage plus roughly one more copy of the app container.

If you run Postgres as a Kamal accessory rather than as a managed service, size for it explicitly โ€” it, not Kamal, will be the largest consumer on the box.

CPU

Two vCPUs is the sensible floor, for a reason that has nothing to do with steady-state load: during a deploy the host is simultaneously pulling an image, starting a container, running health checks, and serving traffic from the old container. On a single vCPU that contention stretches the deploy window.

Storage

This is where Kamalโ€™s behaviour actually changes the numbers. Kamal keeps old containers and images on the server so kamal rollback can restart a previous version without pulling from the registry, and prunes them after three days by default.

So the disk has to hold:

A 1 GB image deployed a few times a day is fine on 40 GB NVMe. A 3 GB image on a 25 GB disk fills the disk within a week. The failure mode is worth knowing: a full disk breaks the next deploy, not the one that filled it, so the cause and the symptom are days apart.

If you deploy often, kamal prune all clears the backlog on demand rather than waiting for the three-day window.

VPS Provider Options and Pricing

ProviderPrice per MonthNotable FeaturesAffiliate Link
Contaboโ‚ฌ5.99400 GB disk, so image history is never the constraintContabo
Hetzner Cloudโ‚ฌ5.492 vCPU / 4 GB / 40 GB NVMe, snapshots before risky deploysHetzner Cloud
DigitalOcean$6 USDClearest documentation for the host-level setup Kamal skipsDigitalOcean
Vultr$5 USDRegion choice, useful when the app should sit near its usersVultr
Linode (Akamai Cloud)$5 USDPredictable pricing and straightforward networkingLinode

For a comprehensive look at options, check the full VPS comparison.

DigitalOcean is the easiest entry point, because Kamal deliberately does not manage the host beyond Docker โ€” firewall rules, swap, and unattended upgrades are still yours, and DigitalOceanโ€™s documentation covers all three. Hetzner gives you more RAM and disk per euro if you are comfortable doing that setup yourself.

Practical Deployment Tips

Conclusion

For most single-app deployments, 2 vCPUs, 4 GB RAM, and 40 GB of SSD or NVMe leaves room for the app, its database, the deploy overlap, and three days of rollback images. Push the disk higher before you push the RAM higher: memory pressure announces itself, while image accumulation does not. For more options, explore our full VPS comparison to find the best match for your deployment.

Frequently asked questions

How much RAM does a VPS need to be a Kamal deploy target?

Enough for your app, its accessories, and one extra copy of the app container. During a deploy the old and new containers run at the same time, so peak memory is roughly your steady-state usage plus one app container. On a 4 GB host with a 1 GB app that is comfortable; add swap if it is tight.

Does Kamal itself consume CPU or memory on the server?

No. Kamal is a gem you run from your own machine or CI, and it exits when the deploy finishes. The only permanent addition to the host is kamal-proxy, a small Go HTTP proxy whose usage is negligible next to any real application.

Why does a Kamal host run out of disk space over time?

Kamal retains old containers and images so rollbacks do not need a registry pull, pruning them after three days by default. Frequent deploys of a large image accumulate quickly, and the disk usually fills partway through a later deploy rather than during the one that caused it.