This VPS RAM calculator tells you how much memory your self-hosted stack needs and which of the servers we tested is the cheapest fit. Every app figure in it comes from our Lab. For example, n8n idled at 379.7 MiB on our Hetzner CX23, and Llama 3.2 3B added up to 2,945 MiB while loaded.

RAM decides more than CPU for this kind of stack. When an app runs out of memory it does not slow down, it stops: Llama 3.1 8B refused to load on our 4 GB CAX11 with "insufficient memory". It also costs money: in Hetzner's 2026 prices, going from 4 GB to 8 GB (CX23 to CX33) moves you from 6.64 € to 10.27 € a month. More calculators are in our tools section.

Tested in the Lab Hetzner CX23, CX33, CX43, CAX11, CAX21 · Nov 2026

How it works

The calculator adds up a fixed base and one block per app you tick, then picks the cheapest tested server whose RAM, minus 15% headroom, is at least that total. All figures are in MiB (mebibytes; 1,024 MiB = 1 GiB, which the result shows as GB).

BlockRAM it addsWhere the number comes from
Ubuntu + Docker550 MiB400 MiB for the OS plus 150 MiB for Docker. Our fresh servers used 308 to 500 MiB; with Docker installed, 359 to 669 MiB.
n8n + Postgres450 + 70 MiB idle, plus 400 MiB headroomn8n 2.46.6 idled at 379.7 MiB on our CX23 and at 414.9 and 416.6 MiB on the CX33 and CX43. Postgres 16 idled at 69.6 MiB. The 400 MiB covers workflow runs: n8n used 785.3 MiB right after start.
Supabase1,562 MiBThe highest container total we measured for the official 11-container stack after 90 s idle (on the CAX11). Other servers: 1,101 to 1,399 MiB.
Llama 3.2 1B1,978 MiBSystem RAM used while loaded minus fresh-server RAM, highest across servers (CAX21: 2,315 − 337).
Llama 3.2 3B2,945 MiBSame method (CAX21: 3,282 − 337).
Llama 3.1 8B5,523 MiBSame method (CX43: 6,023 − 500). It did not run on the 4 GB CAX11.
Each extra small app150 MiBAn assumption for a bot or small site, not a measurement.

Using the highest value across our servers keeps the estimate on the safe side. The model figures are also slightly generous, because the "fresh" baseline was taken before Docker was installed.

The measurements behind it

Supabase, all five servers:

ServerContainersRAM (containers)RAM used (system)Fits?Image pullDisk (images)
Hetzner CX232 vCPU · 4 GB · x86_64111,399 MiB1,594 MiByes111 s9.563GB
Hetzner CX334 vCPU · 8 GB · x86_64111,316 MiB1,732 MiByes50 s9.563GB
Hetzner CX438 vCPU · 15 GB · x86_64111,101 MiB1,870 MiByes29 s9.563GB
Hetzner CAX112 vCPU · 4 GB · aarch64111,562 MiB1,564 MiByes99 s10.14GB
Hetzner CAX214 vCPU · 8 GB · aarch64111,318 MiB1,712 MiByes52 s10.14GB

Measured by AI Hosting Lab on 2026-11-05 · 5 servers · method · raw data

n8n install on our production CX23:

n8n 2.46.6 on Hetzner CX23Measured
Docker install22 s
Image pull + first start to healthy105 s
n8n RAM right after start785.3 MiB
n8n RAM idle (after ~60 s)379.7 MiB
PostgreSQL 16 RAM idle69.6 MiB
Whole server RAM used, idle1036 MiB of 3,814
n8n image size1.94GB
Disk used after install4.7G of 38G

Measured by AI Hosting Lab on 2026-11-05 · docker compose: n8n + postgres:16, docker.io from Ubuntu repo, task runners on · method

Ollama models, including system RAM while loaded:

