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

Proxmox or plain Ubuntu? When a hypervisor earns its keep — and how to move your server into a VM without losing anything.

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 appsDocker on the hostDocker inside an Ubuntu VM or LXC
Snapshots of the whole serverZFS datasets (97), restic (55)one click, whole VM, and roll back
Several different OSesKVM by hand (81)built in, with a good UI
Isolationcontainers share the kernelVMs are separate machines
Hardware access (GPU, USB, drives)directpassthrough: works, needs setup
Overheadnonea few % CPU, 1–2 GB RAM for the host
LearningUbuntu + Dockerplus Proxmox's own concepts
Backupsyour scriptsProxmox 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

  1. Back up everything (23, 55) — this is a reinstall of the host.
  2. Install Proxmox on the system disk.
  3. Create an Ubuntu VM; pass the data drives through to it.
  4. Restore your Docker setup into the VM (74, 140).
  5. 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.

Call us