Download as Word document

In this article I describe step by step how I create a Windows Server 2022 VM in Proxmox VE 9.1.6. The guide is based on real-world experience and includes all corrections and lessons learned along the way. This is part 1 of a series on building a fully functional Windows DevOps lab in Proxmox.

Lab Environment

ComponentValue
Proxmox hostmacpro2013.local — Mac Pro 2013 Trashcan
Proxmox version9.1.6
RAM128 GB
Storage3.6 TB NVMe (local-lvm pool)
Network bridgevmbr0 — internal lab network (192.168.178.x)
Proxmox WebUIhttps://192.168.178.205:8006

Why a CA Is Needed — the SSL Warning

Anyone who opens the Proxmox WebUI via macpro2013.local in Safari will immediately see a certificate warning. Proxmox uses a self-signed certificate by default.

Safari SSL warning for macpro2013.local Safari displays an SSL warning for macpro2013.local — this will be resolved once the Certificate Authority is set up

This is exactly the motivation to set up an internal Certificate Authority (CA) later. Once that is running, Proxmox can be issued a trusted certificate and the warning will disappear.


Prerequisites

Make sure the following ISO files are available in Proxmox local storage (Proxmox WebUI → local → ISO Images):

  • Windows Server 2022 Evaluation: Windows_2022_SERVER_EVAL_x64FRE_en-us.iso
  • VirtIO drivers: virtio-win-0.1.285.iso or newer

Note: Both ISOs are required. Without the VirtIO ISO, Windows Setup cannot detect the disk or network adapter.


VM Naming

Use consistent names that include the OS version and all active roles. This lets you see at a glance what each VM does in the Proxmox panel.

PatternExampleDescription
WS2022-LAB{nn}-{ROLES}WS2022-LAB01-AD-DNSLab VM with all active roles in the name
WS2022-LAB{nn}-CAWS2022-LAB02-CACertificate Authority VM
WS2022-TEMPLATE-{NAME}WS2022-TEMPLATE-BASETemplate VM — use VM ID 900+

Renaming a VM is done via the Proxmox host shell (the WebUI has no rename option):

1ssh root@macpro2013.local
2qm set <VMID> --name <NIEUWE-NAAM>
3
4# Voorbeeld:
5qm set 100 --name WS2022-LAB01-AD-DNS

Below you can see how the Proxmox panel looks after both VMs have been correctly created and renamed:

Proxmox overview with both VMs correctly named Proxmox panel with WS2022-LAB01-AD-DNS (VM 100) and WS2022-TEMPLATE-BASE (VM 900) correctly created


Creating a VM — the Proxmox Wizard

Click Create VM (blue button at the top right) and work through all tabs as described below.

General Tab

SettingValueNotes
NameWS2022-TEMPLATE-BASEDescriptive name including OS and role
VM ID900Use 900+ for templates, 100+ for lab VMs
Nodemacpro2013Your Proxmox host

OS Tab

SettingValueNotes
ISO ImageWindows_2022_SERVER_EVAL_x64FRE_en-us.isoSelect from local storage
TypeMicrosoft WindowsMust be set explicitly
Version11/2022/2025Must be set explicitly
Add VirtIO drivers ISOEnabled (checkbox)Adds a second CD drive for the VirtIO ISO
VirtIO ISOvirtio-win-0.1.285.isoSelect from local storage

Note: Type and Version must both be set manually. The checkbox for the VirtIO ISO adds a second CD drive — this is essential for loading storage and network drivers during Windows Setup.

System Tab

SettingValueNotes
BIOSOVMF (UEFI)Required for Windows Server 2022
Machinepc-q35Modern chipset required for TPM 2.0
SCSI ControllerVirtIO SCSI singleBest storage performance
EFI Storagelocal-lvmMust be explicitly selected — no default
TPM Storagelocal-lvmMust be explicitly selected — no default
TPM Versionv2.0Required for Windows Server 2022

Note: EFI Storage and TPM Storage have no default value — both must be explicitly selected. Without these settings the VM will not boot correctly.

Disks Tab

SettingValueNotes
Bus/DeviceSCSIUse together with VirtIO SCSI controller
Storagelocal-lvmNVMe-backed pool
Disk Size60 GBSufficient for OS, roles and tools
CacheWrite backBest performance on NVMe
DiscardEnabledEnables TRIM for SSD/NVMe storage
IO ThreadEnabledImproves disk throughput

CPU Tab

SettingValueNotes
Sockets1Single socket
Cores2Sufficient for all lab VM roles
TypehostPasses through the real host CPU — better performance than the default kvm64

