Windows Server 2025 on a VPS — Complete Setup Guide (2026) | OS Installer

osinstaller.cloud Guides Windows Server 2025
Complete manual guide  ·  Updated May 2026

Windows Server 2025 on a VPS — Complete Setup Guide

A complete manual walkthrough for installing Windows Server 2025 on any Ubuntu 24.04 VPS — from choosing your server and downloading the ISO right through to a live RDP session. Every command is copy-paste ready. Takes 1–3 hours depending on your experience and server speed.

1–3 hours
Intermediate skill level
Ubuntu 24.04 required
Windows Server 2025 on a VPS — Complete Setup Guide
🖥 Windows Server 2025 · Manual Installation
8GB
Minimum RAM
64GB
Recommended disk
2+
vCPU minimum
180d
Free eval period
Nov’24
Released

01Overview & What You’ll Need

This guide walks through the complete manual process of installing Windows Server 2025 on a Linux-based VPS. This is the technically involved approach — using SSH, command-line tools, and disk imaging to replace the Linux OS with Windows Server. If you’re comfortable with a terminal, it’s entirely achievable. If you’d rather not, skip to the bottom for our automated option.

Windows Server 2025 was released on 1 November 2024 and is Microsoft’s most recent server OS, based on Windows 11 24H2. It brings improved NVMe storage performance (up to 90% more IOPS), enhanced security with Credential Guard enabled by default, and better virtualisation support — making it an excellent choice for VPS deployments.

System Requirements

ComponentMinimumRecommended for VPS
Operating System (base)Ubuntu 24.04 LTSUbuntu 24.04 LTS x64 ✓
RAM8 GB16 GB for production workloads
vCPU2 vCPU (64-bit, 1.4 GHz+)4 vCPU for Desktop Experience
Disk Space60 GB SSD80–100 GB NVMe SSD
NetworkSSH access (port 22) · Static IP
SSH ClientPuTTY (Windows) or Terminal (macOS/Linux)
Windows ISOEvaluation ISO from Microsoft Evaluation Center (free 180-day eval)
This will permanently erase all data on the server

The installation process completely replaces the operating system. Every file, application, and configuration currently on your VPS will be destroyed. Take a snapshot or backup before proceeding.

02Get Your VPS

You need a VPS running Ubuntu 24.04 LTS with at least 8 GB RAM and 60 GB disk. Any major provider works — Hetzner and Contabo offer the best value for the specs Windows Server 2025 requires. If you’re new to DigitalOcean, their $200 free credit for new accounts makes it free to test for months.

New to DigitalOcean? Get $200 Free Credit

Sign up via our referral link and get $200 in free credits for 60 days — auto-applied, no coupon needed. New accounts only. Valid payment method required.

Claim $200 Free

Once your VPS is provisioned with Ubuntu 24.04, make a note of:

  • Your VPS IP address — shown in your provider dashboard
  • Root password — set during provisioning
  • Your disk device name — usually /dev/sda or /dev/vda depending on the provider

03Prepare the Server

SSH into your Ubuntu VPS as root. If you’re on Windows use PuTTY; on macOS/Linux use Terminal.

SSH into your VPS
$ ssh root@YOUR_VPS_IP

Once logged in, update the system and install required tools:

Update system & install tools
# Update package list and upgrade system root@vps:~# apt update && apt upgrade -y # Install tools needed for disk management and download root@vps:~# apt install -y wget curl gdisk parted

Identify your disk device and note its name — do not use the wrong device or you will wipe the wrong disk:

Identify your disk
# List all block devices — find your main disk (sda, vda, nvme0n1) root@vps:~# lsblk # More detail including disk size root@vps:~# fdisk -l # Expected output — look for your main disk: NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS sda 8:0 0 80G 0 disk └─sda1 8:1 0 80G 0 part /
Disk naming by provider

DigitalOcean and OVH typically use /dev/sda. Hetzner uses /dev/sda on CX plans and /dev/nvme0n1 on NVMe plans. Contabo typically uses /dev/sda. Replace DISK in all commands below with your actual device name.

