Short answer: yes. A mini PC runs a real homelab. The question that actually matters is how many VMs and LXCs each tier holds, and that is set by RAM first, disk IO second, the NIC third, and CPU almost never. The figures below come off live Proxmox VE nodes in June 2026.
This mini PC homelab guide maps three tiers to realistic guest counts, names the wall you hit first, and tells you the few cases where a mini PC genuinely is not enough. If you have already decided to buy, jump to the best mini PC picks for a homelab; this page is the math behind that choice.
The short answer
For the vast majority of homelabs, a mini PC is enough. People assume the limit is CPU. It almost never is. At homelab scale a 4-core to 8-core box sits near idle most of the day. The order you actually run out of resources is:
- RAM. The hard wall. You cannot safely overcommit it for real workloads.
- Disk IO. A single consumer NVMe gets random-IO starved once a dozen VMs all want fsync at once.
- NIC. 1GbE caps storage and backup traffic well before CPU breaks a sweat.
- CPU. Last, and rarely, at homelab scale.
Here is what idle actually looks like on a real node. This is a production Proxmox host, an 8-core box with 64GB of RAM:
nproc; cat /proc/loadavg; free -h
Eight cores, load barely above zero, and just over 10GB of 62GB in use while several guests run:
8
0.07 0.14 0.09 1/402 1115073
total used free shared buff/cache available
Mem: 62Gi 10Gi 49Gi 69Mi 2.8Gi 52Gi
Swap: 8.0Gi 0B 8.0Gi
CPU is asleep. RAM is the number to watch. That is the whole story in one screen.
By tier
Three tiers cover almost every mini PC people put Proxmox on. The counts below assume a typical mix: lightweight services (a reverse proxy, Pi-hole, an Uptime Kuma, a Gitea), plus a couple of heavier guests. LXC containers are far cheaper than full VMs, so the two columns differ a lot.
| Tier | Typical spec | Idle LXCs | Light VMs (1-2GB) | What it comfortably holds |
|---|---|---|---|---|
| Entry | 4-core N100/N150, 16GB, 1x NVMe, 1GbE | 15 to 25 | 4 to 6 | A self-hosting stack: Pi-hole, reverse proxy, a wiki, a small DB, one Docker host VM |
| Mid | 6-8 core Ryzen, 32GB, NVMe, 2.5GbE | 30 to 50 | 8 to 12 | The above plus a 3-node k3s in LXC, a media stack, a monitoring stack, room to experiment |
| High | 8+ core (MS-01 class), 64GB, dual NVMe, 2.5/10GbE | 60 to 100+ | 15 to 25 | Nested labs, a full Kubernetes cluster, a TrueNAS VM, several heavy services at once |
Above the high tier sit the 96GB and 128GB unified-memory boxes (Ryzen AI Max+ class). Those stop being “homelab nodes” and start being single-box clusters or local-AI machines. For a pure homelab they are overkill on RAM and still single-NVMe on IO, so the guest ceiling rises with RAM but the IO wall does not move.
These ranges come off a real node, not a spreadsheet. Listing the VMs on the node shows 29 defined with 5 running right now; the output below is trimmed to a few rows:
qm list
Each line is one VM, its assigned RAM, and its boot disk. Note the assigned memory column, that is the number you budget against:
VMID NAME STATUS MEM(MB) BOOTDISK(GB)
117 leap16-lab running 6144 50.00
141 ubuntu-2604-lab running 8192 20.00
165 rocky-10-lab stopped 8192 40.00
801 ubuntu-template stopped 2048 20.00
8822 mint-template stopped 4096 40.00
Stopped guests cost zero RAM. Only running ones draw against the 64GB budget. That is why the LXC counts run so high: a stopped or idle container is nearly free, while a running VM with 8GB assigned eats 8GB whether it uses it or not (unless you balloon it, see below).
LXC vs VM density
The single biggest density lever is choosing LXC over a full VM where you can. A container shares the host kernel, so an idle Pi-hole or Nginx LXC sits at 30 to 80MB of real RAM. A full VM for the same job reserves its entire assigned memory up front.
Run the lightweight, single-purpose services as LXC. Reserve full VMs for the things that genuinely need their own kernel: a Kubernetes node, a TrueNAS instance, anything doing PCI passthrough, or any OS that is not Linux. Done right, a 32GB box runs dozens of LXCs and still has headroom for three or four real VMs. If you are new to the split, the guide on running Debian and Ubuntu in an LXC container walks the practical difference.
Where it breaks
RAM is the wall, and it is a hard one. You can thin-provision disk and overcommit CPU, but you cannot hand out 80GB of guest RAM on a 64GB box and expect real workloads to survive. The kernel will swap, then OOM-kill, then take a guest down with it. Ballooning and KSM buy headroom, not magic.
KSM merges identical memory pages across VMs (great when you run ten copies of the same OS). On a lightly loaded node with varied guests, it merges almost nothing. Reading the counter on a real host shows zero pages shared right now:
cat /sys/kernel/mm/ksm/pages_sharing
Zero, because nothing is under enough pressure to bother merging:
0
So treat KSM and ballooning as a 10 to 20% cushion on memory-similar guests, not as a way to double your VM count. Budget RAM as if neither existed and you will not get burned.
Disk IO is the second wall. One consumer NVMe is fast in a straight line but collapses on random writes when a dozen VMs all fsync at once. That is exactly what kills snapshot-heavy or database-heavy labs on a single drive. The fix is a second NVMe (or a PLP enterprise drive for the sync-write path), which is why the high tier always has two slots. The deep dive on NVMe vs SATA for a Proxmox datastore has the real fsync numbers, and the SSD and NVMe picks for a homelab cover which drives survive it.
A 1GbE NIC is the third wall, and it only bites on storage and backup traffic. Moving a VM, restoring a backup, or running anything over NFS/iSCSI saturates 1GbE long before the CPU notices. 2.5GbE is the homelab baseline now for a reason. CPU comes dead last; at homelab scale you will hit all three of the above before cores become the problem.
When a mini PC is NOT enough
A short list. If your build hits one of these, a mini PC is the wrong tool:
- Large ZFS or NAS arrays. Mini PCs have no drive bays. Four or more spinning disks in a pool means a NAS or a tower. See the best NAS picks for self-hosting and Plex.
- GPU passthrough for local AI. No room for a discrete card. A unified-memory box or a GPU server is the path.
- Sustained 10GbE storage. Most mini PCs top out at 2.5GbE; only the MS-01 class has SFP+.
- More than 128GB of RAM. That is the hard ceiling on current mini PC platforms.
- True high availability across 3 nodes. Doable with three mini PCs, but shared storage and quorum push you toward a NAS plus real switching.
- Heavy Plex transcoding. Plex hardware transcoding is far smoother on Intel QuickSync than on AMD, so for several simultaneous 4K transcodes an Intel iGPU is the safe bet (Jellyfin copes better with AMD via VA-API).
Everything else, which is most of what people actually self-host, fits a mini PC fine.
How to size your build
Size from the workload, not from a spec sheet. The drivers that set the tier:
- RAM is the sum of every running guest’s assigned memory plus 2 to 4GB for the host. Stopped guests are free. Add 20% headroom and round up to the next tier.
- Disk IO: one NVMe is fine until you run more than a handful of write-active VMs. Plan a second slot if you will run databases or snapshot heavily.
- NIC: 2.5GbE if you move VMs or back up over the network. 1GbE only if everything stays local.
- CPU: 4 cores runs a real stack; 6 to 8 gives breathing room for nested labs. Cores are the cheapest part of the decision.
Real example: the production node above is an 8-core box with 64GB. With five guests running it sits at just over 10GB used and a load of 0.1. That same box would comfortably host a couple dozen LXCs and a dozen light VMs before RAM, not CPU, told it to stop.
Quick reference
Match your guest count to a tier, then pick the box.
| You want to run | Buy this tier | First wall you will hit |
|---|---|---|
| A handful of self-hosted services | Entry: 4-core, 16GB, 1x NVMe | RAM |
| A full stack plus a k3s lab and monitoring | Mid: 6-8 core, 32GB, NVMe, 2.5GbE | RAM, then disk IO |
| Nested labs, a real K8s cluster, a TrueNAS VM | High: 8+ core, 64GB, dual NVMe, 2.5/10GbE | Disk IO, then NIC |
| Local AI with a big model in memory | 96-128GB unified box | Single-NVMe IO (RAM is no longer the wall) |
| 4+ spinning disks, heavy Plex, real HA | Not a mini PC. Get a NAS or tower. | Drive bays |
Picked your tier? The tested rundown of mini PCs for a homelab and Proxmox has the actual boxes, with real IOMMU and NIC notes for each.