Installing Windows 11 Pro on Vultr

This article aims to install Windows 11 Pro on Vultr. This can be convenient if you do not want a server OS on your VPS, want to save on paying for the Windows license, or want to use the VPS as one of your daily drivers
¯\_(ツ)_/¯.

Note: Windows by default doesn’t include VirtIO drivers (File System Drivers) so, we will have to build a custom Windows 11 ISO.

Building a Windows 11 ISO

To make our life easier, we will get a temporary VPS with Ubuntu installed to build our ISO there and upload it to our Vultr ISO Library.

Note: You can also build it on your own PC and upload it.

Temporary server for building ISO

To get started, you have to Deploy a new Ubuntu server (temporarily) with at least 25GB SSD; I chose a cloud compute server with 25 GB NVMe SSD. Also, disable auto backups because it is not needed.

Once your server is active, connect to it via SSH.

Downloading ISOs

We require two ISOs, one being VirtIO ISO, and the other being Windows 11 ISO from Microsoft.

To download the VirtIO ISO onto the server, run the following command.

curl https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/virtio-win-0.1.229-1/virtio-win-0.1.229.iso -o virtio.iso
Downloading the VirtIO iso

Next up, we will need to get the download link for Windows 11 iso. To get it visit this page and follow the screenshots below.

Note: You need to be on the desktop for this.

download selection

As shown in the screenshot below, click on the dropdown and click on the Windows 11 for x64 devices selection, then click on the Download button.

select download
Language Selection

Select your preferred language on the next option and click on the confirm button.

select the language
getting the link

Once you click on confirm, Microsoft will validate your request and then, you will have a button called 64-bit Download as in the screenshot below. Right-click on it and copy the link to your clipboard.

download button

Now, go back to the SSH Terminal and type in curl and paste the link you just copied inside double quotation marks (” “) followed by -o win11.iso as shown in the example below, and run it.

# example

curl "https://software.download.prss.microsoft.com/dbazure/Win11_22H2_English_x64v1.iso?t=ec0529ec-90f3-4efb-95e9-525c2d089517&e=1677314402&h=c5930f233a68fba4e543478277a4724712718fb913646a999de1bdf6ed84c635" -o win11.iso

This will download the iso directly to the server with the name “win11.iso”.

downloading windows 11 iso

Once downloaded, now install the required programs for building ISO.

For the sake of simplicity, we will use a VNC connection to get a graphical interface on the server and use PowerISO from flatpak.

Note: PowerISO is a paid/freeware for use on Windows but on Linux, it’s totally free (as of writing this article).

Installing and setting up required programs

Execute the following command to install the required programs.

sudo apt install -y tightvncserver flatpak nginx gnome-software-plugin-flatpak

We installed
TightVNC Server for VNC Connections
– Flatpak to install PowerISO
Nginx for transferring ISO

Once it completes installing, run the following command to set up the VNC server.

vncserver :1

Once you run the command, it will ask you to set the password. Put whatever password you prefer, and type in “N”, when it prompts you for a view-only password.

setting up VNC

Now, run the following command to install PowerISO from Flatpak.

flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
flatpak install flathub com.poweriso.PowerISO

Type in “Y” when prompted.

installing PowerISO

Now, we are done with the installations and need to open the firewall port to access our VNC. To do this, execute the following command.

ufw allow 5901

Now, you can connect to the VNC server using any VNC Client. I used Real VNC Viewer.

Put in the server IP address followed by the port to connect to the VNC server as shown in the example below.

example connection

Click continue when prompted about an Unencrypted connection.

unencrypted connection prompt

Put in the VNC Credentials set during the installation and click on Ok.

password prompt

Modifying ISO Contents

Running apps on VNC

Run the following command in the SSH terminal.

export DISPLAY=:1

The command above ensures that the programs we run start up in DISPLAY number 1. If you lost connection between the sessions when you ran the commands, you will have to run this command again.

starting PowerISO

Run the following command in the SSH Terminal to start PowerISO on VNC Display.

flatpak run com.poweriso.PowerISO &
Mounting VirtIO ISO

To copy the drivers from the VirtIO ISO file, we will have to mount it first so that we can copy the essential files. Make sure you are in the right directory with the iso before running the following commands.

mkdir /tmp/virtio
mount -o loop virtio.iso /tmp/virtio

Running this command will mount the iso into the /tmp/virtio directory.

copying drivers from virtio iso

Run the following commands to copy the entire drivers into the current working directory (/root).

Note: We are copying everything because it will be easier for us later incase we need a driver. Eg: when we need a networking driver

cp -r /tmp/virtio /root/

Now, go back to the VNC Client and click on “Open”.

open button

A file manager will open up. In there, select win11.iso we downloaded earlier and click on “open“.

file manager selection

It will show the file contents of the Windows 11 ISO. Now, right-click on the right part of the screen and click on “New Folder” and name it “Drivers“.

new folder context menu
folder created

Now, double-click on the Drivers folder and click on the “Add” button.

clicking add in Drivers folder

It will open the file manager, click on “Computer” in the left-most panel and click on “root“, and inside it click on the virtio directory and click on open.

root > virtio > open

It will place the virtio folder in the Drivers folder in the ISO.

Now, click on the “Save” button and click on the “yes” button when prompted about overwriting.

overwrite prompt

The Write process should start.

write process
moving to web folder for download

Once complete, go back to your terminal and move the iso into the web folder using the following command.

mv w11.iso /var/www/html
moved windows 11 iso to the web folder
opening the HTTP port

