Build a server with multiple GPU-powered virtual machines — perfect for families, classrooms, and homelab enthusiasts. I personally used it for a server for my 3 kids so I do not have to buy a separate PC for each of them and learn something new - in the end it was a successful and interesting project.
- Overview
- Features
- Hardware Requirements
- Quick / Automated Start
- Setup Instructions
- Parental Controls
- Templates & Scripts
- Demo & Video
- Support & Sponsorship
- Tests & Benchmarks
- Bonus
ProxBi helps you convert one powerful server into multiple independent desktops for gaming, learning, or productivity. Each user gets their own GPU-powered VM accessible via thin clients or remote desktop.
| Feature / Factor | One Server + Thin Clients | Separate Server per User |
|---|---|---|
| Hardware Cost | Lower — shared components (MB, CPU, PSU, case) reduce overall cost | Higher — each user needs a full system |
| GPU Allocation | Multiple GPUs passed through to different VMs | Each user requires their own GPU |
| Noise | Minimal in user rooms — server can be placed in a locker, basement, or dedicated room | High — each system produces its own noise |
| Power Consumption | Lower — single system with shared components | Higher — many separate systems |
| Maintenance | Centralized updates and monitoring | More effort — updates and troubleshooting for each system |
| Space Requirements | Compact — one server, small thin clients | Large — full-sized PCs for each user |
| Flexibility / Scalability | High — can add VMs or GPUs as needed | Limited — adding new users means buying more hardware |
| Initial Setup Complexity | Higher — requires knowledge of Proxmox and GPU passthrough | Lower — plug-and-play desktop PCs |
| User Experience | Thin client latency may be slightly higher, but manageable | Native experience, zero virtualization overhead |
Tip: Placing the server in a basement or closet reduces noise in living areas while keeping thin clients quiet and efficient. Shared components like motherboard, PSU, and case save money compared to building full PCs for each user.
- Automated scripts for Proxmox and GPU passthrough
- Ready-to-use VM templates for Windows 11
- Optimized performance for gaming, coding, and creative apps
- Multi-user management for family, classroom, or homelab setups
- Troubleshooting tips and configuration guides included
- Demo & Videos
Tip: Think about future expansions
You can see our build specs here bellow specifically made for this purpose.
- Case with enough space for all components
- Fans and airflow to keep it cool
- noise/quietness grade depending on where the server will be placed
- PSU with enough power
- Motherboard with enough and correct ports/pins
- CPU with IOMMU support and enough cores for each user/VM.
- 1+ GPUs for passthrough. One for each user/VM.
- Sufficient RAM (recommend ≥14GB per user/VM).
- Proxmox VE 9.x compatible server
- Enough storage. Preferable SSD or M2.
- Thin clients or remote desktop clients for users (mini-PC, laptop, PC, Mac, Mobile etc.)
- Hardware requirements:
- Anything that would support h264 decoding and 50Mbps network
- OS: Windows 10/11(recommended), Mac, IOS, Android
- RAM: 8GB
- CPU: 2 Cores 2.2GHz
(WIP - proxmox templates or repo for automation of the bellow steps. For now try to follow the guide bellow and keep an eye on updates to this repo.) The details of these automations can be found at Templates & Scripts.
-
Enable IOMMU / VT-d in BIOS then reboot
-
Install Proxmox on your server
- Finally, you should be able to access your Proxmox console via browser
-
Create Windows VMs
- General: give a name and an id to the VM
- OS: Use an ISO with Win11, guet OS "Microsoft Windows" and select the appropriate version from your ISO. Check the VirtIO drivers and select the appropriate iso for them "virtio drivers"
- System: select UEFI, Q35 and Graphic card: Default, Quemu Agent - ON, EFI and TPM (choose a storage for them - can be same as the disk)
- Disks: leave defaults (SCSI)
- CPU: Sockets 1, Type "host". Cores - give enough Cores you canuse this formula ( TOTAL CORES - 2 for proxmox ) / Number of VMs
- Memory: give enough RAM. You can use this formula : ( TOTAL RAM - 2GB for proxmox ) / Number of VMs .
- Network: leave defaults

- Repeat the above stems and create all VMs