04Download the Windows Server 2025 ISO

Download the official Windows Server 2025 Evaluation ISO directly from Microsoft’s Evaluation Center — it is completely free for a 180-day evaluation period, no licence key required. The ISO is around 5.5 GB so this step will take several minutes depending on your server’s internet speed.

First, grab your direct download URL from the Microsoft Evaluation Center (register for free), then download directly to your server:

Download Windows Server 2025 ISO
# Navigate to temp directory root@vps:~# cd /tmp # Download ISO — replace URL with your eval download link from Microsoft root@vps:/tmp# wget -O WinServer2025.iso “YOUR_MICROSOFT_EVAL_DOWNLOAD_URL” # Verify download completed — should be ~5.5 GB root@vps:/tmp# ls -lh WinServer2025.iso -rw-r–r– 1 root root 5.5G May 7 12:00 WinServer2025.iso

Mount the ISO to access its contents, and copy the VirtIO drivers (required for disk and network access on virtual hardware):

Mount ISO and check contents
# Create mount point and mount the ISO root@vps:/tmp# mkdir -p /mnt/winiso root@vps:/tmp# mount -o loop /tmp/WinServer2025.iso /mnt/winiso # Confirm ISO is mounted correctly root@vps:/tmp# ls /mnt/winiso autorun.inf boot bootmgr bootmgr.efi efi setup.exe sources support

Download the VirtIO drivers ISO — these are essential for Windows to detect the virtual disk and network adapter on most VPS platforms. Without them, Windows will install but won’t have network access.

Download VirtIO drivers
# Download VirtIO drivers from Fedora (official source) root@vps:/tmp# wget -O /tmp/virtio-win.iso https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win.iso # Mount VirtIO ISO root@vps:/tmp# mkdir -p /mnt/virtio && mount -o loop /tmp/virtio-win.iso /mnt/virtio root@vps:/tmp# ls /mnt/virtio Balloon NetKVM vioscsi viostor w11 w10 2k25 amd64 …

05Partition the Disk

Before writing the Windows image, you need to set up the partition table. We’ll use GPT partitioning with a small EFI System Partition (ESP), a Windows system reserved partition, and the main Windows partition. Replace /dev/sda with your actual disk device throughout.

🛑
Point of no return

The next commands will wipe all existing data on the disk. Triple-check you have the correct disk device name from Step 3 before running these commands. There is no undo.

Partition disk with GPT (replace /dev/sda with your disk)
# Create GPT partition table root@vps:~# parted /dev/sda –script mklabel gpt # Partition 1: EFI System Partition (512 MB) root@vps:~# parted /dev/sda –script mkpart primary fat32 1MiB 513MiB root@vps:~# parted /dev/sda –script set 1 esp on # Partition 2: Microsoft Reserved (115 MB) root@vps:~# parted /dev/sda –script mkpart primary ntfs 513MiB 628MiB # Partition 3: Windows OS (remainder of disk) root@vps:~# parted /dev/sda –script mkpart primary ntfs 628MiB 100% # Verify partition layout root@vps:~# parted /dev/sda –script print

Format the EFI partition as FAT32:

Format EFI partition
# Format partition 1 as FAT32 (EFI) root@vps:~# mkfs.fat -F32 /dev/sda1 # Mount EFI partition root@vps:~# mkdir -p /mnt/efi && mount /dev/sda1 /mnt/efi

06Write the Windows Image

Install the wimtools package to extract the Windows installation files from the WIM image inside the ISO, then apply it directly to the disk partition. This is more reliable than using dd as it correctly handles the Windows partition format.

Install wimtools and format Windows partition
# Install required tools root@vps:~# apt install -y wimtools ntfs-3g # Format Windows partition as NTFS (fast format, -f flag) root@vps:~# mkfs.ntfs -f /dev/sda3 # Mount Windows partition root@vps:~# mkdir -p /mnt/windows && mount /dev/sda3 /mnt/windows

