In this blog, I will draft a solution for you to install any Windows OS on the Vultr cloud server.
Before starting
Before starting, there are several points about why I choose Vultr and why you need to build a Windows 11 image on Vultr.
https://www.vultr.com/?ref=9089022-8H
(If you register Vultr in the link above, you will get 100$ for free. Why?)
Vultr is cheap
Compared with other cloud service providers, Vultr is affordable. A machine with 4GB RAM and 80GB SSD costs about 24 USD per month, while other platforms typically cost around 50 USD.
Vultr provides VNC connection
When I was using Azure, I couldn't establish a VNC connection. This meant that if I accidentally blocked myself using the firewall, I had no way to regain access. The only option left seemed to be reimaging the server.
In contrast, Vultr provides VNC, allowing you to debug, fix, or reimage your server as a last resort. Our solution for reimaging Vultr instances is based on the VNC connection (since RDP is not yet available during the Windows installation process).
Desktop Experience
It's really a bad idea that you can't install Desktop Experience on a Windows server. Sometimes I just want to use something like Winget or Windows Terminal, I have no option on Windows Server.
Sometimes I need more desktop experience to do some experiments like installing some unknown software. Windows server provides a real bad experience for that.
Also, this provides me an option to run Windows 11 apps with an Android phone.
Use it in business
For business administrators, cloud-based desktop computing offers the option to unify the management of all employee work environments, enabling them to work from anywhere, on any device, with a consistent experience.
Allows you to code on iPad\Chromebook
While I have a Chromebook, I really wish I can code on it. Currently, the only solution is to use GitHub codespace. But what I really need is a real environment that allows me to see my built stuff.
With a Windows 11 Cloud PC, you can focus on devices as a remote desktop client. This means that you can turn your old iPad into a development endpoint.
Brief context
To save money, we shouldn't buy a Windows Server directly from Vultr. That option incurs significant Windows license fees. Since you may already have a Windows 11 or Windows Server license, you can use Vultr's custom ISO feature to purchase a bare metal server without an OS and install your own operating system to avoid paying for the license again.
Once your OS is ready, you can use diskpart to manage disks. You can also download new OS images and use dism to extract them. Additionally, you can use bcdedit to modify the boot configuration so that you can boot your customized OS.
Remember that Windows does not natively support Vultr's drivers. You must inject the necessary drivers into your OS.
Step 1 - Build your own Windows Server ISO file (optional)
This step is optional. If you don't have the time, you can directly skip Step 1 and use Vultr's official Windows Server 2022 Image.
This will save the license fee of Windows Server. Vultr will treat your server as Custom OS instead of Windows.
And don't forget, due to compliance issues, you always need to buy Windows 11 on your own. And after installing Windows 11 on Vultr, you always need to activate it.
Follow the instructions here to create your Windows Server ISO: Windows Custom ISO with VirtIO Drivers - Vultr.com
Step 2 - Create a new Windows Server 2022 machine
Purchase a new Windows server instance in a nearby location.

If you have completed Step 1, you need to create the instance using your own ISO.

If you skipped Step 1, you must purchase a new Windows Server 2022 with Desktop Experience directly from Vultr. This means you will be charged for the Windows Server license! This applies even if you install Windows 11 on it.
Select the option with Desktop Experience!

Purchase a server with at least 4GB of RAM and a 70GB SSD. Otherwise, you will have a very poor Windows 11 desktop experience!

Step 3 - Download aria2 and Windows 11 ISO on the new server
First, log in to your server using RDP or VNC.

Open your browser to download aria2.
Release aria2 1.36.0 · aria2/aria2 · GitHub
Perform these steps on your remote server, not on your local machine!

Extract the file after downloading it:

After extracting, open a PowerShell window here:

Run the following command in the PowerShell window:
Start-Process powershell {
Invoke-Expression ((New-Object System.Net.WebClient).DownloadString('https://githubcontent.aiurs.co/pbatard/Fido/master/Fido.ps1'))
}

Now download the latest Windows 11 x64.

Copy the download link, and cancel the download immediately.

When you have the latest Windows 11 download link, download it with aria2 now.
Run command:
.\aria2c.exe "https://your-download-link"

Using aria2c to download is way faster than a browser.
After downloading, you can see the iso file.

Step 4 - Get the install.wim file
The only file necessary for installation is the install.wim file.
Now in this step, we need to get it.
First, double-click the ISO to mount it.

Go to the source folder. Find the install.wim file. Copy it to C:\install.wim

Copy it to C:\\install.wim.

The old ISO file is useless now. You can unmount the ISO and delete the ISO.

Delete those ISO and aria2c files. Those are useless now.
You must delete those files to save disk space! We need to shrink the disk later!

Step 5 - Inject necessary drivers
Download the necessary drivers first:
https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win.iso
Download the ISO on your server! Not on your local machine!

Double-click to mount it as drive E.

Now, open a new PowerShell session with administrator privileges.
Run the following command to get your preferred system index.
dism /Get-ImageInfo /imagefile:"C:\install.wim"

