When you think of home lab projects, you’d probably imagine self-hosting FOSS tools, distro-hopping with VMs, or training DevOps skills. But thanks to Proxmox’s formidable virtualization prowess, there’s a long list of experiments you can carry out with your server – ranging from nested VMs and voice-controlled smart home hubs to semi-functional Hackintosh systems and virtual dev environments.

In fact, I’ve been using Windows 11 and Arch Linux virtual machines as my primary coding hubs for months, and they haven’t let me down even once. Rolling with that chain of thought, I even ran a Windows 11 VM as my daily driver for a week, and it was even capable of gaming. Like conventional Linux distros, there are a couple of titles with kernel-based anti-cheats that refuse to run, but a Proxmox-based virtual machine can satisfy my gaming needs for the most part.

Configuring GPU passthrough is a lot easier than you might think

PECU removes all complexity (but I recommend doing it manually)

During my early Proxmox days, the idea of granting a virtual machine direct access to a graphics card sounded really cool on paper. But after going through multiple pages of documentation and tons of forum posts, it sounded like a really difficult undertaking. Truth be told, GPU passthrough is way simpler than I initially expected – and I say that as someone who has armed his VM stack with a handful of different cards.

What you really need to look out for is IOMMU compatibility, as you wouldn’t be able to let your virtual machines siphon your graphics card’s horsepower unless both the CPU and your motherboard support this feature. But once you’ve enabled it in your mobo’s BIOS, the rest of the process is pretty straightforward. You just need to turn on interrupt mapping, modify the GRUB bootloader with additional parameters, and add a couple of VFIO variables to the modules config before binding the device IDs associated with your GPU components to vfio.conf file.

I’ve already created detailed guides on passing PCI devices (including GPUs) on XDA, and having repeated this process for my GTX 1080 over the weekend, I can confirm that everything works well even on Proxmox 9.1. I’d always recommend passing the graphics card manually, but if that sounds intimidating, you can rely on the GPU passthrough scripts on the third-party Proxmox Enhanced Configuration Utility. I’ve used it with iGPUs and dedicated cards, and it has worked well in both instances.

👁 Running PECU on Proxmox
Proxmox Enhanced Configuration Utility is just what I needed for my home lab

PECU is perfect when you want a simple way to configure GPU passthrough for your Proxmox virtual machines

Most single-player games run with minimal latency

I’ve used some extra tweaks to enhance the VM’s performance

As for the in-game performance, I’ve got nothing to complain about. Since GPU passthrough lets my Windows 11 VM directly access the graphics card, there’s no interference from the host system’s software stack. Of course, I can’t assign all the RAM to the virtual machine, so the performance is slightly worse compared to a bare-metal setup. But for the most part, the games run smoothly in my virtualized environment, especially once I configured a couple of settings.

For starters, I rely on Parsec to stream the games from the virtual machine to my PC, as noVNC doesn’t work with GPU passthrough enabled, while RDP isn’t meant for gaming and adds extra latency to the mix. I also use the VB Audio Virtual Cable drivers for audio playback, and have yet to encounter stutters even in fast-paced titles. With the VM disk stored on an NVMe SSD, the boot times are pretty quick, though some titles take a couple of extra seconds to boot. That’s probably because I use a virtual drive instead of passing the entire SSD to the Windows VM. But since I have other VMs and LXCs deployed on the drive, I can live with my games taking a few extra seconds to load. Finally, I’ve set the CPU model to host, as it lets the VM harness the underlying processor instead of replicating the architecture of a generic CPU.

So far, I’ve tried everything from Hades 2, Sunless Skies, Disco Elysium, Ravenswatch, and other light titles to demanding games like Cyberpunk 2077, Clair Obscur: Expedition 33, and Metro Exodus, and the VM runs every title besides Expedition 33 at 1080p 60FPS. Considering that I tested these games on a virtual machine deployed on a nearly 10-year-old GTX 1080 + first-gen Ryzen CPU setup, that’s really impressive. That said, this article won’t be complete if I don't go over games that refuse to boot…

But games with kernel-level anti-cheats can be a challenge

Not that big of a problem for yours truly

If you’ve been gaming on Linux, you’ve probably encountered your fair share of multiplayer titles relying on kernel-based anti-cheats that just won't work on your favorite distro. Unfortunately, these games also don’t run on the Windows 11 virtual machine, even with all the CPU and GPU passthrough settings enabled. Elden Ring: Nightreign and Arc Raiders, for example, don't even boot and throw the "Cannot run under virtual machine" error. 7 Days to Die produces the same error, but since I can choose to boot the game without Easy Anti-Cheat, I can still join my friends’ servers on the Windows 11 VM.

Helldivers 2, however, was an exception, as it ran without any issues. Now, I’d never recommend playing it on a VM setup, as you’re one ban away from losing your hard-earned weapon accessories and warbonds. But I managed to join a group of random players and played through the entire mission with zero frame drops or connectivity issues.

Truth be told, I’m not a big fan of multiplayer titles, and the only games I’d miss on this setup are Nightreign and Helldivers 2. Considering how well everything works, I might just end up relying on a Proxmox-based Windows 11 VM when I want to remotely stream indie titles to my smartphone.

👁 The Bliss OS UI with inverted colors
I tried running Android VMs inside Proxmox

With the right OS, Proxmox is surprisingly good at virtualizing Android