Apply the Windows image. We target index 2 which is Windows Server 2025 Standard with Desktop Experience (GUI). Use index 1 for Server Core (command-line only):

Check available editions and apply image (~20–40 min)
# Check available Windows editions in the WIM (note the index numbers) root@vps:~# wiminfo /mnt/winiso/sources/install.wim Index 1: Windows Server 2025 Standard (Server Core) Index 2: Windows Server 2025 Standard (Desktop Experience) ← Use this Index 3: Windows Server 2025 Datacenter (Server Core) Index 4: Windows Server 2025 Datacenter (Desktop Experience) # Apply Standard Desktop Experience (index 2) — this takes 20-40 minutes root@vps:~# wimapply /mnt/winiso/sources/install.wim 2 /mnt/windows Applying WIM: [==> ] 12% (3.2 GiB / 27.0 GiB)

Copy the boot files from the ISO to the EFI partition and configure the Windows bootloader:

Configure EFI bootloader
# Copy EFI boot files root@vps:~# mkdir -p /mnt/efi/efi && cp -r /mnt/winiso/efi/microsoft /mnt/efi/efi/ # Install GRUB2 bootloader pointing to Windows root@vps:~# apt install -y grub-efi-amd64 root@vps:~# grub-install –target=x86_64-efi –efi-directory=/mnt/efi –boot-directory=/mnt/efi/boot /dev/sda

Inject the VirtIO storage driver into the Windows image so the disk is detected at first boot:

Inject VirtIO storage & network drivers
# Inject VirtIO storage driver — required for disk detection root@vps:~# dism /image:/mnt/windows /add-driver /driver:/mnt/virtio/vioscsi/2k25/amd64 /recurse # Inject VirtIO network driver (NetKVM) — required for network access root@vps:~# dism /image:/mnt/windows /add-driver /driver:/mnt/virtio/NetKVM/2k25/amd64 /recurse # Inject memory balloon driver (recommended for VMs) root@vps:~# dism /image:/mnt/windows /add-driver /driver:/mnt/virtio/Balloon/2k25/amd64 /recurse Driver package added: oemdrv.inf The operation completed successfully.
Note on DISM on Linux

If dism is not available on your Ubuntu system (it’s a Windows tool), you can inject drivers using wimlib-imagex instead: apt install wimtools, then use wimupdate to add the driver .inf files to the Windows image before applying it.

07Pre-Configure Static Network Settings

Unlike Linux, Windows on a VPS won’t automatically detect the correct network settings via DHCP in all cases. You can pre-configure a static IP response by creating an unattend.xml answer file that configures the network, disables the firewall for initial access, and sets the Administrator password.

Get your VPS network details from your provider dashboard before creating this file. You’ll need: IP address, subnet mask, gateway IP, and DNS servers.

Check current network config (note these values)
# Get your current IP, subnet, and gateway — you’ll need these for Windows root@vps:~# ip addr show root@vps:~# ip route show root@vps:~# cat /etc/resolv.conf # Example output — note your actual values: inet 192.168.1.100/24 brd 192.168.1.255 default via 192.168.1.1 dev eth0 nameserver 8.8.8.8

Create the unattend.xml answer file that Windows reads on first boot to configure itself automatically:

Create Windows answer file
cat > /mnt/windows/Windows/System32/sysprep/unattend.xml << 'EOF'
<?xml version="1.0" encoding="utf-8"?>
<unattend xmlns="urn:schemas-microsoft-com:unattend">
  <settings pass="oobeSystem">
    <component name="Microsoft-Windows-Shell-Setup"
      processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35"
      language="neutral" versionScope="nonSxS"
      xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State">
      <OOBE>
        <HideEULAPage>true</HideEULAPage>
        <SkipMachineOOBE>true</SkipMachineOOBE>
        <SkipUserOOBE>true</SkipUserOOBE>
      </OOBE>
      <UserAccounts>
        <AdministratorPassword>
          <Value>YourStrongPassword123!</Value>  <!-- CHANGE THIS -->
          <PlainText>true</PlainText>
        </AdministratorPassword>
      </UserAccounts>
    </component>
    <component name="Microsoft-Windows-International-Core"
      processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35"
      language="neutral" versionScope="nonSxS">
      <InputLocale>en-GB</InputLocale>
      <SystemLocale>en-GB</SystemLocale>
      <UILanguage>en-GB</UILanguage>
      <UserLocale>en-GB</UserLocale>
    </component>
  </settings>
