Running Windows as a VM on Proxmox VE
Most homelabbers run Linux on Proxmox, but a Windows VM is often necessary — for Windows-only software, gaming via GPU passthrough, or running a family member's desktop remotely. Windows on KVM works well, but it requires a few steps that Linux VMs don't: VirtIO drivers, storage configuration, and activation.
Photo by ben benjamin on Unsplash
This guide covers a clean Windows 10/11 VM setup on Proxmox, from ISO download through RDP access.
Prerequisites
- Proxmox VE 8.x installed and running
- Windows 10 or 11 ISO downloaded to Proxmox storage
- VirtIO drivers ISO (downloaded separately — see below)
- At least 4GB RAM and 2 CPU cores to allocate
- 60GB+ storage (recommend 100GB for comfortable use)
Download VirtIO Drivers
Windows VMs on KVM need VirtIO drivers for near-native disk and network performance. Download the VirtIO ISO from the Fedora project:
https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win.iso
Upload it to your Proxmox ISO storage alongside your Windows ISO.
Create the VM
In the Proxmox web UI, click Create VM:
General tab:
- Name:
windows-11(or similar) - VM ID: auto-assigned
OS tab:
- ISO image: Select your Windows ISO
- Type: Microsoft Windows
- Version: 11/2022 (or 10/2019)
System tab:
- BIOS: OVMF (UEFI) — required for Windows 11; recommended for Windows 10
- Machine: q35
- SCSI Controller: VirtIO SCSI single
- ✓ Qemu Agent (check this)
- Add TPM: Yes for Windows 11 (TPM 2.0, v2.0)
- EFI Disk: add one (2MB is fine)
Disks tab:
- Bus/Device: VirtIO Block (virtio0)
- Size: 100GB (adjust as needed)
- Storage: choose your fastest storage
- Cache: Write back (for better performance; use Write through on ZFS)
- ✓ Discard (enables TRIM/thin provisioning)
CPU tab:
- Cores: 4 (adjust for your hardware)
- Type: host (best performance; use x86-64-v2-AES if migrating between hosts)
Memory tab:
- Memory: 8192 MB (8GB minimum for Windows 11 with reasonable performance)
- ✓ Ballooning (allows dynamic memory; you can disable for dedicated allocation)
Network tab:
- Bridge: vmbr0
- Model: VirtIO (paravirt)
Finish: Don't start yet.
Like what you're reading? Subscribe to HomeLab Starter — free weekly guides in your inbox.
Add the VirtIO ISO
After creating the VM, add the VirtIO drivers ISO as a second CD-ROM drive:
- Select the VM → Hardware tab
- Add → CD/DVD Drive
- Select your VirtIO ISO
This gives the Windows installer access to the drivers.
Install Windows
Start the VM and open the console. Boot from the Windows ISO and proceed with installation.
At "Where do you want to install Windows?" — you'll see no drives listed. VirtIO disk isn't recognized without drivers.
Click Load driver → Browse → navigate to virtio-win (your mounted VirtIO ISO) → vioscsi → w11 (or w10) → amd64 → OK.
Select the driver and click Next. Your VirtIO disk now appears. Select it and continue installation.
Post-Install: Install Remaining VirtIO Drivers
After Windows installs and boots, open Device Manager (Win+X → Device Manager). You'll see several unrecognized devices with yellow warning icons.
Open the VirtIO CD (usually D: or E:) and run virtio-win-gt-x64.msi to install all VirtIO drivers at once. This handles:
- Balloon driver (memory management)
- Network adapter (Red Hat VirtIO Ethernet)
- Serial port driver
- PCI device drivers
Restart after installation. All devices should now show correctly in Device Manager.
Install QEMU Guest Agent
For proper Proxmox integration (shutdown from UI, IP address reporting, live migration), install the QEMU Guest Agent:
From the VirtIO CD, run guest-agent\qemu-ga-x86_64.msi.
After installing, enable the guest agent in Proxmox:
- VM → Options → QEMU Guest Agent → check "Use QEMU Guest Agent"
With the agent running, Proxmox can report the VM's IP address and perform clean shutdowns.
Remote Desktop Access
Windows has RDP built in. Enable it:
- Settings → System → Remote Desktop → On
- Note: Windows 11 Home doesn't include RDP server (only Remote Desktop client). Use Windows 11 Pro or a VNC-based solution for Home.
From your homelab network, connect with any RDP client:
- Windows:
mstsc.exe→<vm-ip>:3389 - Linux:
remminaorfreerdp - macOS: Microsoft Remote Desktop from the App Store
For access outside your network, put RDP behind your VPN (WireGuard, Tailscale) rather than exposing port 3389 to the internet.
Windows 11 Hardware Requirements Bypass
Windows 11 requires TPM 2.0 and a CPU compatibility check. Proxmox supports virtual TPM (vTPM) natively via the TPM option in VM settings (requires swtpm package on the host).
Install swtpm on Proxmox host if not present:
apt install swtpm
Then add TPM 2.0 to your VM (Hardware → Add → TPM State, version 2.0). This satisfies Windows 11's requirement without exposing physical hardware.
Alternatively, add HKEY_LOCAL_MACHINE\SYSTEM\Setup\MoSetup → AllowUpgradesWithUnsupportedTPMOrCPU = 1 to bypass checks during upgrade.
Performance Tuning
CPU Pinning (Optional)
For workloads sensitive to CPU scheduling latency, pin the VM's vCPUs to physical cores:
# Pin VM 100 to CPU cores 4-7
qm set 100 --cpuunits 1024
# In /etc/pve/qemu-server/100.conf add:
# cpuaffinity: 4-7
Virtio-FS for File Sharing
Share a Proxmox host directory with your Windows VM using VirtioFS for better performance than Samba:
- Install
virtiofsdon the Proxmox host - Add a VirtioFS filesystem mount to the VM configuration
- In Windows, use the VirtIO-FS driver (from the VirtIO ISO) to mount it
This is faster than SMB for sharing files from your NAS or host.
GPU Passthrough for Gaming
For a dedicated gaming VM, pass through a physical GPU:
Requirements:
- Two GPUs (one for Proxmox host display, one to pass through)
- IOMMU-compatible CPU and motherboard
- Motherboard BIOS with IOMMU enabled (AMD-Vi or Intel VT-d)
Setup overview:
- Enable IOMMU in BIOS
- Add
intel_iommu=on(Intel) oramd_iommu=on(AMD) to Proxmox kernel parameters - Bind the passthrough GPU to vfio-pci driver (blacklist it from host use)
- Add PCI device to VM with "All Functions" and "ROM-BAR" enabled
- Install GPU drivers in Windows VM normally
GPU passthrough is well-documented in the Proxmox forums and community wikis. The setup is involved but results in near-native gaming performance.
For a simpler path, Parsec or Sunshine/Moonlight streaming from a single-GPU Windows VM provides excellent gaming performance over your local network without passthrough complexity.
Common Issues
VM won't start after installing drivers: Check that all VirtIO drivers installed correctly and restart. The balloon driver sometimes causes issues — disable it if you encounter memory-related crashes.
No network after install: In Device Manager, find the VirtIO network adapter and install drivers from the VirtIO ISO → NetKVM → w11 → amd64.
Windows activation: Windows licenses are tied to hardware signatures. In a VM, the "hardware" can change. Use a transferable digital license tied to your Microsoft account, or note that each reinstall may require reactivation.
RDP connection refused: Ensure Windows Firewall allows Remote Desktop (Settings → Privacy & Security → Windows Security → Firewall → Allow an app through firewall → Remote Desktop → check both boxes).
Resource Allocation Guidelines
| Use case | CPU cores | RAM | Storage |
|---|---|---|---|
| Minimal (remote desktop work) | 2 | 4GB | 60GB |
| Standard desktop use | 4 | 8GB | 100GB |
| Development workstation | 4-6 | 16GB | 150GB+ |
| Gaming (GPU passthrough) | 6-8 | 16-32GB | 250GB+ |
Start conservative and increase as needed — Proxmox lets you adjust CPU and memory with a VM shutdown.
