Why I Run Proxmox Instead of Plain Docker
The case for adding a hypervisor layer to your homelab instead of running Docker directly on bare metal — and when it's not worth the trouble.
The simplest homelab setup is Docker on Ubuntu, directly on bare metal. Install Ubuntu, install Docker, run containers. Done. No hypervisor, no VM overhead, no extra layer to manage.
That’s a fine setup. It’s where most people start. I ran it that way for about six months before moving to Proxmox, and here’s why I made the switch and whether you should.
The case for plain Docker on bare metal
Simpler is better until it isn’t. Plain Docker on bare metal has real advantages:
Less overhead. No hypervisor, no VM. Containers get direct access to hardware. This matters most if you’re running resource-constrained hardware.
Faster to set up. Ubuntu install plus Docker is an hour. Proxmox, VM creation, Ubuntu VM install, then Docker is three to four hours.
Less to learn. Proxmox has its own interface, its own networking concepts, and its own failure modes. If you’re already comfortable with Docker and Linux, adding Proxmox means learning another tool.
It’s what most guides assume. The majority of Docker guides assume a direct Linux install. Container networking, storage paths, and user permissions all behave predictably.
Why I added Proxmox anyway
Snapshots. Before any significant change to my Docker host — new service, configuration update, OS upgrade — I take a Proxmox snapshot. If something breaks, I roll back in 30 seconds. On bare metal, a failed update means debugging or reinstalling.
I’ve used this three times. Once when a Docker update broke compose behavior in a subtle way. Once during an Ubuntu dist-upgrade that corrupted something in /etc. Once when I misconfigured Authelia and locked myself out of services.
Each time: snapshot, restore, 30 seconds, everything back to the last known good state. That’s worth the Proxmox overhead for me.
Multiple isolated workloads. I run a Docker host VM for container services, plus a few LXC containers for things like DNS (Technitium) and the Tailscale subnet router. Keeping those separate means my DNS server doesn’t share fate with my Docker host. If I break Docker, DNS keeps working.
Resource allocation. Proxmox lets you limit CPU and RAM per VM or container. My Docker VM gets 12GB of RAM. Technitium gets 512MB. The rest is available if I want to spin up something temporary. This is more flexible than cgroups on bare metal.
Hardware changes are easier. When I upgraded my server’s SSD, I migrated the whole VM as a Proxmox backup and restored it on the new hardware. No reinstall. On bare metal, that’s more complicated — re-partitioning, potentially rsync of a live system, prayer.
Easier to run experiments. Want to try a different container manager? Spin up a new VM, don’t touch the working one. Want to test a config change that might be destructive? Snapshot, test, roll back if needed. Proxmox makes experimentation lower-stakes.
The honest cost of Proxmox
The overhead is real. On my N100 machine with 16GB RAM, the Proxmox host uses about 1GB of RAM just running. My Docker VM is configured for 12GB. The remaining 3GB is available for LXC containers. With plain Docker, all 16GB would be available for containers.
For services: on my hardware, I’ve never actually been RAM-limited because of Proxmox. The N100 with 16GB is well above the threshold where hypervisor overhead matters.
CPU overhead from virtualization is measurable but small. For typical homelab workloads (web services, file sync, document management), it doesn’t matter.
The real cost is setup time and ongoing complexity. Proxmox has its own update process. VMs have their own disk allocation. Networking goes through a virtual bridge. If something goes wrong, there are more places to look.
My recommendation
Start with plain Docker on bare metal if:
- You’re new to self-hosting and want to minimize variables
- Your hardware has limited RAM (less than 8GB)
- You’re running only a handful of services
Move to Proxmox when:
- You want snapshot/rollback capability
- You’re running multiple different workloads you want isolated
- You’re comfortable enough with Linux that another layer doesn’t feel like friction
- You have 8GB+ of RAM and the overhead math works out
The migration from bare metal Docker to Proxmox is easier than it sounds — it’s mostly reinstalling. You can move your Docker volumes over and be back up in a few hours.
For getting started with Proxmox, the install guide covers the setup. The VM vs LXC guide explains the container decisions once you’re running it.