Running a Windows VPS can often be significantly more expensive than a Linux VPS due to licensing costs. However, with a little bit of technical work, you can convert a standard Linux KVM VPS (like Ubuntu or Debian) into a fully functional Windows 11 RDP server using a custom image.
In this tutorial, I will guide you through creating a lightweight Windows 10 image using Proxmox on your local PC and flashing it onto your Cloud VPS, then upgrade to Windows 11.
dd command. All data on the VPS will be destroyed. Make sure you have backups. Additionally, check your VPS provider’s Terms of Service regarding custom ISOs.Prerequisites
- A Local Windows PC with Proxmox installed.
- Windows 10 ISO (Download from Microsoft).
- VirtIO Drivers ISO (Download
virtio-win.isofrom Fedora/RedHat). - 7-Zip installed on your local PC.
- A Linux KVM VPS (Ubuntu recommended) with at least 60GB storage and 4GB RAM.
Phase 1: Create the Windows 10 VM
We will start by creating the “Gold Image” on your local computer.
1. Configure Proxmox
Visit Proxmox web panel and create a New Machine with the following settings:
- Name: Windows 10
- ISO Image: Select your
Win10_x64.isofile. - Edition: Windows 10 Pro
- Skip Unattended Installation: [CHECKED] (Important!)
- Hardware:
- Memory: 4096 MB (4GB) +
- Processors: 2 CPU
- Enable EFI: [CHECKED]
- Hard Disk:
- Size: 30.00 GB
- Type: VHD (Virtual Hard Disk)
- Pre-allocate: [UNCHECKED]
STOP: Do not start the VM yet. We need to tweak the settings first.
2. Advanced VM Settings
Right-click your new VM and go to Settings:
- System > Acceleration: Set Paravirtualization Interface to KVM.
- System > Motherboard:
- TPM: None
- Secure Boot: [UNCHECKED] (Disable it).
- Network > Adapter 1:
- Adapter Type: Paravirtualized Network (virtio-net).
- MAC Address: Copy the MAC address from your Cloud VPS control panel (remove the colons). This ensures your internet works immediately after migration.
Click OK to save.
Phase 2: Installation & Registry Hacks
Start the VM. When the Windows Setup screen appears, follow these steps to bypass hardware requirements.
1. Bypass TPM and Secure Boot
- On the language selection screen, press Shift + F10 to open CMD.
- Type
regeditand press Enter. - Navigate to:
HKEY_LOCAL_MACHINE\SYSTEM\Setup - Right-click on the Setup folder > New > Key. Name it
LabConfig. - Inside LabConfig, create the following DWORD (32-bit) Values and set all their values to
1:BypassTPMCheckBypassSecureBootCheckBypassCPUCheckBypassRAMCheckBypassStorageCheck
Close the Registry Editor and proceed with the installation. If you see a disk size warning, ignore it and click Next.
2. Bypass Microsoft Account (No Internet)
When you reach the “Let’s connect you to a network” screen (or Finalization):
- Press Shift + F10.
- Type the following command and press Enter:
OOBE\BYPASSNRO
The VM will restart. When it returns to the network screen, select “I don’t have internet”.
Phase 3: Driver Injection
Once you are on the Windows Desktop, shut down the VM.
- VirtualBox Settings > Storage: Remove the Windows installation ISO.
- Attach: The
virtio-win.isofile to the Optical Drive. - Add a Tiny Disk: Create a new Controller (Type: VirtIO) and add a new 100MB disk. (This forces Windows to initialize the VirtIO controller).
- Start the VM.
Install Drivers & Services
Open the CD Drive (VirtIO) inside the VM and run the virtio-win-guest-tools installer. Then, open CMD as Administrator and run:
sc config vioscsi start= boot sc config viostor start= boot
Troubleshooting: If viostor fails to configure, create a registry fix:
Open Notepad, paste the following code, and save it as fix-viostor.reg. Then run it.
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\viostor] "Type"=dword:00000001 "Start"=dword:00000000 "Group"="SCSI miniport" "ErrorControl"=dword:00000001 "ImagePath"=hex(2):73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,64,00,\ 72,00,69,00,76,00,65,00,72,00,73,00,5c,00,76,00,69,00,6f,00,73,00,74,00,6f,\ 00,72,00,2e,00,73,00,79,00,73,00,00,00 "Tag"=dword:00000020
After running the registry file, restart the VM and try the sc config command again.
Finally, enable Remote Desktop from Settings and Shutdown the VM.
Phase 4: Image Conversion & Compression
Now we convert the VirtualBox disk (`.vhd`) to a Raw image (`.img`) compatible with the VPS.
- Open PowerShell as Administrator on your local PC.
- Navigate to VirtualBox directory:
cd "C:\Program Files\Oracle\VirtualBox"
- Run the clone command (Update the path to your user name):
.\VBoxManage.exe clonehd "C:\Users\User Name\Documents\Virtual Machines\Windows 10\Windows 10.vhd" "C:\Users\User Name\Downloads\win10.img" --format RAW
Once done, use 7-Zip to compress win10.img to win10.img.gz (GZIP format). Upload this file to a direct download link (your website or FTP).
Phase 5: Flash to VPS
Login to your VPS provider panel. You should use the provider’s console.
Option A: Standard Command (If VPS is running Linux)
Connect to your console terminal and run:
cd /dev/shm wipefs -a /dev/vda dd if=/dev/zero of=/dev/vda bs=1M count=100 wget -qO- "http://yourdomain.com/win10.img.gz" | gunzip -c | dd of=/dev/vda bs=1M status=progress gdisk /dev/vda x e w Enter
Option B: Clonezilla / Recovery Mode
If your provider supports booting into Clonezilla or Rescue Mode, enter the Shell and run:
sudo su dhclient ens6 wipefs -a /dev/vda dd if=/dev/zero of=/dev/vda bs=1M count=100 curl -L -C - "http://yourdomain.com/win10.img.gz" | gunzip -c | dd of=/dev/vda bs=1M status=progress gdisk /dev/vda x e w Enter
Final Step
- Once the copy process finishes, Force Reboot your VPS from the provider’s panel.
- Wait 2-3 minutes for Windows to detect the hardware.
- Open the console and login to the Desktop, make sure the internet connectivity, then enable Remote Desktop.
- Open Remote Desktop Connection (RDP) on your local PC.
- Connect to your VPS IP Address using the credentials you created during installation.
Go to Disk Management > Right-click on the drive and click Extend Volume
If the recovery partition after C: partition, then run CMD as Administrator and do the diskpart commands:
diskpart list disk
(maybe Disk 0)
select disk 0 list partition
(partition 4 maybe the recovery partition)
select partition 4 delete partition override
Then extend the volume space
Open regedit again and do the BypassTPMCheck, BypassSecureBootCheck,etc. again.
When in the Windows 10 Desktop, download Windows 11 iso and mount it (assume the iso mount drive is D:). Then run CMD as Administrator, and command D: and press Enter
setup.exe /product server
After upgradation, Open regedit again and do the BypassTPMCheck, BypassSecureBootCheck,etc. again.
Then CMD as Administrator, command the OOBE\BYPASSNRO
Congratulations! You now have a high-performance Windows 11 VPS running on a Linux plan.
