For most people asking how much RAM for Proxmox homelab duty is enough, the answer is 16 GB: room for the 2 GB Proxmox host, a modest ZFS cache, one or two VMs and a stack of LXC containers. Stay at 8 GB only for a containers-only box; buy 32 GB if Windows, Immich or a second heavy VM is on the list.
Memory decides this, not cores. A VM holds every megabyte you assign it whether it is doing anything or not, while vCPUs are shared and mostly asleep. A small homelab runs out of RAM long before the CPU graph gets interesting, which is the core argument behind how many VMs an N100 can actually run. So size for what you will actually run, not for what might fit.
What each RAM tier actually runs
| Installed RAM | What fits comfortably | Verdict |
|---|---|---|
| 8 GB | Proxmox host plus a handful of LXC containers (DNS filter, reverse proxy, a Docker LXC); one small Linux VM at most | Fine for learning, cramped once Home Assistant OS arrives |
| 16 GB | Host, a small ZFS pool, Home Assistant OS, one more VM, a pile of containers | The sweet spot for an N100 or N150 mini PC |
| 32 GB | All of the above plus a Windows VM, Immich with machine learning, or a multi-terabyte ZFS pool | Where four or more VMs stop being a negotiation |
| 64 GB+ | Nested labs, a Kubernetes cluster built from VMs, several Windows guests | Not a single-SODIMM mini PC question |
The usual story with 8 GB: it is fine right up until the week you discover Home Assistant OS wants to be a full VM. If you are buying new, skip the 8 GB configuration unless the price gap is absurd.
How do you calculate the RAM a Proxmox host needs?
Add four things: 2 GB for Proxmox VE itself, roughly 1 GB per TB of ZFS storage, the full assigned memory of every VM, and the real working set of each container. Then keep the total under about 80% of installed RAM, which is also the default target Proxmox’s own ballooning logic aims for.
The first two numbers come straight from the Proxmox VE system requirements. The 80% figure is the default ballooning target in the Proxmox VM documentation, which adds a blunter rule of thumb: always leave 1 GB of RAM available to the host.
host RAM needed = 2 GB (Proxmox VE + services)
+ ~1 GB per TB (ZFS ARC, if you use ZFS)
+ sum of VM memory (fixed allocations)
+ container usage (actual use, not the limit)
then stay under ~80% of installed RAM
A worked example on a 16 GB N100 with a 1 TB NVMe drive formatted as ZFS:
- Proxmox VE host: 2 GB
- ZFS ARC at the installer default (10% of 16 GB): about 1.6 GB
- Home Assistant OS VM: 4 GB (documented minimum is 2 GB; add-ons eat the rest)
- Docker LXC for small apps: 2 GB
- Jellyfin LXC: 2 GB
- Pi-hole LXC: 512 MB
That is about 12 GB, roughly 76% of the box. Add a 4 GB Windows VM and you are over 100% on paper, which is usually when people start reading about ballooning.
The guests that quietly eat the budget
These are the figures each project documents. Treat them as floors, not comfortable allocations:
| Guest | Documented memory | Has to be a VM? |
|---|---|---|
| Pi-hole | 512 MB | No |
| Home Assistant OS | 2 GB RAM, 2 vCPUs | Yes, it is a full appliance image |
| Windows 11 | 4 GB minimum | Yes |
| Immich | 6 GB minimum, 8 GB recommended | No, Docker in an LXC or VM |
| Proxmox Backup Server | 4 GiB plus 1 GiB per TiB of storage | No, but it belongs on another machine |
Immich is the one that ambushes people. It is “just a photo app,” and its own docs ask for more memory than Home Assistant OS and Windows 11’s minimum. On a 16 GB box, Immich plus Home Assistant OS plus the host is already 10 GB before anything else gets a turn.
Windows 11’s 4 GB is the number that boots, not the number you will enjoy over RDP. And Proxmox Backup Server on the host it backs up is a convenience, not a backup; putting it on the NAS or a second box also takes its 4 GiB off the mini PC.
Does ZFS need a lot of RAM on Proxmox?
Not as much as its reputation suggests. Since Proxmox VE 8.1, the installer limits the ZFS ARC to 10% of host memory, clamped to 16 GiB, and writes that limit to /etc/modprobe.d/zfs.conf. On a 16 GB mini PC that is about 1.6 GB. The catch is hosts installed before 8.1.
According to the Proxmox ZFS documentation, installs older than 8.1 never had that limit written, so the ARC falls back to ZFS’s own default: 50% of RAM, or 62.5% from ZFS 2.3.0 onward. If your host predates 8.1 and was upgraded in place, check whether that file exists; half of a 16 GB box going to cache is exactly what makes VMs feel squeezed.
The same page suggests 2 GiB base plus 1 GiB per TiB of storage and warns that enough ARC is crucial for I/O performance, so cut it with care. To pin the cap:
# /etc/modprobe.d/zfs.conf: cap the ARC at 4 GiB
options zfs zfs_arc_max=4294967296
If root is on ZFS, run update-initramfs -u -k all and reboot for the change to take effect.
The other option is not running ZFS on the boot drive at all. On a single-NVMe mini PC, ext4 with LVM-thin costs no ARC and still gives you guest snapshots. ZFS earns its memory once you want a mirror with checksums, or replication to a NAS with zfs send. Storage options for a mini PC homelab walks through that trade.
Containers are the cheapest RAM upgrade
An LXC container’s memory setting is a limit, not a reservation. The Proxmox container documentation describes container memory as controlled by the cgroup memory controller, so a container capped at 1 GB that uses 150 MB leaves the other 850 MB available to everything else. A VM given 4 GB tends to fill all 4 GB with its own kernel’s page cache over time.
So the rule that saves the most RAM is boring: use a container unless something forces a VM. The forcing reasons are a different kernel (Windows, BSD-based firewalls, Home Assistant OS), a hard isolation boundary, or a device that needs full PCIe passthrough. Hardware transcoding is not one of them; Plex in an LXC can reach the iGPU through a device node, no VM required. The LXC vs VM breakdown for Proxmox on a mini PC covers the rest of that decision.
Ballooning and KSM: overcommit with your eyes open
Ballooning. Set a VM’s minimum memory below its maximum and Proxmox guarantees the minimum, then hands out more up to the maximum while host usage stays under the 80% target. Two caveats from the Dynamic Memory Management wiki: ballooning does not work with passed-through PCIe devices, because their memory is mapped to fixed addresses, and set too aggressively it can leave applications inside the guest out of memory. Windows guests need the balloon driver added manually, and the VM docs advise against using it on critical systems.
KSM. Kernel Samepage Merging scans VM memory and merges identical pages, which pays off most when several VMs run the same OS. The Proxmox wiki credits it with improving VM density “by as much as 300%,” which is a best case, not a planning number. The KSM page also flags side-channel risk between VMs. If you host anything for other people, disable it with systemctl disable --now ksmtuned, or per VM with qm set <vmid> --allow-ksm 0.
Treat both as a cushion for spikes, not as capacity. If KSM is sharing gigabytes all day, the honest fix is fewer VMs or more RAM.
Is 32 GB worth it on an N100 or N150?
Only if your guest list genuinely needs it, and only if you accept running outside Intel’s documented spec. Intel’s N100 specification lists a 16 GB maximum on a single memory channel, with DDR4-3200, DDR5-4800 or LPDDR5-4800. Many boards accept a 32 GB SODIMM anyway.
That support comes from each board’s firmware, not from anything Intel documents, and boxes with soldered LPDDR5 cannot be upgraded at all. Single-channel also means a second stick buys nothing for bandwidth; on these boards you are buying capacity in one module.
Try the free upgrades first: convert VMs to containers where the kernel allows, cap the ARC, and move Proxmox Backup Server off the box. If you still need 32 GB, buy hardware that supports it on paper: a used Lenovo ThinkCentre Tiny with a vendor-supported 32 GB ceiling, or an N305 box sold with 32 GB installed (N100 vs N305 vs N97 explains what the extra cores buy). The full ladder is in the best mini PC for a Proxmox homelab.
How do you know you have run out of RAM?
The first sign is swap in use on the Proxmox host itself: free -h showing meaningful swap means the budget is already wrong. After that come KSM sharing gigabytes, ballooned VMs that get slower for no obvious reason, and finally the kernel OOM killer terminating a guest you would not have picked.
Three commands cover most of the diagnosis:
free -h # host RAM and swap
arc_summary | head -n 40 # ZFS ARC size and target, if using ZFS
journalctl -k | grep -i oom # has the OOM killer fired?
Set an alert on host swap usage on day one; it is the cheapest capacity monitor there is.
FAQ
is 8gb ram enough for proxmox
Yes, for a containers-first lab. Proxmox needs about 2 GB for itself, leaving roughly 6 GB for LXC containers such as Pi-hole, a reverse proxy and a Docker host. It gets tight once Home Assistant OS or any Windows VM arrives, and ZFS shaves off more, so treat 8 GB as a learning box.
how much ram does proxmox itself use
Proxmox VE documents a 2 GB minimum for the OS and its services, with guest memory on top. ZFS or Ceph add roughly 1 GB per TB of used storage. The 1 GB figure in the official minimum is for evaluation only, and the VM docs advise always leaving at least 1 GB free for the host.
should i get 16gb or 32gb for a proxmox mini pc
Get 16 GB if your plan is mostly containers plus one or two VMs, the shape of a typical single-box homelab. Get 32 GB if Windows, Immich, a Proxmox Backup Server VM or four-plus VMs are on the list, and buy hardware whose vendor supports 32 GB rather than gambling on an out-of-spec module.
does more ram make proxmox faster
Only up to the point where nothing is swapping. Spare RAM becomes page cache, or ARC if you raise the ZFS cap, which speeds up disk reads, but a host under no memory pressure will not run guests faster with more. Past that point storage and CPU decide performance, and extra memory sits idle.
Related across the network
- Proxmox LXC vs VM: Which One Should You Use? — proxmoxguide.com
- Proxmox ZFS Storage: Pools, Zvols, volblocksize, ARC — proxmoxguide.com