Now, open port 80 to allow HTTP connections to the server. Run the following command to open port 80.

ufw allow 80
ufw opened port

Now, the ISO is ready to be uploaded to the Vultr ISO Library.

Uploading ISO

To upload the ISO, navigate to https://my.vultr.com/iso/ and click on “Add ISO” button.

add iso interface

You will be redirected to the page as shown in the screenshot below.

upload iso page

In the remote URL field, type in http:// followed by your temporary instance IP, followed by a slash ( / ) and then win11.iso. As shown in the example below.

# Example
http://45.76.212.197/win11.iso

Hit upload after you put in the URL.

URL Example

After you hit upload, the Vultr servers will start downloading the ISO and show the download percentage as shown in the screenshot below.

Downloading ISO

After it completes downloading and shows up as available, feel free to delete the temporary instance.

Windows 11 iso after its completed downloading on vultr iso library

Installing Windows 11 Pro

Installing the ISO is straightforward as how you deploy any Vultr instance.

Deploying Server

Click on Deploy > New Server and select your Server Type and Location. In the “Server Image” section, click on the “Upload ISO” tab.

server image

In the “Upload ISO” tab, select w11.iso and continue with selecting your server size and other options relevant to you.

selecting windows 11 iso

Deploy your server when ready.

deploying server

Verifying the ISO

Once it shows up as “Running“, click on the instance.

running instance

On the instance page, click on the “Settings” tab.

settings tab

In the Settings tab, click on the “Custom ISO” option.

custom iso option

If it shows up as Mounting, wait for a few minutes before refreshing the page.

current iso mounting message

Once the Current ISO shows up as win11.iso, proceed to the next step.

mounted iso

Connecting to the Instance

Click on the Console button to connect to the instance.

After clicking, you will see the Windows Installation screen.

Windows 11 Installation screen

Bypassing the Windows 11 requirements

By default, Windows 11 wouldn’t want to install because it doesn’t meet the “requirements”. To bypass this, click SHIFT + F10 at the same time to open the command prompt.

opened command prompt

In the command prompt, type in regedit to open the Registry Editor and navigate to HKEY_LOCAL_MACHINE > SYSTEM > SETUP.

Registry

In there, right-click anywhere on the white space on the right, and create a New Key named LabConfig.

New Key

In the LabConfig Key, create the following DWORD (32-bit Values). First One Named, BypassTPMCheck with the value of 1 and the other one named BypassSecureBootCheck with the value of 1.

Note (for noobs of regedit): Double-click the key you just made to change the value.

regedit with the values

Starting the installation

Once you set the values, close both windows and click on the “Next” button on Windows Setup.

Click on Install now on the next window.

install now

Insert the product key if you have a spare one. Else, click on “I don’t have a product key“.

activate windows page

Select Windows 11 Pro when it asks you to choose the Version of the OS and click on Next.

Windows 11 Pro selection

Accept the Microsoft Terms and proceed to the next screen.

Microsoft Terms

When it asks you for the type of installation, select Custom (Advanced) install.

select advanced

In the next screen click on the Load Driver option.

load driver option

On the prompt, click on Browse.

browse prompt

On the next prompt, click on CD Drive D.

cd drive d

In the drive, navigate to Drivers > virtio > amd64 > w11 and click on the Ok button.

browse for folder prompt

Select Next on the driver installation screen.

driver installation screen
installing drivers

After the driver installs, you should see the Drive selection screen. Feel free to partition Windows to your liking.

Select drive

Once you are done, click on next. The Windows Installation should start and restart automatically. You can sit back and relax and wait for it to be done.

windows installation screen

On reboot, if it asks you to press any key to boot from the live CD or DVD, don’t click on anything. It will automatically boot from the SSD.

press any key to boot screen

Windows should do all its shenanigans and install all kinds of stuff it needs.

Windows Install

After it’s done, you should be presented with the OOBE.

OOBE
OOBE

Bypassing Microsoft Account Sign-in (required)

By default, the Network drivers are not installed and Microsoft being the company they are won’t let you proceed without the internet. To bypass this, press SHIFT + F10 and type in OOBE\BYPASSNRO.

After executing the command, it should reboot Windows.

rebooting

Now, you can proceed with installing Windows as you would on any other machine.

region
KBD layout
second KBD Layout

On the next screen, you have to click on “I don’t have Internet“. (If we hadn’t executed the command earlier this option wouldn’t be present.)

connect to network

Click on “Continue with limited setup“.

continue with a limited setup
name
password
“Privacy” settings

After this screen, you will get into the desktop.

OOBE
Desktop

Installing Network Drivers

To install network drivers, open Windows Explorer and go to the CD drive.

Cd drive

Go inside Drivers > virtio and run virtio-win-gt-x64.

Hit Next, Next, and Accept the license terms.

license terms

On the Custom Setup screen, select Network and hit Next.

driver install

Hit install.

install
installing

Once installed, you should have a working internet connection.

Now, you have the world with you, you can install anything you want and access anything you need 😉

Setting up RDP (Recommended) (Optional)

It is not necessary, as you can always use the Vultr Console to connect to the VPS but feel free to set up RDP for easier connection from the tutorial below.

https://support.microsoft.com/en-us/windows/how-to-use-remote-desktop-5fe128d5-8fb1-7a23-3b8a-41e636865e8c

Complete ✅

That’s all needed to install Windows 11 Pro on Vultr. You can go ahead and unmount the ISO from the instance if you wish to. You can give some feedback in the comments, if you wish to.