For example, I want to install Windows 11 Pro. Then I need to remember the index: 6.
Now run the following commands to mount the system.
Remember: The index number should be your preferred OS index! I use 6 here as an example.
cd C:\
mkdir win11_temp
Dism /Mount-Image /ImageFile:C:\install.wim /MountDir:C:\win11_temp /Index:6

After mounting, don't touch those mounted files!
Inject the necessary drivers now. (You just mounted the Vultr drivers as E:\)
Run the following command:
Dism /Image:C:\win11_temp /Add-Driver /Driver:E:\ /Recurse

You may see some errors. Those are not necessary. Just ignore them. Most of the drivers are installed.
Now, commit the changes to the wim file.
Dism /Unmount-Image /MountDir:C:\win11_temp /Commit
When running the command, close all File Explorer windows. Do not use your terminal to change the directory to the mounted folder! We must ensure that dism can successfully delete those mounted files; otherwise, an error will occur.

After unmounting, double-check that the modification time of the wim file is approximately 2 minutes prior to the current time.

Step 6 - Prepare for Windows 11 installation.
Now, we have our installation wim file. We need to prepare a new clean drive for Windows 11 to install.
First, delete all downloaded files to save disk space. Go to disk management.

Shrink the C drive:

Use the maximum shrink value.

And create a new partition for the shrunk disk space:



And now you have a clean E drive. We will install Windows 11 here.

Step 7 - Unzip Windows 11
Now, time to Unzip Windows. First, start a new PowerShell session and go to C:\

Run the following command to format disk E:
Format-Volume -DriveLetter E -FileSystem NTFS

Now extract the install.wim to E:.
Do you still remember the index of your OS? I use 6 here as an example. You can check that with
dism /Get-ImageInfo /imagefile:"C:\install.wim"
When you have the index, unzip it now:
dism /apply-image /imagefile:"C:\install.wim" /index:"6" /ApplyDir:"E:\"

This step will install install.wim to E:. It takes about 3 minutes.
Step 8 - Setup Windows 11 boot configuration
Run the following PowerShell to create a new boot entry:
$created = bcdedit /create /d "Windows 11" /application osloader
Run the following PowerShell to get the OS ID:
$osID = $created | Select-String -Pattern '{[-0-9A-F]+?}' -AllMatches | Select-Object -ExpandProperty Matches | Select-Object -ExpandProperty Value

Since you have the OSID, run the following PowerShell:
$diskMount = "E"
bcdedit /set "$osID" device "partition=$($diskMount):"
bcdedit /set "$osID" path "\WINDOWS\system32\winload.exe"
bcdedit /set "$osID" systemroot "\WINDOWS"
bcdedit /set "$osID" osdevice "partition=$($diskMount):"
bcdedit /set "$osID" locale "en-US"
bcdedit /set "$osID" inherit "{bootloadersettings}"
bcdedit /set "$osID" nx "OptIn"
bcdedit /set "$osID" bootmenupolicy "Standard"
bcdedit /set "$osID" displaymessageoverride "Recovery"
bcdedit /set "$osID" recoveryenabled "Yes"
bcdedit /set "$osID" isolatedcontext "Yes"
bcdedit /set "$osID" flightsigning "Yes"
bcdedit /set "$osID" allowedinmemorysettings "0x15000075"
bcdedit /displayorder "$osID" /addlast
bcdedit /set "{bootmgr}" default "$osID"
After running, you may see some success messages. And you can run bcdedit to verify your settings.

Now reboot directly.

After rebooting, VNC is the only option to connect to the server.
Step 9 - Finish OOBE
Click "View console" to connect via VNC:

If all steps are correct, you will see Windows 11 booting and go to the OOBE page:

If you see a bluescreen here, it is usually because there is something wrong with the drivers. You need to start over again to install all necessary drivers.

We need to bypass Microsoft's live account sign-in. Because once you sign in with your live account, you won't be able to use the remote desktop!
Name your PC first.

Select personal account:

And then select sign in options:

Select offline account:

Name it Default. You need to first obtain a clean Windows 11 image. Leave everything as default. You can change these settings later. This will allow you to build new Windows 11 Cloud PCs later.

Set a strong password! Do NOT skip this step! This password is required if you want to use RDP.

Wait for about 3 minutes, and the desktop will appear.

Success!

Now, enable the RDP service. Go to system settings.

Enable Remote Desktop.

Now, try connecting via RDP!

Big success!
Now you have your own cloud PC!

Step 10 - Delete old Windows Server
Now that you have a new Windows 11 Cloud PC ready, you can delete the old Windows Server.
It is fine to directly format disk D.

It is recommended to change your Remote Desktop port from 3389.
Follow the instructions here: Change the listening port in Remote Desktop | Microsoft Docs
Step 11 - Save it, Share it!
Do make a snapshot for your new cloud PC ASAP!
And once you have the snapshot, you can create more and more cloud PCs for your family and friends. So they all could have a ready-to-use Windows 11. Anywhere can access, from any device!
Cloud PC future coming!
Would this go against terms and conditions? As of recent, it says only Windows Server custom roms are prohibited yet uploading a windows 11 iso gets rejected
nice work! can we ship the snapshot on vultr to other cloud platform like azure?
Seems no.