For a virtualization platform designed for home server tasks, Proxmox has a fairly straightforward interface that’s easy to pick up. However, hidden beneath its simple UI are a ton of toggles, options, and menus designed to help you make the most of your virtualization workloads. Throw in its powerful Shell terminal, and there’s a lot you can do to better optimize your PVE workflows. Heck, I’ve been a Proxmox fanatic for a long time, and it still took me a while to stumble onto the more obscure facilities.

Create LXC and VM templates

And look into Cloud-Init templates

VMs and LXCs are the crux of every home lab setup, though setting everything up from scratch can be a royal pain. Virtual machines, in particular, are extremely annoying in this regard, as you not only have to deploy them via a long initialization wizard, but also spend some time arming them with an OS. Technically, you could clone a VM or LXC right after setting it up, but it’s far from optimal when you need to create dozens of similar virtual guests.

That’s where templates come into the picture. Since they are reusable, you can create templates out of any VM or LXC on your Proxmox host, and use them to spin up different virtual guests with similar packages and files. All you have to do is right-click on any virtual guest of your choice and tap the Create Template option. Or you can look into the Cloud-Init images for your favorite distro. I’ve been using Terraform with Proxmox to practice my DevOps skills, and the all-powerful automation platform works exceedingly well with my customized NixOS, Arch, and Debian templates.

Enable host CPU passthrough

To increase VM performance

Allocating more CPU and memory resources is a common solution to sluggish virtual machines, though it’s far from the only option at your disposal. Host CPU passthrough is one of the best ways to grant extra processing oomph to your VMs without going overboard with allocating resources. Hidden inside the Processors menu within the Hardware tab, you’ll find a plethora of options for the processor type, and while certain architectures work better for obscure distros, you’ll want to go for the Host option for general-purpose VMs.

Rather than emulating a specific architecture, host CPU passthrough exposes the underlying processor – together with all its extensions – to the virtual machine. Since it removes the emulation overhead, host CPU passthrough can result in a drastic improvement in your VM’s performance, especially if you’re using a demanding operating system. The only caveat is that enabling it on cluster nodes with different processor platforms can cause issues while migrating VMs.

Set the Display option to SPICE

Add some QoL facilities when accessing VMs

While we’re on the subject of performance-related tweaks, switching the Display option from Default to SPICE inside the Hardware tab can make VMs feel a lot more responsive. Not only that, the default display setting tends to cause issues whenever I increase my VM’s resolution past 720p, while SPICE lets me bump it up to 2560x1600 in addition to removing the extra latency I’d typically encounter in virtual machines.

Better yet, if you don’t mind installing virt-viewer, you can even access your VMs over SPICE instead of noVNC. While it takes a couple more steps to configure, virt-viewer adds even more features to the table, including the ability to play back sound using audio interfaces.

Switch the CPU governor

Especially useful for energy-guzzling processors

Switching gears to the power efficiency front, hosting virtual machines and containers can get draining on your energy bills, especially if you run your Proxmox server 24/7 like I do. Although using multiple hard drives and GPUs can affect the power consumption of your Proxmox server, your CPU governor can also influence the amount of energy drained by it.

For the uninitiated, CPU governors are a set of rules responsible for managing your processor’s frequency. Proxmox supports two CPU governors: performance, which tries to keep your processor running at max frequencies, and powersave, which prioritizes lower energy consumption by throttling down your CPU’s clock speed at lower loads. If you’re using a server-grade processor like I do, chances are your CPU governor is set to performance, so switching to powersave can help you cut down your PVE workstation’s power consumption.

The Proxmox VE Helper-Scripts repository offers a neat command that changes the CPU governor. But you can also do so manually by running echo powersave | tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor inside the Shell tab.

Look into nested virtualization

Assuming your host can handle the extra processing load

I’m a big fan of tinkering with quirky operating systems. Proxmox tends to work with most distributions out-of-the-box, though there are some that require extra facilities. Nested virtualization is one such feature, as you won’t be able to deploy XCP-ng, Harvester, and other home server platforms in VMs unless you enable it on your PVE node.

In fact, I use a virtualized version of ESXi on my PVE node just so I could familiarize myself with the all-popular hypervisor without pulling my hair out trying to troubleshoot NIC compatibility issues on a bare-metal setup. My Windows 11 dev VM is another instance where I’ve configured nested virtualization, as it lets me create projects involving WSL2, Podman Desktop, and Hyper-V.

Plus, enabling nested virtualization is as simple as running echo "options kvm-intel nested=Y" > /etc/modprobe.d/kvm-intel.conf (or echo "options kvm-amd nested=1" > /etc/modprobe.d/kvm-amd.conf on AMD processors) on your Proxmox node’s Shell tab before executing the qm set vm_id --cpu host command, where vm_id is the number associated with your virtual machine.

Check out obscure community scripts

Plenty of useful repos besides Proxmox VE Helper-Scripts

The uber-popular Proxmox VE Helper-Scripts repository has been a constant companion during my PVE (mis)adventures, and I use it for everything from deploying LXCs to modifying their privileges and adding microcode updates. But considering Proxmox’s massive community support, it shouldn’t come as a surprise that third-party developers have released extremely useful scripts for the virtualization platform.

For starters, there’s the PVE-mods repository, which adds real-time temperature monitoring for the CPU cores, memory, and storage drives of the underlying Proxmox host. Likewise, the Ultimate Proxmox Updater lives up to its name by automating the package update procedure for your VMs and LXCs, while the Proxmox Enhanced Configuration Utility lets you enable GPU passthrough without forcing you to go through numerous configuration files.

Some more tips to level up your Proxmox game

Besides these tricks, I’ve got a handful of other suggestions I wish I’d known sooner. Since PVE includes snapshots and backups, I slept on the Proxmox Backup Server for a long time. But what I didn’t realize was that PBS not only supports deduplication, but it also includes the granular restore facility, allowing me to selectively recover my LXC and VM files. Likewise, the Proxmox Datacenter Manager is worth checking out if you want a quick and easy way to transfer virtual guests between different PVE nodes. GPU passthrough is another neat feature that lets you harness the superior processing capabilities of your graphics card in virtual guests.