HostUpCloudHostUpCloudDocs

Windows Server

Deploy, connect to, and manage Windows Server 2019, 2022, and 2025 LTSC instances.

Windows Server

HostUp Cloud offers Windows Server 2019, 2022, and 2025 as pre-built LTSC (Long-Term Servicing Channel) templates with Desktop Experience (full GUI), VirtIO drivers, QEMU guest agent, and Cloudbase-Init pre-installed for automatic first-boot configuration.

Available Versions

VersionChannelEOLRecommended For
Windows Server 2019LTSCJanuary 2029Legacy .NET apps, compatibility with older software
Windows Server 2022LTSCOctober 2031General purpose — recommended default
Windows Server 2025LTSCOctober 2034New deployments needing the latest features

All three versions ship with Desktop Experience (full GUI). Server Core builds can be provided on request via support.

Minimum Requirements

Windows Server has stricter minimum requirements than Linux distributions. Microsoft's own published minimum for Server 2019+ is 32 GB disk and 2 GB RAM. Our Console enforces this — plans with less than 32 GB of disk are automatically hidden when a Windows image is selected.

ResourceMinimumWhy
Disk32 GBWindows install (~13 GB) + pagefile + update staging + headroom
RAM2 GBBelow this, updates and services thrash
vCPU1Functional, but 2+ recommended for responsiveness

Running Windows Server on a 20 GB disk is not supported. The OS will fill its disk within weeks once Windows Update begins downloading cumulative updates.

Deploying a Windows Instance

  1. Log in to the Console and open your project.
  2. Click Create Instance.
  3. Select a Region.
  4. Under Image, pick Windows Server and the version you want.
  5. Choose a Plan — only 32 GB+ plans will be visible.
  6. Set a hostname (must be 2–15 characters, letters/numbers/hyphens; this becomes the Windows ComputerName).
  7. Optionally attach SSH keys — these are injected as PowerShell OpenSSH keys for the Admin user.
  8. Click Create Instance.

The first boot takes longer than Linux (2–4 minutes) while Cloudbase-Init runs hostname setup, account creation, and volume expansion.

Connecting via RDP

Windows templates ship with Remote Desktop (RDP) enabled and a firewall rule allowing port 3389 in on all profiles.

From Windows

  1. Press Win + R, type mstsc, press Enter.
  2. Computer: your instance's public IPv4 address.
  3. User: Admin
  4. Click Connect and enter the password shown in the Console (Instances → your instanceCredentials).

From macOS

Install Microsoft Remote Desktop from the App Store, then:

  1. Click + → Add PC.
  2. PC name: your instance's public IPv4.
  3. User account: add the Admin user and password.
  4. Save and double-click to connect.

From Linux

Use Remmina (GTK) or xfreerdp:

xfreerdp /v:<public-ip> /u:Admin /p:'<password>' /dynamic-resolution /cert:ignore

The first RDP connection shows a certificate warning because the template uses a self-signed RDP certificate. This is expected. To replace it with a trusted certificate, install one via Remote Desktop Session Host Configuration after first login.

First-Boot Configuration (Cloudbase-Init)

On first boot, Cloudbase-Init reads the cloud-init metadata drive attached to your instance and performs:

TaskSource
Set ComputerName to your chosen hostnameInstance metadata
Create the Admin local user in the Administrators groupInstance metadata
Set the Admin passwordGenerated per-instance, shown in Console
Expand C: to fill the full disk of your planAutomatic
Inject SSH public keys for the Admin userSSH keys selected during create
Apply user-data scripts (PowerShell or cloud-config)Cloud-Init field during create

Cloudbase-Init runs once per generalized image. If you want it to re-run (for example after cloning an instance manually), run C:\Program Files\Cloudbase Solutions\Cloudbase-Init\conf\Unattend.xml via sysprep.

Console (VNC)

If RDP is blocked by a firewall, or you've locked yourself out, use the web-based VNC console:

  1. Go to Instances → your instance.
  2. Click the Console button.
  3. You'll see the Windows logon screen directly in the browser.

VNC runs at the hypervisor level and bypasses Windows networking. Always keep a strong Admin password — the VNC connection itself is secured, but anyone with Console access to the instance can see the desktop.

Common Tasks

Change the Administrator password

Open an elevated PowerShell and run:

$newPw = Read-Host -AsSecureString "New password"
Set-LocalUser -Name Admin -Password $newPw

Add a new user

$pw = Read-Host -AsSecureString "Password for alice"
New-LocalUser -Name alice -Password $pw -FullName "Alice"
Add-LocalGroupMember -Group "Administrators" -Member alice
Add-LocalGroupMember -Group "Remote Desktop Users" -Member alice

Open a port on the Windows Firewall

New-NetFirewallRule -DisplayName "Allow HTTP" -Direction Inbound `
  -Protocol TCP -LocalPort 80 -Action Allow

Install IIS (web server)

Install-WindowsFeature -Name Web-Server -IncludeManagementTools

Install OpenSSH Server (for SSH into Windows)

Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
Start-Service sshd
Set-Service -Name sshd -StartupType Automatic
New-NetFirewallRule -DisplayName "SSH" -Direction Inbound `
  -Protocol TCP -LocalPort 22 -Action Allow

Updating Windows

Cumulative updates (Windows Update → Check for updates) are not pre-applied to the template — you'll receive patches on your first boot. Plan for a 20–60 minute update cycle on a fresh instance.

# Trigger an update scan and install without reboot
Install-Module PSWindowsUpdate -Force
Get-WindowsUpdate -Install -AcceptAll -IgnoreReboot

Troubleshooting

RDP connects but shows a black screen

The VNC console is most likely still attached and holding the display. Close the Console tab in your browser, then reconnect via RDP.

"This user account's password must be changed before signing in"

Windows requires a password change on first interactive logon when the template was sysprepped with ProtectYourPC=3. Log in once, set a new password, then RDP again.

Cloudbase-Init didn't run / hostname is wrong

Check the Cloudbase-Init log:

Get-Content "C:\Program Files\Cloudbase Solutions\Cloudbase-Init\log\cloudbase-init.log" -Tail 100

Typical causes: the config-drive was not attached at boot, or the instance was created from a manual clone instead of the Console. Re-running Cloudbase-Init requires booting from a re-sysprepped state.

Disk did not expand to full plan size

The ExtendVolumesPlugin expands C: on first boot. If the C: partition is still at 32 GB on a 60 GB plan:

# Check the current partition layout
Get-Partition -DiskNumber 0

# Resize C: to the maximum size
$max = (Get-PartitionSupportedSize -DriveLetter C).SizeMax
Resize-Partition -DriveLetter C -Size $max

Windows Update is stuck or very slow

On small instances (1 vCPU / 2 GB RAM), cumulative updates can take up to an hour. If it appears frozen for more than 2 hours:

# Reset Windows Update components
Stop-Service wuauserv, cryptSvc, bits, msiserver
Remove-Item "$env:WinDir\SoftwareDistribution" -Recurse -Force
Remove-Item "$env:WinDir\System32\catroot2" -Recurse -Force
Start-Service wuauserv, cryptSvc, bits, msiserver

Licensing

Windows Server licensing is included in the hourly/monthly price of the instance. The template activates automatically via KMS once the instance has internet access. If activation fails:

slmgr /ato
slmgr /xpr   # show activation status

If activation still fails after a retry, open a support ticket.

Next Steps

On this page