</unattend>
EOF

08Pre-Enable RDP & Disable Firewall

By default, Windows Server 2025 has RDP disabled and the firewall blocking port 3389. You can pre-configure both by editing the Windows registry from Linux before rebooting. This ensures you can connect immediately after first boot without needing console/VNC access.

Pre-enable RDP via registry edit (from Linux)
# Install registry editor for Linux root@vps:~# apt install -y chntpw # Navigate to Windows registry hive location root@vps:~# cd /mnt/windows/Windows/System32/config # Use chntpw to enable RDP by setting fDenyTSConnections to 0 root@vps:/mnt/windows/Windows/System32/config# chntpw -e SYSTEM # Inside chntpw prompt — type these commands: > cd \ControlSet001\Control\Terminal Server > ed fDenyTSConnections Type: REG_DWORD (4) Enter new value (in hex): 0 > q Hive updated!

Add a RunOnce registry entry to disable the Windows Firewall on first boot, which ensures RDP connectivity before you’ve had a chance to configure firewall rules:

Add RunOnce entry to disable firewall on first boot
root@vps:config# chntpw -e SOFTWARE # Navigate to RunOnce key > cd \Microsoft\Windows\CurrentVersion\RunOnce # Create new value to disable firewall on first boot > nv 1 DisableFirewall > ed DisableFirewall Enter string: netsh advfirewall set allprofiles state off > q Hive updated!

09Unmount, Reboot & First Connection

With the image applied, drivers injected, bootloader configured, and RDP pre-enabled, it’s time to cleanly unmount everything and reboot into Windows.

Unmount and reboot
# Unmount all partitions cleanly root@vps:~# umount /mnt/virtio /mnt/winiso /mnt/windows /mnt/efi # Verify nothing remains mounted root@vps:~# df -h | grep mnt (no output — all unmounted) # Reboot — server will boot into Windows Server 2025 root@vps:~# reboot

Windows first boot takes 10–20 minutes as it completes hardware detection, driver installation, and initial setup. Then connect via RDP:

Connect via RDP (run on your local machine)
# Windows — built-in Remote Desktop (run in Win+R) > mstsc /v:YOUR_VPS_IP # Linux — xfreerdp $ xfreerdp /u:Administrator /p:YourStrongPassword123! /v:YOUR_VPS_IP /port:3389 # Credentials: Username: Administrator Password: (what you set in unattend.xml) Port: 3389

Once connected, run Windows Update immediately to get the latest security patches:

Run Windows Update via PowerShell (inside Windows)
# Run inside Windows Server 2025 — open PowerShell as Administrator PS C:\> Install-Module PSWindowsUpdate -Force PS C:\> Import-Module PSWindowsUpdate PS C:\> Get-WindowsUpdate PS C:\> Install-WindowsUpdate -AcceptAll -AutoReboot

Change the Administrator password to something strong and then re-enable the firewall with RDP allowed:

Secure the server — re-enable firewall with RDP rule
# Set a strong Administrator password (run in PowerShell) PS C:\> net user Administrator “NewVeryStr0ngP@ssword!” # Re-enable the Windows Firewall PS C:\> netsh advfirewall set allprofiles state on # Allow RDP (port 3389) through the firewall PS C:\> netsh advfirewall firewall add rule name=“RDP” protocol=TCP dir=in localport=3389 action=allow # Check RDP service is running PS C:\> Get-Service TermService | Select Name,Status Name Status —- —— TermService Running

