A tiny VPS is still enough in 2026
When I looked at a 1-core/512 MB instance in October 2025, the default thought was "barely anything will fit". This post, written in November 2026, is that thought's autopsy.
The machine
This blog lives on a VPS with one vCPU and 512 MB of RAM. The host's OS is
Ubuntu 22.04.5 LTS, and the web server is a single Caddy binary with no compiled
dependencies. The entire static site is 126 KB uncompressed.
The reverse proxy behind the same machine is a single binary too (not relevant here).
When I say "keep things boring", I mean:
- no in-memory caches that leak (Redis, Memcached, or an overzealous reverse cache)
- no daemons that fork and sleep forever (a well-behaved daemon that sleeps is fine)
- no databases with pages in RAM beyond the available pool (SQLite on disk is fine; in-memory caches for the same data are not)
What fits on 512 MB
Linux itself on a minimal install uses 180 MB of resident pages at
boot. With 328 MB left, you can:
- Caddy:
34 MBresident when serving500 MBof static content - SQLite:
10 MBresident (with 20 K pages loaded from disk) - Python (single process, no threads):
80 MBresident - A small Node.js binary with a single-threaded worker:
120 MBresident (if you don't use the event loop's default 4MB of thread stacks)
Practical advice
For 512 MB, one core is enough if:
- Static content is small (
500 MBor less) and served directly by Caddy'sfile_serverhandler withgzipenabled - Any dynamic service runs as a single-threaded worker (a Python script with no
threads, or a Node.js binary with
--max-old-space-size=64) - The reverse proxy's upstreams are all slow or bursty (so the proxy buffers in memory, not in RAM)
If your reverse proxy is busy buffering HTTPS traffic from TLS-terminated clients,
you can still fit it: the proxy's buffers are small (100 KB) if you
don't enable large_buffers. The real cost is malloc churn, which
a 512 MB machine can handle if the work is predictable.
Conclusion
Five hundred and twelve megabytes is plenty for a blog, a static file host, a lightweight reverse proxy, and a tiny database. The bottleneck is not RAM; it's how aggressively you allocate and free. A boring stack — Caddy, SQLite, plain HTML — will run for years on a 1-core machine if you don't chase features that don't exist in your traffic.