Windows 10 Free Apps

How to Create a Windows VPS Image on DigitalOcean (Step-by-Step Guide)

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?

Who Is This Guide For?

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:

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:

4. Tools You’ll Need

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

How to Create a Windows VPS Image on DigitalOcean (Step-by-Step Guide)
Rate this post