ServerModelGeneration
tokens/s
Prompt
tokens/s
Load timeRAM used (system)Note
Hetzner CX232 vCPU · 4 GB · x86_64Llama 3.2 1B10.3454.03.5 s2,001 MiB
Hetzner CX232 vCPU · 4 GB · x86_64Llama 3.2 3B5.8325.28.8 s3,002 MiB
Hetzner CX232 vCPU · 4 GB · x86_64Llama 3.1 8Bdid not run–––OOM-killed after ~50 s: Ollama fit check reported it would leave 1698 MiB free,
Hetzner CX334 vCPU · 8 GB · x86_64Llama 3.2 1B23.21,322.82.0 s2,205 MiB
Hetzner CX334 vCPU · 8 GB · x86_64Llama 3.2 3B13.5776.53.7 s3,068 MiB
Hetzner CX334 vCPU · 8 GB · x86_64Llama 3.1 8B6.3258.610.0 s5,941 MiB
Hetzner CX438 vCPU · 15 GB · x86_64Llama 3.2 1B37.51,910.91.7 s2,293 MiB
Hetzner CX438 vCPU · 15 GB · x86_64Llama 3.2 3B21.21,161.33.7 s3,196 MiB
Hetzner CX438 vCPU · 15 GB · x86_64Llama 3.1 8B9.7447.47.9 s6,023 MiB
Hetzner CAX112 vCPU · 4 GB · aarch64Llama 3.2 1B15.0835.54.8 s2,203 MiB
Hetzner CAX112 vCPU · 4 GB · aarch64Llama 3.2 3B6.5376.46.0 s3,214 MiB
Hetzner CAX112 vCPU · 4 GB · aarch64Llama 3.1 8Bdid not run–––llama-server process has terminated: exit status 1: ggml_aligned_malloc: insuffi
Hetzner CAX214 vCPU · 8 GB · aarch64Llama 3.2 1B26.81,427.13.2 s2,315 MiB
Hetzner CAX214 vCPU · 8 GB · aarch64Llama 3.2 3B12.2664.15.2 s3,282 MiB
Hetzner CAX214 vCPU · 8 GB · aarch64Llama 3.1 8B5.7226.512.3 s5,796 MiB

Measured by AI Hosting Lab on 2026-11-05 · 5 servers · method · raw data

What typical stacks come out at

Results from the calculator with its current data:

  • n8n only: about 1.4 GB. Cheapest fit: CX23 (4 GB). More in n8n requirements.
  • n8n + Supabase: about 3.0 GB. The CX23 fits, but with little room; see our Supabase VPS sizing.
  • n8n + Llama 3.2 3B: about 4.3 GB. Cheapest fit: CX33 (8 GB).
  • n8n + Llama 3.1 8B: about 6.8 GB. This goes past 85% of an 8 GB server, so the calculator picks the CX43 (16 GB).
  • n8n + Supabase + Llama 3.1 8B: about 8.4 GB. Cheapest fit: CX43.

Assumptions and limits

  • Idle, not load. n8n and Supabase were measured idle. Big workflows, a large database or many users use more. Under our load test n8n peaked at 1003.0 MiB on the CX23 and 1049.6 MiB on the CX33 at 50 concurrent requests, so the calculator adds 400 MiB of headroom for n8n.
  • Short model answers. Ollama figures come from a 256-token answer with the default context. Ollama's FAQ says required RAM scales with the number of parallel requests times the context length, so longer contexts and parallel requests need more. We have not measured those yet.
  • No swap. Our test servers had no swap configured (0 MiB). Swap can keep a server alive in a pinch, but a model swapping to disk becomes very slow.
  • Only servers we tested. The recommendation picks from five Hetzner plans: CX23, CX33, CX43, CAX11 and CAX21. If nothing fits, it tells you to look at 16 GB+ plans. Other providers are not yet tested in our Lab; testing is scheduled.
  • Prices. The price shown is the Hetzner gross monthly price (including VAT) from the Hetzner Cloud API, checked 5 November 2026.
  • Linux counts RAM its own way. Our "system RAM used" comes from free -m, and container RAM from docker stats --no-stream, which on Linux subtracts cache from a container's memory use. Monitoring tools that count cache will show higher numbers for the same server.

Next step: if a local model is on your list, see what its speed is like on each server in VPS for Ollama.

Hetzner prices on this page include 21% VAT, as charged to our Czech (EU consumer) account by the Hetzner API on 2026-11-05. Without VAT (businesses, most buyers outside the EU): CX23 5.49 €, CX33 8.49 €, CX43 15.99 €, CAX11 5.99 €, CAX21 10.49 € per month.

FAQ

How much RAM does n8n need on a VPS?

On our Hetzner CX23, n8n 2.46.6 idled at 379.7 MiB and Postgres 16 at 69.6 MiB, with 1,036 MiB used on the whole server. The calculator adds 400 MiB of headroom for workflow runs, so n8n alone fits a 4 GB server easily.

Can I run n8n and Supabase on a 4 GB VPS?

The calculator says about 3.0 GB, which fits a 4 GB server with 15% spare. Both numbers are idle measurements, so for production we would still pick 8 GB.

How much RAM does a local LLM need?

While loaded, Llama 3.2 3B added up to 2,945 MiB and Llama 3.1 8B up to 5,523 MiB to the system RAM in our tests. Llama 3.1 8B did not run on a 4 GB server at all.

Is the calculator accurate for my traffic?

It is built from idle measurements plus fixed headroom. Heavy workflows, big databases, many users or long model contexts need more. Treat the result as the smallest size worth trying.

Sources

  1. Supabase Docs, Self-Hosting with Docker (2026)
  2. Docker Docs, docker container stats (2026)
  3. Ollama, FAQ (2026)