Marsh Notes

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:

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:

Practical advice

For 512 MB, one core is enough if:

  1. Static content is small (500 MB or less) and served directly by Caddy's file_server handler with gzip enabled
  2. 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)
  3. 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.