- Connect to the VM from the proxmox console (for now do not worry about missing GPU and bad resolution or lag):
- Install the VirtIO ISO for network and disk drivers from the inserted virtual CD with virtio.
- Install virtual audio driver e.g. https://vb-audio.com/Cable/ -> this will allow audio passthrough and you should hear audio now from your VM.
- (Optional, can be done later) Install Parsec and configure as host (see details in step bellow)
-
Passthrough GPUs to VMs. On the proxmox server cli (either in proxmox console > pve node > terminal or ssh into your server) execute:
nano /etc/default/gruband edit the line- for Intel
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt" - for AMD
GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on iommu=pt"
- for Intel
update-grubrebootnano /etc/modulesand add these lines if not already present- vfio
- vfio_pci
- vfio_iommu_type1
- vfio_virqfd
lspci -nn | grep -E "VGA|Audio"and note the ids of the GPU VGA and Audio device pairs of each GPU. Something like01.00.0and01:00.1also10de:1f08and10de:10f9nano /etc/modprobe.d/vfio.confand addoptions vfio-pci ids=10de:1f08,10de:10f9replace with your ids, add all pairs.nano /etc/modprobe.d/blacklist.confand add:blacklist nouveaublacklist nvidiablacklist nvidiafbblacklist nvidia_drm
update-initramfs -u -k all- Repeat this for each VM and GPU pair (VMID is the id you gave your VM upon creation) :
nano /etc/pve/qemu-server/<VMID>.confand add the following lines replacing the ids with your GPU idhostpci0: 01:00.0,pcie=1,x-vga=1hostpci1: 01:00.1
reboot- In proxmox console you should now see the PCI devices for each VM (do not edit them in the console)

- Login to VM (using proxmox console or parsec if installed above) and install the GPU driver from the official provider. You should see the GPU in the device manager.
-
Install Parsec and configure as host. For each thin client (mini-pc or laptop) login into VM and then:
- Download from parsec.app
- Open and login to parsec. (use separate accounts if you want to separate which VMs each thin client can access)
- In Parsec settings set it to use at least 50 Mbps bandwidth (max available in free version) and use client resolution
- If you have no OS on your client yet : install OS. I used Windows 11.
- Install Parsec on your thin clients
- Login to your VM via Parsec
Install some games or GPU heavy apps and see how it goes.
You can view some stats (no GPU stats) in the proxmox node > Summary

Wake-on-LAN (WoL) is a networking standard that allows a computer to be turned on or woken from a low-power state by a special network message called a "magic packet". To use it, the target computer's motherboard and network adapter must support WoL, and the computer must remain connected to a power source, even when shut down. The feature must also be enabled in the computer's BIOS/UEFI and the network adapter's settings.
-
Enable WoL
- from BIOS. Depending on your Motherboard enter BIOS and:
- enable the option like
Power On By PCI-E / PCI - and disable
ErP Ready(this one cuts power to NIC when server stopped)
- enable the option like
- in proxmox linux (if not already):
ethtool <your-nic>You should seeSupports Wake-on: pumbgWake-on: gif not :- edit
nano /etc/network/interfacesand add these 2 lines under your interface<your nic>:post-up /usr/sbin/ethtool -s eno1 wol gpost-down /usr/sbin/ethtool -s eno1 wol g
- edit
- from BIOS. Depending on your Motherboard enter BIOS and:
-
Use a WoL client
- Windows
- GUI
- From MS Store search for any WoL or MagicPacket client e.g. https://apps.microsoft.com/detail/9wzdncrcw1mx (tested by me on Windows 10/11)
- https://github.com/basildane/WakeOnLAN/releases/tag/2.12.4 (tested by me on Win 10)
- PowerShell
- https://gist.github.com/alimbada/4949168
- You can make a shortcut in windows
- GUI
- Linux
- GUI
- https://github.com/muflone/gwakeonlan/ (also from App Center) (tested by me on Ubuntu 24)
- Ampare Wake on LAN (from App Center) (did not open on my Ubuntu also size too big ~109MB)
- Terminal
- wakeonlan (tested by me on Ubuntu 24)
sudo apt install wakeonlanwakeonlan <mac address of the server>
- wakeonlan (tested by me on Ubuntu 24)
- GUI
- Windows
This is for basic controls and won't prevent 100% kids to "misbehave" or accidentally view/access something unrelated for their age. You should actively check on them and discuss these matters as you do with any topic in a family. If it makes the kids a little bit safer - do it!
- Create a family on Microsoft Safety
- Add all family members
- Configure for each the security needed (e.g. allowed gaming time, blocked apps)
- On the Windows thin client and same for VMs:
- sign in with your parent account (it should be the Admin) and set a PIN for it. Do not share it with the kids (otherwise it's a useless setup and you can just set the kid as Admin).
- Go to Windows Settings > Accounts > Family > Select the family members that can log in. Do not add separate accounts in another way as it won't let you manage them through MS Family Safety app!
- Sign out and sign in to the child account. It will ask to create a PIN - use another PIN and share with the child or let the kid create it's own.
- On the Windows thin client have nothing but
- For browsing safety use Edge and log in with child account. Block installation of other apps without your consent or PIN this way they can't install other browsers where they are not signed in with their user.
- Install the Family Safety app on your smartphone or use the web page above to manage or view security risks, add time etc.
- For YouTube
- Create a family on Google Account > People & sharing > Your Family on Google or visit Google Families Homepage and click on Get Started.
- Each child gets a google account and you as a parent manage the family. You can add spouse as well as family manager.
- Configure for each child the safety settings.
- In the Edge log them into their Google account and visit YouTube and make sure it's logged in.
- (Optionally) Install an add block extension for Edge
- (Optionally) Install an YouTube layout changing extension for Edge (e.g. Enhancer for YouTube) and remove Shorts (I hate those things and think they are not good for anyone and more so for the kids)
For generic safety, if your router supports it - enable child profiles for each VM and the thin client device. On a Fritz!Box it is located under Internet>Filter>Child Security. I also created my own list of websites to be blocked in addition to the already installed and managed by the German Government (BPjM-Module from BzKJ).
(WIP - details of proxmox templates or repo for automation. What each do and what are the parameters/configuration etc.)
(WIP)
Buy me and my kids some tea and get gratitude and private support from us :)
Test setup :
- same game and version running actively (someone is playing it stressing the GPU at max possibility) on 2 VMs in parallel (at the same time)
- maximum graphic quality in game settings
- FHD / 1080p
- One Monitor per thin client
- Where you see host and client metric it means that host is the server and client is the thin client. For FPS you just take the lowest value from these 2 as that is the bottleneck.
Parsec limits FPS to 60
One VM summary/load during the game tests, hour (maximum):

