rss logo

Step-by-Step Guide: How to Create a VM in Proxmox VE 9

Logo of Promox

As a reminder, Proxmox Virtual Environment is a virtualization platform that lets you create Virtual Machines in container-based or in full virtualization. (If you missed the installation tutorial, it's right here).

The difference between these two technologies is that container-based will share their kernel with the Proxmox VE and will therefore generally require fewer resources than full virtualization and delivers better performance. As Proxmox is based on Linux, this mode is, of course, only available for Linux VMs. Full virtualization, on the other hand, lets you create virtual machines compatible with Windows and UNIX, and works like VMware ESXi or Hyper-V.

I will show here how to create both.

Creating a Debian Linux Container

Container Template

As containers work with templates, we first need to identify the storage spaces that are configured to host the container template.

💡 Note: Any storage can host container images, it just need to be configured.

  • In my case, only the local storage is configured to host container templates:
Proxmox VE Datacenter storage configuration showing the local storage enabled for container templates.
Proxmox VE storage configuration showing which storage can host LXC container templates.
  • Go to one of the storage locations previously identified as supporting container templates, then click CT Templates > Templates:
Proxmox VE local storage view showing the CT Templates section and the Templates button used to download LXC container templates.
Proxmox VE local storage view where LXC container templates can be downloaded from the CT Templates section.
  • From the Templates list, select the Linux distribution you want to use, then click Download. Here is an example with Debian 12:
Proxmox VE Templates window listing available LXC container templates, with debian-12-standard selected and the Download button highlighted.
Proxmox VE template selection window with the Debian 12 LXC template selected for download.
  • Once the download is complete, the template should appear in the CT Templates list:
Proxmox VE local storage view showing the CT Templates section with the downloaded Debian 12 standard LXC template stored and available for use.
Proxmox VE local storage showing the downloaded Debian 12 LXC template available under CT Templates.

Create an LXC VM

  • Right-click on your hypervisor and select Create CT. Enter a name for the container, set a password, then choose the previously downloaded template:
Proxmox VE interface showing the creation of an LXC container: right-click on the node to select Create CT, then fill in the General settings with CT ID, hostname and password, and finally choose the local storage and Debian 12 template in the Template tab.
Proxmox VE wizard showing the main steps to create a Debian 12 LXC container.
  • Select the storage for the container disk, then define the number of CPU cores and the amount of memory:
Proxmox VE Create LXC Container wizard showing the Disks, CPU, and Memory tabs. The configuration sets the container disk on ZFS_R10_16T with a size of 8 GiB, assigns 1 CPU core, and allocates 512 MiB of RAM and 512 MiB of swap.
Proxmox VE LXC container wizard showing disk, CPU, and memory settings for the new Debian container.
  • Select the network bridge, configure the IP address and DNS settings, then review the summary and click Finish to create the container:
Proxmox VE Create LXC Container wizard showing the Network, DNS, and Confirm tabs. The network configuration uses bridge vmbr0 with a static IPv4 address 192.168.1.100/24 and gateway 192.168.1.254. The DNS settings define the domain std.local and DNS server 192.168.1.250, followed by the final configuration summary before creating the container.
Proxmox VE LXC container wizard showing the network, DNS, and final confirmation settings before creating the Debian container.
  • After a few moments, the container should appear in the Proxmox VE inventory and be ready to use from the Console tab:
Proxmox VE interface showing the Debian-LXC container with ID 200 selected and running. The Console tab displays the Debian GNU/Linux 12 login prompt for the new LXC container.
Proxmox VE showing the newly created Debian 12 LXC container running and ready for login from the console.

Full Virtualization

Upload the ISO

Before we can consider installing a virtual machine, we first need to download the ISO media to our Proxmox VE.

  • As with containers, open the Storage menu to identify which storage location can host ISO images:
Proxmox VE Datacenter storage configuration showing that the local storage is enabled for ISO images and container templates.
Proxmox VE storage configuration showing which storage can host ISO images used to create virtual machines.
  • Go to one of the previously identified storage locations, open the ISO Images section, then click Upload:
Proxmox VE local storage view showing the ISO Images section selected and the Upload button highlighted to import an ISO file for virtual machine installation.
Proxmox VE local storage view where ISO installation images can be uploaded before creating a virtual machine.
  • Upload each ISO image required for the operating systems you want to install. For Windows virtual machines, also upload the VirtIO drivers ISO, which will be needed during and after installation:

💡 Note: The VirtIO drivers ISO can be downloaded from the official Fedora VirtIO repository: https://fedorapeople.org/groups/virt/virtio-win/. The latest stable version is also available here: virtio-win.iso.

Proxmox VE Upload window showing an ISO image selected from the local computer, with the Select File button used to choose the file and the Upload button used to import it into the ISO Images storage.
Proxmox VE upload window used to select an ISO image from the local computer and import it into the selected storage.
  • Once the uploads are complete, the ISO images should appear in the ISO Images section. In this example, the storage contains Windows Server, Debian, and VirtIO drivers ISO files:
Proxmox VE local storage view showing the ISO Images section with uploaded installation media, including a Windows Server evaluation ISO, a Debian 12 netinstall ISO, and the virtio-win drivers ISO.
Proxmox VE local storage showing the uploaded ISO images required to create Windows and Debian virtual machines.

Windows

Creating a Windows Virtual Machine

Now that we have uploaded the ISO images, let's start creating virtual machines, beginning with Windows.

  • Right-click on the hypervisor and select Create VM. In the General tab, enter a name for the virtual machine and click Next. In the OS tab, select the previously uploaded Windows ISO image, set the Guest OS type to Microsoft Windows, then enable Add additional drive for VirtIO drivers and select the uploaded VirtIO ISO:
Proxmox VE Create Virtual Machine wizard showing the first steps to create a Windows VM. The node menu is used to select Create VM, then the General tab is filled with VM ID 109 and the name Windows-VM. In the OS tab, the Windows installation ISO is selected from local storage, the guest OS type is set to Microsoft Windows, and the option to add an additional VirtIO drivers ISO is enabled.
Proxmox VE wizard showing the initial steps to create a Windows virtual machine, including the Windows ISO and the VirtIO drivers ISO selection.
  • In the System tab, enable the QEMU Agent and TPM, then choose the storage location for the EFI disk and TPM state. In the Disks tab, select the target storage and set the virtual disk size. Finally, adjust the CPU settings if needed:
Proxmox VE Create Virtual Machine wizard showing the System, Disks, and CPU tabs for a Windows virtual machine. The configuration uses the VirtIO SCSI single controller, enables the QEMU Agent and TPM, stores the EFI disk and TPM data on ZFS_R10_16T, creates an 80 GiB virtual disk on ZFS_R10_16T, and assigns 4 CPU cores.
Proxmox VE wizard showing the system, disk, and CPU settings used for the Windows virtual machine.
  • In the Memory tab, allocate the amount of RAM you want to assign to the virtual machine. In the Network tab, select the target bridge and keep the VirtIO paravirtualized model for good performance. Finally, review the configuration summary and click Finish to create the VM:
Proxmox VE Create Virtual Machine wizard showing the Memory, Network, and Confirm tabs for a Windows virtual machine. The memory is set to 4096 MiB, the network is attached to bridge vmbr0 with the VirtIO paravirtualized model, and the final summary displays the complete virtual machine configuration before creation.
Proxmox VE wizard showing the memory, network, and final confirmation settings before creating the Windows virtual machine.

Install Windows

  • Once the virtual machine has been created, open the Console tab and click Start Now to power it on:
Proxmox VE interface showing the newly created virtual machine Windows-VM with ID 109 selected in the inventory. The Console tab is open, the guest is not running yet, and the Start Now button is available to power on the virtual machine.
Proxmox VE console view showing the newly created Windows virtual machine before its first startup.
  • When the VM starts, press a key when prompted to boot from the attached Windows ISO and launch the installation process:
Proxmox VE console showing the Windows-VM virtual machine with ID 109 booting from the attached installation ISO. The console displays the message Press any key to boot from CD or DVD, indicating that the Windows installer can be started.
Proxmox VE console showing the Windows virtual machine ready to boot from the attached installation ISO.
  • At the Select location to install Windows Server step, no disk is detected yet. Click Load Driver to load the VirtIO storage driver:
Windows Server Setup running in a Proxmox VE virtual machine, showing the disk selection screen with no installation disk detected. The Load Driver button is highlighted because the VirtIO storage driver must be loaded before Windows can see the virtual disk.
Windows Server installer showing no available disk until the VirtIO storage driver is loaded.
  • Click Browse to select the driver folder from the attached VirtIO drivers ISO:
Windows Server Setup running in a Proxmox VE virtual machine, showing the Install driver to show hardware screen. The Browse button is highlighted so the VirtIO driver folder can be selected from the attached VirtIO drivers ISO.
Windows Server installer asking for the VirtIO driver folder so the Proxmox virtual disk can be detected.
  • Select the vioscsi\<WINDOWS_VERSION>\amd64 folder from the attached VirtIO drivers ISO, then click OK:
Windows Server Setup running in a Proxmox VE virtual machine, showing the Browse for Folder window on the attached virtio-win ISO. The vioscsi driver folder is selected for Windows Server 2025 on amd64 before clicking OK to load the VirtIO SCSI storage driver.
Windows Server installer selecting the correct VirtIO SCSI driver folder from the attached virtio-win ISO.
  • Select the Red Hat VirtIO SCSI pass-through controller driver, then click Install to load the storage driver:
Windows Server Setup running in a Proxmox VE virtual machine, showing the Red Hat VirtIO SCSI pass-through controller driver selected from the vioscsi folder on the virtio-win ISO. The Install button is highlighted to load the storage driver and make the Proxmox virtual disk visible.
Windows Server installer loading the Red Hat VirtIO SCSI driver so the Proxmox virtual disk can be detected.

Windows Post-Installation

  • After the Windows installation is complete, open the attached virtio-win drive and run the virtio-win-gt-x64 installer to install the VirtIO drivers and guest tools:
Windows virtual machine running in Proxmox VE with File Explorer opened on the attached virtio-win ISO. The virtio-win-gt-x64 Windows Installer package is selected to install the VirtIO guest tools and drivers for the 64-bit Windows system.
Windows VM showing the attached VirtIO drivers ISO and the 64-bit VirtIO guest tools installer.
  • Keep the default selected VirtIO driver components, then continue with the installation:
Windows virtual machine running in Proxmox VE with the Virtio-win driver installer open on the Custom Setup step. The installer lists available VirtIO components such as Balloon, Network, Pvpanic, Vioscsi and Vioserial before continuing with the driver installation.
VirtIO driver installer running in the Windows VM, showing the available driver components before installation.
  • Then run the virtio-win-guest-tools installer to install the additional guest tools required for better integration with Proxmox VE, including support for the QEMU Guest Agent. Restart the VM when the installation is complete:
Windows virtual machine running in Proxmox VE with File Explorer opened on the attached virtio-win ISO. The virtio-win-guest-tools application is selected to install the VirtIO guest tools, including components required for better integration with Proxmox VE.
Windows VM showing the VirtIO guest tools installer selected from the attached virtio-win ISO.

Congratulations, your Windows virtual machine is ready!

GNU/Linux

Creating a Debian Virtual Machine

  • Right-click on the hypervisor and select Create VM. In the General tab, enter a name for the virtual machine and click Next. In the OS tab, select the previously uploaded Debian ISO image, then set the Guest OS type to Linux:
Proxmox VE Create Virtual Machine wizard showing the first steps to create a Debian VM. The node menu is used to select Create VM, then the General tab is filled with VM ID 109 and the name Debian-VM. In the OS tab, the Debian netinstall ISO is selected from local storage and the guest OS type is set to Linux with a 6.x - 2.6 kernel.
Proxmox VE wizard showing the initial steps to create a Debian virtual machine from a Debian netinstall ISO.
  • In the System tab, enable the QEMU Agent, select OVMF (UEFI) firmware, and choose the storage location for the EFI disk. In the Disks tab, select the target storage and set the virtual disk size. Finally, adjust the CPU settings if needed:
Proxmox VE Create Virtual Machine wizard showing the System, Disks, and CPU tabs for a Debian virtual machine. The configuration enables the QEMU Agent, uses OVMF UEFI firmware, stores the EFI disk on ZFS_R10_16T, creates an 80 GiB virtual disk on ZFS_R10_16T, and assigns 4 CPU cores.
Proxmox VE wizard showing the system, disk, and CPU settings used for the Debian virtual machine.
  • In the Memory tab, allocate the amount of RAM you want to assign to the virtual machine. In the Network tab, select the target bridge and keep the VirtIO paravirtualized model for better performance. Finally, review the configuration summary and click Finish to create the VM:
Proxmox VE Create Virtual Machine wizard showing the Memory, Network, and Confirm tabs for a Debian virtual machine. The memory is set to 2048 MiB, the network is attached to bridge vmbr0 with the VirtIO paravirtualized model, and the final summary displays the complete VM configuration before creation.
Proxmox VE wizard showing the memory, network, and final confirmation settings before creating the Debian virtual machine.

Install Debian

  • Once the virtual machine has been created, open the Console tab and click Start Now. The VM should then boot from the attached Debian installation ISO:
Proxmox VE interface showing the newly created Debian-VM virtual machine with ID 109 selected in the inventory. The Console tab is open, the guest is not running yet, and the Start Now button is available to power on the virtual machine.
Proxmox VE console view showing the newly created Debian virtual machine before its first startup.

Debian Post-Installation

  • The Qemu agent should have been installed automatically, but if necessary, here are the commands you need to type to install it:
root@host:~# apt update && apt install qemu-guest-agent
root@host:~# systemctl enable qemu-guest-agent
root@host:~# systemctl restart qemu-guest-agent