Self-hosting: Installing your first virtual machines on the Proxmox hypervisor
Neowin2024/8/20
If you're thinking about self-hosting and haven't seen our write-up on the pros and cons, you should take a minute to check that out. The first article in the series explains how to install and setup a Proxmox virtual environment. In this article, we'll show you how to install both a Linux and Windows virtual machine onto your hypervisor so that you can start your self-hosted journey.
Placing an ISO on the Proxmox Server
There are two options for getting an ISO onto the Proxmox server. You can either download it to your local system and then upload it to Proxmox, or, if you know the full URL of the file, you can directly input it into the Proxmox interface. I'll show both options here.
Download the ISO (Option 1)
The first thing you have to do is download the ISO of whatever flavor of Linux you want to install on Proxmox. For our guide, we'll be using Rocky Linux 9, but you can use Ubuntu, RHEL, Kali, or whatever flavor you want.
Browse to https://rockylinux.org/download
Identify the architecture you want; in most cases, it'll be AMD/Intel (x86_64), and that's the default
Identify the version you want - Rocky Linux 8 or Rocky Linux 9. In our case, we're picking Rocky Linux 9
Click on the image you want; I recommend a minimal version and install components you need manually after the fact, so selected v9.4, Minimal ISO
Upload the ISO to Proxmox (Option 1 continued)
Click Datacenter->proxmox1->local (proxmox1)
Click ISO Images
Click Upload
Click Select in the Upload box
Select the ISO image from your filesystem
Click Open
Click Upload
Download the ISO directly to Proxmox (Option 2)
If you know the URL of the ISO, and don't want the intermediate step of copying the file to your Proxmox server, you can directly enter the URL into Proxmox and let the hypervisor download it for you. This has the added advantage that, if you know the checksum, it can confirm the file was not corrupted during download.
Click Datacenter->proxmox1->local (proxmox1)
Click ISO Images
Click Download from URL
Type (or paste) the full download path into the URL input box
Click Query URL to tell Proxmox to identify the filename from the path
(optional) If using checksums, enter the data from the site you're downloading the ISO into the Checksum box and select the Hash algorithm it's using.
Click Download
Install Rocky Linux on Proxmox
Create the Linux Virtual Machine framework in Proxmox
The next group of steps is to configure Proxmox to accept the installation of a new VM. In a nutshell, you're telling Proxmox what hardware your new virtual machine will have, determining the size of disks, how much RAM will be available, how many processors will be running, along with what type of network and graphics card will be available. This isn't installing the actual operating system yet, you're just configuring the hardware parameters.
Gallery: Proxmox Hardware Setup for Virtual Machine
Click on Create VM
Type in a unique number for VM ID; e.g.:separate VMs by OS by using 100-199 for Linux and 200-299 for Windows
Give the VM a name to identify it by
(optional) Click "Start at boot" if you want the VM to start when Proxmox starts
Select the name of the Linux ISO you want to use
Select Linux as the Guest OS and 6.x - 2.6 Kernel as the Version
Leave this as default; don't make the mistake of selecting none for the Graphic card because then you won't be able to even connect to the console
Ensure local-lvm is selected for Storage; we'll show you how to use external storage to host your VMs in the future
Type in how large you want your system disk to be; we'll use 32 Gigabytes
Determine how many sockets and cores you want to provide the VM; generally sockets should be the number of physical sockets your Proxmox server has and Cores can be set up to the maximum number of cores you have available on the system, but overprovisioning is allowed. For the guide, we'll give the system two Cores.
Select how much memory the virtual machine is allowed to use; you can overprovision between all virtual machines and use ballooning, but these are advanced features we'll talk about in a future article; for now, we'll give the VM 2048 megabytes of RAM
Leave the Network section default and click Next to go to the Confirm tab
Click Finish to create the VM
You now have a Virtual Machine configured and ready to build from the ISO
Install Rocky Linux 9 on Proxmox
Now that we have the virtual hardware configured for our Linux VM, it's time to boot off of the ISO we placed on Proxmox and install Rocky Linux.
Gallery: Installing Rocky Linux onto Proxmox
Select Datacenter->proxmox1->103(RockyLinux2); replace this with your VM name if you used a different one from what we described above
Click Console
Click on Start Now; this will boot the VM with the ISO you selected during setup
Press the letter "I" to "Install Rocky Linux 9.4"
Select what language and keyboard you want to use; we selected English
Click Continue
Click on "Root Password" (06)
Type in a password you want to use for the root (admin) user
Re-type the password to ensure it wasn't typed incorrectly the first time
Click Done
Click on User Creation
Type in your name in the Full Name section; this will automatically create a user name of first initial followed by last name
(optional) Change the user name if you want
Click the checkboxes next to both "Make this user administrator" and "Require a password to use this account;" this allows you to limit access to the previously configured root account by allowing your custom user to have admin rights on the Linux server
Type in a password you want to use for the user
Re-type the password to ensure it wasn't typed correctly the first time
Click Done
Click on Installation Destination
Verify that the drive information is correct; you should be able to leave this alone
Click Done
Click on Begin Installation
When installation is complete, you can click Reboot System
The ISO will automatically dismount, and after a few seconds, you'll be presented with the login page to your new Linux VM!
Install the QEMU agent
While your OS is running on Proxmox just fine, if you want to be able to see system information, such as the virtual machine's IP address, you'll need to install the QEMU agent on the Linux host. The process is easy.
Gallery: Install QEMU Agent on Linux for Proxmox
Select Datacenter->proxmox1->103(RockyLinux2); replace this with your VM name if you used a different one from what we described above
Click Console
Type your username in the console
Type your password in the console
Type sudo yum install qemu-guest-agent; note that if you use a different version of Linux, the installation command may use rpm, apt get, or dnf.
Type in your password again; this is required by sudo, the command that escalates your normal user permissions into admin permissions
Type "y" to proceed
Type "y" to proceed again
You'll be presented with the message, "Complete!" so you know the installation was successful
Select Datacenter->proxmox1->103(RockyLinux2); replace this with your VM name if you used a different one from what we described above
Click Options
Double-click on QEMU Guest Agent; it's currently set to Default (Disabled)
Click the checkbox next to Use QEMU Guest Agent
Click OK
Select Datacenter->proxmox1->103(RockyLinux2); replace this with your VM name if you used a different one from what we described above
Right click on 103(RockyLinux2) and select Shutdown; keep in mind that for some reason, if you reboot from the operating system command line, QEMU will not properly start
Click Yes
After the system shuts down, click "Start Now"
Click "Summary" and you'll now see data such as Memory Usage, system IP addresses, and more
Install Windows on Proxmox
The steps to install Windows on Proxmox are the same as for Linux, with only a few differences, including the need to download VirtIO drivers into the OS.
Download VirtIO drivers
The easiest way to do this is to import them directly into Proxmox. See "Download the ISO directly to Proxmox (Option 2)."
We will start by finding the most recent version.
In a web browser, go to this FedoraPeople.org link: https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/?C=M;O=D
Click on the most recent folder, which is virtio-win-0.1.248-1 as of the time of this writing
Right click on the most recent ISO (virtio-win-0.1.248.iso in this case) and select "copy link"
See "Download the ISO directly to Proxmox (Option 2)" and paste the copied URL into the URL field
Click Download
Install Windows on Proxmox
As noted earlier, the steps to install Windows are similar to that of installing Linux, so I'm only going to highlight some of the key points below.
Gallery: Install Windows on Proxmox
Follow the steps in "Download the ISO (Option 1)" above, but download the Windows ISO from Microsoft
Follow the steps in "Upload the ISO to Proxmox (Option 1 continued)" above
Follow the steps in "Create the Linux Virtual Machine framework in Proxmox" above, but keep the following keys in mind:
In the OS tab, be sure to select "Microsoft Windows" in the Guest OS type and select the version you're installing
In the OS tab, click the checkbox next to "Add addition drive for VirtIO drivers," and select the ISO image you uploaded to the system
In the System tab, select local-lvm for EFI storage
In the System tab, uncheck "Add TPM" unless you need it (e.g.: Windows 10/11 as opposed to Windows server); with this enabled, you will be unable to create snapshots in Proxmox.
Start the VM to boot off of the ISO and follow the standard Windows installation steps; If installing Windows Server, I'd recommend installing the GUI if you're a beginner so that it's available on console
If you need to send special commands to the console, such as ctrl-alt-delete for a server or a domain-joined system, you do it by clicking the arrow between summary and the console, clicking the "A" that represents the keyboard, and then clicking the bottom selection of "Send Ctrl-Alt-Del"
If you're planning on installing Windows 11, note that by default it requires a network connection, but you won't have one until you can install the VirtIO tools in the process listed below. To get around this, on the page asking for networking, press SHIFT-F10 on the keyboard, open a command prompt, and type the following command: OOBE\BYPASSNRO
This will cause the system to reboot. When it comes to the network setup page again, there will be a link that allows you to bypass the configuration and continue the installation
Install VirtIO Drivers on Windows
As long as you followed the previous steps, then instalilng the drivers will be easy.
Gallery: Install VirtIO on Windows
Select the drive in Windows that contains the virtio-win drivers you mounted in step 5 above.
Right click on virtio-win-guest-tools
Select Run As Administrator
Click the checkbox next to "I agree to the licensing terms and conditions"
Click Install
Click the checkbox next to "I accept the terms in the License Agreement"
Accept all of the default features and click Next
Click Install
Once done, you'll see devices being added to the server - network connectivity, USB, etc.
Click Finish
Click Close on the "Installation Successfully" screen
Do steps 12-19 in the section, "Install the QEMU agent"
Conclusion
If you've followed all of the steps in this tutorial, you now have both a Linux and a Windows virtual machine running on Proxmox. From here, you can install whatever you want on either system. Perhaps you want to host your own Active Directory domain? Or run your own webserver? Maybe you want to play with Docker on your Linux host and install some tools to run in your home. I'll continue to dig into the options, but if you have anything specific you'd like to see me cover in a future article, let me know in the comments below.