Server summary/load during the game tests, hour (maximum):

- lag - none
- FPS - 60
- lag - none
- FPS - 60
In some mods with JAVA with Curseforge it jitters when moving but that I think is not from the proxBi (this guide) setup.
- lag - none
- FPS host - 33 (30.06ms per frame)
- FPS client - 191 (5.21ms per frame)
- lag - critical, playable only on Low settings. However, Naval battle and any tutorial works on highest settings with no lag.
- FPS - 5
- Anti Cheat - OK
- lag - N/A
- FPS - N/A
- Anti Cheat - KO
- lag - N/A
- FPS - N/A
- Anti Cheat - KO
- lag - none
- FPS host - 62 (15.93ms per frame)
- FPS client - 114 (8.74ms per frame)
- Anti Cheat - OK
TBD
TBD
TBD
- lag - TBD
- FPS - TBD
- lag - TBD
- FPS - TBD
This is how our server looks like.

- MB: ASUS TUF GAMING B650-PLUS Mainboard Socket AMD AM5 - this one has 2 PCIE slots , one with PCI5 x16 and one PCI4 x4 . Therefore be careful what GPU you load into it as the second one might get capped. Or buy another MB that supports multiple PICE at x16.
- CPU: AMD Ryzen 9 7900 12 Cores 24 Threads
- RAM: Patriot Viper Xtreme 5 DDR5 RAM 32GB (2X16GB) 6000MT/s CL30
- GPU: 2 x Nvidia RTX 2060 6GB (bought used)
- Storage:
- SSD (for proxmox/host OS) - 256GB (had one from a laptop)
- NVME (for VMs) - 1TB Samsung 990 EVO Plus
- PSU: Thermaltake Toughpower GT 850W
- Case: NZXT H7 Flow
Mini PC (bought used ones)
- MB:
- CPU: Intel 6200U 2.3GHz (recommend something newer that supports Win11)
- RAM: 8GB
- GPU: Intel HD 5500 4GB (integrated in the CPU)
- Storage:
- SSD: 256GB
- Network: Ethernet 1Gbps
- Monitor: FHD 24"
- OS: Windows 11 Home
Here are some examples of mini-PCs that should work (I did not test them just matched the specs and watched for cost, make sure it works with your Monitor and other setup before buying! Some are refurbished):
- HP 18 cm Silent Mini PC Business Office Multimedia Computer | Intel®Pentium® 4400T 2x2.90GHz | 8GB DDR4 | 256GB SSD | USB3 | Windows 11 Prof
- Lenovo Mini PC Desktop Computer ThinkCentre M93p USDT Tiny Intel Core i5 240GB SSD 8GB Windows 11 Pro
- Fujitsu Fast Mini PC with Intel Quad Core Silent Desktop Computer + Multimedia Calculator up to 2.8 GHz 8GB DDR4 RAM 128GB SSD Including Win 11 Pro
*Links have affiliate id that bring me some commission in case you purchase.


