In this post, learn how to build a Windows Image for VPS Deployment from the Microsoft Original ISOs. The build process occurs on DigitalOcean Droplet using QEMU. This process should work with all versions of Windows eg. Windows Server, Windows 10, Window 11 etc
Digitalocean $200 credit
In today’s cloud-first world, deploying a customized Windows VPS is more accessible than ever. However, most cloud platforms — including DigitalOcean — do not officially offer Windows as a pre-configured option for droplets. This creates a challenge for users who need a Windows environment to run specific applications or services.
Creating a custom Windows image allows you to quickly deploy multiple VPS instances without reinstalling Windows each time. It saves time, ensures consistency, and gives you full control over your server environment.
Why Use DigitalOcean?
- Beginner-friendly interface that simplifies server setup.
- Affordable pricing — create your own Windows droplet starting at just $5/month.
- Reliable infrastructure with global data centers.
- Support for custom images, allowing you to upload and deploy your own Windows setup.
Who Is This Guide For?
- Anyone looking to deploy a Windows VPS on DigitalOcean.
- Developers and IT professionals who need a Windows-based testing or production environment.
- Businesses that want to create a standardized Windows image for multiple deployments.
- Tech-savvy individuals looking to save costs by setting up Windows manually on the cloud.
Prerequisites
Before you begin creating a custom Windows image for VPS deployment on DigitalOcean, make sure you have the following tools and resources prepared:
1. DigitalOcean Account
You’ll need an active DigitalOcean account with billing enabled in order to create droplets and upload custom images.
2. Windows ISO File
Download the official ISO file for one of the following Windows versions:
- Windows 10
- Windows 11
- Windows Server (2016 / 2019 / 2022)
You can get ISO files directly from Microsoft’s website or use the Windows Media Creation Tool.
3. Basic Terminal Skills
Familiarity with basic Linux commands is helpful, as you’ll need to:
- Upload ISO files to the droplet
- Use SSH to connect to your droplet
- Execute commands to run virtualization tools like QEMU or KVM
4. Tools You’ll Need
- SSH Client – to connect to your Linux droplet (e.g., PuTTY, Termius, or your terminal)
- RDP or VNC Viewer – for installing and configuring Windows inside the virtual environment
- VirtIO Drivers – sometimes required for network or disk drivers during the Windows installation process (especially for KVM/QEMU setups)
How to Create a Windows Image for VPS Deployment, using a DigitalOcean Droplet
Step 1. Get Ubuntu 22.04 VPS
Create DigitalOcean Droplet using
Ubuntu 22.04
4GB of Memory
root example password f75q21w9Gx
Step 2. In web console : Install XFCE Desktop, XRDP & QEMU
apt-get update && apt-get upgrade -y
apt-get install xfce4 firefox xrdp gzip -y
apt-get install qemu qemu-utils qemu-system-x86 -y
echo xfce4-session >~/.xsession
Then reboot
Step 3. In RDP : Download Windows & Virtio Drivers ISOs
get virtio iso – google “windows download virtio drivers”
get windows iso – google “windows iso download”
Fill in qemu-system-x86_64 statement lower down, with names of ISO files
reboot
Step 4. In Web Console : Start Windows Install in QEMU
qemu-img create -f raw harddisk.raw 24G
qemu-system-x86_64 \
-m 3000M \
-cpu host \
-enable-kvm \
-boot order=d \
-usbdevice tablet \
-drive file=harddisk.raw,format=raw,if=virtio \
-drive file=/root/Downloads/{downloaded-windows}.iso,media=cdrom \
-drive file=/root/Downloads/{downloaded virtio}.iso,media=cdrom \
-vnc :55555
via a VNC Viewer eg. RealVNC {Droplet IP Address}:61455
(Note:5900+55555=61455)
Step 5. In VNC : Install & Configure Windows
On VirtIO CD Select {windows version}\amd64 folder for ;
a) Balloon – VirtIO Balloon Driver
b) NetKVM – Red Hat Virtio Ethernet Adapter
c) vioRNG – Random Number Generator
d) VioSCSI – Red Hat Virtio SCSI Pass-through contoller
e) VioStor – Red Hat Virtio ScSI Controller
Windows user password eg. G6t4r3e2i9m8
Configuration – When on Desktop :
1) Enable Remote Desktop
2) Change RDP Port from 3389 to 19529
Start the registry editor. …
In REGEDIT Navigate to the following registry subkey: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp.
Find PortNumber.
Click Edit, Modify, and then click Decimal.
Type the new port number, and then click OK.
3) In [Windows Defender Firewall with Advanced Security]
Add New [inbound rule]
to Allow TCP Port 19529 thru Domain, Private & Public Profiles
called “Rule 19529 for RDP”
Disable ALL other INCOMMING RULES
4) IF Current User is called “Administrator”, rename to “WinAdmin”
4) Windows Update & restart
5) Clean up C Drive
6) Finally Shut Down
Step 6. In web Console : Gzip Windows Harddisk
ls -la
df
dd if=harddisk.raw status=progress | gzip | dd of=win_[winversion].gz
(Wait until finished in about 15 minutes)
ls -l
rm harddisk.raw
reboot
Step 7. – Example deploy to a VPS Provider
In the Destination VM :
lsblk
sudo ssh root@[IP address of Droplet] dd if=win_[winversion].gz | gunzip | sudo dd of=/dev/[sda/vda] status=progress