Note: CPU Type must be set to host. The default kvm64 limits the available CPU instruction set features and reduces performance.

Memory Tab

SettingValueNotes
Memory4096 MB4 GB per VM
Minimum Memory4096 MBSet equal to Memory to disable ballooning
Ballooning DeviceDisabledNot well supported on Windows

Note: Ballooning must be disabled for Windows VMs. Set Minimum Memory equal to Memory. In the hardware overview this is reflected as [balloon=0].

Network Tab

SettingValueNotes
Bridgevmbr0Internal lab network
ModelVirtIO (paravirtualized)Best performance — requires VirtIO drivers
FirewallEnabled (leave as default)Leave enabled — mirrors production and builds troubleshooting skills

Note: Leave the Proxmox firewall enabled on the network adapter. Disabling it may seem convenient but removes an important layer that mirrors real production environments. Troubleshooting through the firewall is a valuable skill.


Hardware Verification Before First Boot

After clicking Finish, do not start the VM yet. First click the VM in the left panel and select Hardware. Verify that all settings match the tables above.

Proxmox Hardware tab VM 900 — correct configuration VM 900 (WS2022-TEMPLATE-BASE) — Hardware tab with correct configuration. Note balloon=0, host CPU type, both ISOs present, 60G disk with writeback/discard/iothread, EFI and TPM present.

Check specifically:

  • Memory: 4.00 GiB [balloon=0] — balloon=0 confirms that ballooning is off
  • Processors: 2 (1 socket, 2 cores) [host] — confirms host CPU type
  • BIOS: OVMF (UEFI)
  • Machine: pc-q35
  • SCSI Controller: VirtIO SCSI single
  • CD/DVD ide0: virtio-win ISO present
  • CD/DVD ide2: Windows 2022 ISO present
  • Hard Disk: 60G, cache=writeback, discard=on, iothread=1
  • Network: vmbr0, firewall=1
  • EFI Disk and TPM State present on local-lvm

Starting the VM and Windows Boot

Click Start and immediately open the Console. As soon as you see the following, click inside the console window first (to capture keyboard input) and press any key:

1Press any key to boot from CD or DVD......

Note: If you are too late, the VM will fall through to PXE boot as shown below. Simply reset the VM and try again — be ready at the console before you click Start.

PXE boot fallback — too late at CD boot prompt PXE boot fallback when the CD boot prompt was missed — reset the VM and try again

If you catch the prompt in time, the Windows Boot Manager appears:

Windows Boot Manager Windows Boot Manager — select Windows Setup [EMS Enabled] and press Enter

Select Windows Setup [EMS Enabled] (already highlighted) and press Enter.


Edition Selection

At the edition selection screen, choose:

Windows Server 2022 Datacenter (Desktop Experience)

Note: Select Datacenter, not Standard. And Desktop Experience, not Core. Core has no GUI and is therefore unsuitable for this lab template.


Loading the VirtIO Storage Driver

On the “Where do you want to install the operating system?” screen, the disk list is empty. This is normal — Windows cannot see the VirtIO SCSI disk without the driver.

Windows Setup with no disk visible Windows Setup shows no disk — the VirtIO SCSI driver must be loaded first

Steps to load the driver:

  1. Click Load driver
  2. Click Browse
  3. Navigate to the VirtIO CD drive (D: or E:)
  4. Open the folder: vioscsi \ w2k22 \ amd64
  5. Click OK
  6. Select Red Hat VirtIO SCSI pass-through controller
  7. Click Next

The 60 GB disk now appears in the list. Select it and continue. The Windows installation begins:

Windows Server 2022 installation in progress Windows Server 2022 installation in progress — 23% complete


After Installation — Server Manager

After installation and restart you land on the Server Manager Dashboard. Dismiss the Windows Admin Center notification (check “Don’t show this message again”):

Server Manager Dashboard Server Manager Dashboard — Windows Server 2022 Datacenter successfully installed

The VM is now ready for the next step: template preparation as described in part 2.


Summary Checklist

#TaskDone
1Upload Windows Server 2022 ISO to Proxmox local storage
2Upload VirtIO drivers ISO to Proxmox local storage
3Create VM with correct settings in all wizard tabs
4Verify hardware configuration in Proxmox Hardware tab before starting
5Start VM — catch the CD boot prompt immediately in the Console
6Select Windows Server 2022 Datacenter (Desktop Experience)
7Load VirtIO SCSI driver (vioscsi/w2k22/amd64) before disk selection
8Complete Windows installation
9Continue to part 2 — Template Preparation