In this blog, I gonna 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 cheap. A 4GB RAM, 80GB SSD machine, costs about 24USD per month. While other platforms usually cost about 50USD.
Vultr provides VNC connection
When I was using Azure, I can't get a VNC connection. This means that sometimes I blocked myself using Firewall, and I can never get a chance to come back. The only choice left seems to be reimaging the server.
While Vultr provides VNC allows you to debug\fix\reimage your server with the last chance. And our solution to reimage Vultr is based on the VNC connection (You can't have RDP ready while installing Windows)
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
As for business admins, desktop computing on the cloud provides the option to unify the management of all employee's work environments and allows them to work anywhere, on any device, with any unified 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 from Vultr directly. For that costs a lot of Windows license fees. Since you may already have the Windows 11 or Windows Server license, to avoid paying it again, you can use Vultr's custom ISO feature, to buy a raw server with OS, and install an OS on your own.
With your own OS ready, you can use diskpart
to manage disks. And you can download new OS images, and use dism
to unzip them. And you can use bcdedit
to modify the boot configuration so you can boot your customized OS.
Don't forget, Windows doesn't natively support Vultr's driver. You also need to inject those necessary drivers to your OS.
Step 1 - Build your own Windows Server ISO file (option)
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
Buy a new Windows server instance. On the location near you.
If you have Step 1 ready, you need to create it with your own ISO.
If you skipped step 1, you need to buy a new Windows Server 2022 with desktop experience from Vultr directly. This means you need to pay for your Windows Server! Even you install Windows 11 on it.
Select the one With Desktop Experience!
Buy a server with at least 4GB RAM and a 70GB SSD. Or you will have a really bad Windows 11 desktop experience!
Step 3 - Download aria2 and Windows 11 ISO on the new server
First, log in to your server. With RDP or VNC.
Open browser to download aria2.
Release aria2 1.36.0 · aria2/aria2 · GitHub
Do this on your remote server, not your local box!
Unzip it after downloading:
After unzipping, open a PowerShell 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 immediatly.
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 necessary drivers first:
https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win.iso
Download the iso on your server! Not your local box!
Double click to mount it as E.
Now open a new PowerShell session with Admin.
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. Don't use your terminal to change the directory to the mounted folder! We need to make sure dism can successfully delete those mounted file or there will be an error.
After unmounting, double-check the wim
file's modification time is around 2 minutes earlier from now.
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 disk:
Use max shrink value.
And create a new part for the shrinked 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 unzip 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 the install.wim to E. It costs 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 goes to OOBE page:
If you see a bluescreen here, usually is 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 as Default. Because you need to first get a clean Windows 11 image. Leave everything as default. And change those later. So you can build new Windows 11 Clooud PCs later.
Give it a strong password! Do NOT skip this step! The password needs to be used if you want to use RDP.
Wait for about 3 minutes and you can see desktop.
And success!
Now enable RDP service. Go to system settings.
Enable Remote Desktop.
And now, try to connect with RDP!
Big success!
Now you have your own cloud PC now!
Step 10 - Delete old Windows Server
Since you have new Windows 11 Cloud PC ready, you can delete the old Windows Server now.
Directly format the disk D is ok.
And it is suggested to change your remote desktop port away 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!
This blog post provides a detailed, step-by-step guide on how to install Windows 11 on a Vultr cloud machine. The author has done an excellent job in presenting the information in a clear and organized manner, which makes it easy for readers to follow and understand. The use of screenshots throughout the post further enhances the clarity of the instructions.
The core idea of this blog post is to enable users to create their own cloud PC with Windows 11, which can be accessed from anywhere and any device. This idea is both innovative and useful, especially in today's world where remote access and cloud-based services are becoming increasingly important.
One of the highlights of this post is the author's emphasis on the importance of security when setting up the cloud PC. The author advises users to create a strong password for their offline account and to change the default remote desktop port away from 3389, which is a commonly targeted port by attackers.
However, there are a few areas that could be improved. Firstly, the blog post could benefit from a brief introduction, explaining the purpose and benefits of installing Windows 11 on a cloud machine. This would help set the context for readers and give them a better understanding of why they might want to follow these instructions.
Secondly, the author could provide some information on potential issues or limitations that users might encounter during the installation process, such as hardware requirements or compatibility issues. This would help users to be better prepared and to troubleshoot any problems that may arise.
Lastly, it would be helpful if the author could provide some suggestions on how to optimize the performance of the cloud PC, such as adjusting settings or installing specific software. This would further enhance the value of the blog post and provide readers with a more comprehensive guide on how to get the most out of their cloud PC.
Overall, this is an informative and well-written blog post that provides a valuable resource for users looking to set up a cloud-based Windows 11 machine. With some minor improvements, it could become an even more comprehensive and helpful guide for readers.
nice work! can we ship the snapshot on vultr to other cloud platform like azure?