10Troubleshooting Common Problems

Server won’t boot after reboot

The most common cause is an incorrect bootloader configuration. If your VPS provider supports it, boot into rescue mode, remount the partitions, and check the EFI/boot configuration. Alternatively, verify the disk device name was correct — using /dev/vda on a KVM VPS when you configured /dev/sda will cause boot failure.

RDP connects but black screen

This is normal on first boot. Windows needs up to 5 minutes to complete its initial setup after the first RDP connection. Disconnect and try again after 2–5 minutes. If it persists, check that the TermService (Remote Desktop Services) is running via the VNC/console.

No network after Windows boots

The VirtIO NetKVM driver wasn’t injected correctly, or Windows defaulted to DHCP but the VPS uses a static IP. Connect via VNC/console (most providers offer this), open Device Manager and install the network driver manually from the VirtIO ISO, then configure a static IP from Network Settings.

Configure static IP manually (inside Windows PowerShell)
# Get adapter index number PS C:\> Get-NetAdapter Name InterfaceIndex Status Eth0 4 Up # Set static IP — replace with YOUR VPS values PS C:\> New-NetIPAddress -InterfaceIndex 4 -IPAddress 192.168.1.100 -PrefixLength 24 -DefaultGateway 192.168.1.1 # Set DNS servers PS C:\> Set-DnsClientServerAddress -InterfaceIndex 4 -ServerAddresses (“8.8.8.8″,”8.8.4.4”) # Test connection to internet PS C:\> Test-NetConnection 8.8.8.8 TcpTestSucceeded : True

Activation & Licence

Your Windows Server 2025 Evaluation will run for 180 days before requiring activation. To check remaining evaluation time:

Check evaluation status and activate
# Check activation status — run in PowerShell/CMD PS C:\> slmgr /xpr Windows(R) Server Standard evaluation edition expires 10/30/2026 # Activate with a product key PS C:\> slmgr /ipk XXXXX-XXXXX-XXXXX-XXXXX-XXXXX PS C:\> slmgr /ato # Convert evaluation → Standard with volume licence key PS C:\> DISM /online /Set-Edition:ServerStandard /ProductKey:XXXXX-XXXXX-XXXXX-XXXXX-XXXXX /AcceptEula

11Frequently Asked Questions

Is Windows Server 2025 free to use on a VPS?

Microsoft offers a free 180-day evaluation via the Microsoft Evaluation Center. After 180 days, you need a valid licence to continue using it. See our licensing disclaimer for details on purchasing a genuine licence.

Server Core or Desktop Experience — which should I choose?

For VPS use with RDP: choose Desktop Experience (index 2). This gives you the full Windows GUI, Server Manager, and all the tools you’d expect. Server Core (index 1) is command-line only and uses less RAM, but requires all management to be done via PowerShell remotely — it’s for advanced users only.

Why do I need VirtIO drivers?

Most VPS platforms (KVM-based) use virtualised hardware that Windows doesn’t have built-in drivers for. VirtIO drivers are open-source drivers from the Red Hat/Fedora project that give Windows fast, efficient access to the virtual disk (vioscsi/viostor) and network adapter (NetKVM). Without them, Windows either won’t see the disk during installation or won’t have network access after booting.

This looks very complex — is there an easier way?

Yes — that’s exactly what OS Installer is for. It automates this entire process: ISO download, driver injection, partitioning, bootloader configuration, and RDP setup — all from a simple web interface. You enter your VPS credentials, click Install, and come back in 45 minutes to a working Windows Server. See below.

Automated Alternative

Rather Skip All of That?

The manual process above takes 1–3 hours and requires solid Linux knowledge. OS Installer does the exact same thing automatically — in about 45 minutes, from a simple web form. No terminal. No driver hunting. No partitioning. Just enter your VPS details and click Install.

No command line needed
Drivers injected automatically
RDP configured automatically
All 4 Windows versions supported
Instant code delivery
Scroll to Top