Proxmox vs Plain Ubuntu: When to Switch, and How to Run Your Ubuntu Server as a VM Inside It

Every home-lab forum eventually says "just run Proxmox". Proxmox VE is a Debian-based hypervisor with a web interface: your machine becomes a host for virtual machines and LXC containers, each snapshotted and backed up as a unit. For some setups that's a big win; for a single server running Docker it's a layer you may not need. Here's how to decide, and how to move if you do.
The honest comparison
| Plain Ubuntu (this series) | Proxmox VE | |
|---|---|---|
| What runs the apps | Docker on the host | Docker inside an Ubuntu VM or LXC |
| Snapshots of the whole server | ZFS datasets (97), restic (55) | one click, whole VM, and roll back |
| Several different OSes | KVM by hand (81) | built in, with a good UI |
| Isolation | containers share the kernel | VMs are separate machines |
| Hardware access (GPU, USB, drives) | direct | passthrough: works, needs setup |
| Overhead | none | a few % CPU, 1–2 GB RAM for the host |
| Learning | Ubuntu + Docker | plus Proxmox's own concepts |
| Backups | your scripts | Proxmox Backup Server or vzdump, built in |
Stay on plain Ubuntu if the server runs Docker services and that's that. Switch to Proxmox when you want: several isolated VMs (a Windows box, Home Assistant OS, a pfSense/OPNsense router, a test copy of production), whole-machine snapshots before upgrades, or you simply enjoy tinkering and have 16 GB+ of RAM.
If you switch: the plan
- Back up everything (23, 55) — this is a reinstall of the host.
- Install Proxmox on the system disk.
- Create an Ubuntu VM; pass the data drives through to it.
- Restore your Docker setup into the VM (74, 140).
- Snapshot the VM; schedule backups.
1. Install Proxmox VE
Download the ISO from proxmox.com, write it to USB (tutorial 1), boot it. The installer asks for the target disk (the system SSD — it's wiped), country and time zone, a root password and email, the management network interface and a static IP. Ten minutes. Then open https://server-ip:8006 and log in as root (realm: Linux PAM).
Two first jobs: Datacenter → node → Updates → Repositories, disable the enterprise repo and add the no-subscription one; then Updates → Refresh → Upgrade. (The "no valid subscription" dialog is just a nag.)
2. Create the Ubuntu VM
local → ISO Images → Download from URL with the Ubuntu Server ISO. Create VM: name ubuntu, the ISO, System defaults with the q35 machine and OVMF (UEFI), Disks 64 GB on local-lvm with VirtIO SCSI and Discard on, CPU 4 cores type host, Memory 8 GB, Network VirtIO on vmbr0. Start it, open the Console, install Ubuntu as in tutorial 1. Afterwards sudo apt install qemu-guest-agent -y inside the VM so Proxmox can see its IP and shut it down cleanly.
3. Pass the data drives through
The VM should own the data disks directly, so ZFS, SMART and mergerfs keep working exactly as before. On the Proxmox host shell:
ls -l /dev/disk/by-id/ | grep -v part
qm set 100 -scsi1 /dev/disk/by-id/ata-WDC_WD40EFRX-xxxx
qm set 100 -scsi2 /dev/disk/by-id/ata-WDC_WD40EFRX-yyyy
(100 is the VM's ID.) Inside the VM the drives appear as /dev/sdb, /dev/sdc; zpool import or mount by UUID as before. For an entire HBA/SATA controller or a GPU, use PCI passthrough (Hardware → Add → PCI Device) with IOMMU enabled in the BIOS and intel_iommu=on / amd_iommu=on on the host's kernel line.
USB devices (Zigbee stick, UPS): Hardware → Add → USB Device → pick by vendor/device ID.
4. Restore Docker inside the VM
Follow tutorial 74 (or the playbook, 140) inside the VM: Docker, ~/docker from backup, data drives mounted, compose up. The VM gets the server's old IP via a DHCP reservation on its new MAC, so nothing else in the house notices.
5. Snapshots and backups
VM → Snapshots → Take Snapshot before any upgrade; Rollback if it goes wrong — seconds. Datacenter → Backup → Add: weekly vzdump of the VM to a backup disk or NFS share, with retention. For incremental, deduplicated VM backups, Proxmox Backup Server on another machine (a Pi won't do; an old PC will).
Note: passed-through physical disks aren't included in VM backups — they're still backed up from inside the VM by restic as before.
6. Then enjoy it
Home Assistant OS as its own VM (with the USB sticks passed through), a Windows VM for the one program, an LXC for Pi-hole (tutorial 142), a test clone of the Ubuntu VM to try the next LTS upgrade on. That's what Proxmox is for.
Troubleshooting
VM has no network. vmbr0 not bridged to the physical NIC on the host (check /etc/network/interfaces), or the VM's NIC isn't VirtIO with the driver loaded (Ubuntu has it).
Passed-through disk shows as 0 bytes. Wrong by-id path or the disk is still mounted on the host. Unmount on the host; it must belong to one or the other.
Performance worse than bare metal. CPU type not host, disks not VirtIO SCSI with discard, memory ballooning fighting ZFS. Fix those three.
"No valid subscription" every login. Cosmetic; a community script removes the dialog if it annoys you.
Wrapping up
Plain Ubuntu is the right answer for most single-server homes; Proxmox is the right answer once you want several machines, whole-VM snapshots and built-in backups. If you switch: back up, install, one Ubuntu VM with the drives passed through, restore Docker inside it, snapshot. Everything in this series then runs unchanged — inside a VM you can roll back.
