How to Create a New Virtual Machine (VM) in Proxmox VE 🖥️
Proxmox Virtual Environment (VE) is a powerful, open-source hypervisor that combines KVM for virtual machines and LXC for container-based virtualization. While the interface is user-friendly, creating a new Virtual Machine (VM) involves a series of critical steps that define the VM's performance, compatibility, and features.This guide provides a comprehensive, step-by-step walkthrough of the VM creation process, ensuring each setting is configured correctly for a stable and efficient virtual server.
Step 1: Accessing the Proxmox VE Web Interface 🛠️
All virtual machine management is handled through the Proxmox web-based graphical user interface (GUI). Before creating a VM, you must first authenticate to your Proxmox host.You can access the interface using one of two methods:
- By IP Address: Navigate to your server's static IP address on port 8006.
https://[Your-Server-IP]:8006/
- By Hostname: Navigate to the fully qualified domain name of your host.
https://[proxmox.your-domain.com]:8006/
https://proxmox.jetto.net:8006/), you must have pre-configured the necessary A (or AAAA) records in your DNS server, pointing that hostname to the Proxmox host's IP address.Step 2: Initiating the VM Creation Wizard 🧙♂️
Upon accessing the Proxmox GUI, the VM creation process is initiated from the Datacenter view.- In the left-hand navigation tree, locate your physical host node under the "Datacenter" hierarchy. (The default name for this node is often
pve, which is set during the initial Proxmox installation). - Right-click the physical node and select "Create VM" from the context menu.
- VM ID: This field requires a unique numerical identifier for the virtual machine. This ID is how the Proxmox cluster fundamentally manages and differentiates the VM. The system will automatically suggest the next available sequential number (e.g., 100, 101, 102), but any available ID can be used. For this guide, we will specify
300. - Name: This is the human-readable, descriptive name for the VM. Unlike the VM ID, this name serves as a label to identify the VM's purpose or project. As this VM is intended to be a VPN server, we will assign the name
vpn-server.
Step 3: Configuring the Guest OS 👨💻
The "OS" tab is where the installation media and the guest's compatibility profile are defined.- Select Installation Media:
- Select the "Use CD/DVD disc image file (iso)" option.
- Storage: From the first dropdown, select the storage pool where your ISO images are located (e.g.,
local). - Image: From the second dropdown, choose the specific ISO file you intend to install, such as
ubuntu-24.04-server.iso.
- Define Guest OS Type:
- Type: This setting informs Proxmox which type of operating system to optimize for. As we are installing Ubuntu, set this to
Linux. (Conversely, this would be set toWindowsfor a Windows Server installation). - Version: This is a compatibility profile. For a modern operating system like Ubuntu 24.04, you must select the latest available kernel profile, which is typically "6.x / 5.x kernel".
- Type: This setting informs Proxmox which type of operating system to optimize for. As we are installing Ubuntu, set this to
Click Next to proceed to the "System" tab.Note: Selecting an older kernel version (like 2.6/3.x) is only intended for legacy operating systems and may cause boot or performance issues if misconfigured with a modern OS.
Step 4: Configuring System Hardware ⌨️
The "System" tab defines the virtual hardware drivers and security features for the VM.- Qemu Agent:
- Check the box labeled "Qemu Agent".
- This is a critical setting that enables communication between the Proxmox host and the guest OS for tasks like graceful shutdowns and retrieving accurate resource usage.
- Note: Activating this checkbox is only the first step. The corresponding
qemu-guest-agentsoftware must be installed inside the guest operating system after the VM is built. (You can follow this guide for the guest OS installation: https://www.jetto.net/threads/how-to-install-qemu-guest-agent-on-proxmox-vms-debian-ubuntu.167/)
- Other Settings:
- The default settings for
Graphic card,SCSI Controller(VirtIO SCSI Single), andBIOS(SeaBIOS) are typically optimal for a modern Linux VM. - TPM (Trusted Platform Module): Leave this disabled. TPM is a security feature primarily required for Windows 11 and is not necessary for this Linux server setup.
- The default settings for
Step 5: Defining the Virtual Disk 💾
The "Disks" tab is used to configure the primary storage volume for the VM's operating system.- Storage:
- From the "Storage" dropdown, select the target storage pool where the virtual disk file will reside. If your host has multiple configured storage backends (e.g.,
local-lvm,local-zfs, or a shared storage like Ceph), they will all appear in this list. Select the one you intend to use.
- From the "Storage" dropdown, select the target storage pool where the virtual disk file will reside. If your host has multiple configured storage backends (e.g.,
- Disk size (GiB):
- In this field, specify the total capacity you wish to allocate for the virtual disk. For this guide, we will allocate
100 GiB.
- In this field, specify the total capacity you wish to allocate for the virtual disk. For this guide, we will allocate
- Advanced Settings (Recommendation):
- This page contains several advanced options, such as the
Bus/Device(e.g., VirtIO Block, IDE, SATA),Cachemode, andFormat(e.g., QEMU image format, Raw). - For optimal performance and stability with a modern Linux guest, it is strongly recommended to leave these settings at their defaults (typically "VirtIO Block" and "QEMU image format"). Altering these parameters without a specific technical requirement can introduce significant risks or performance bottlenecks.
- This page contains several advanced options, such as the
Step 6: Configuring CPU Resources ⚡
The "CPU" tab allows you to allocate processing power to your virtual machine.- Sockets and Cores:
- These fields define the virtual CPU (vCPU) topology. The total number of vCPUs available to the guest OS will be (
SocketsxCores). - For a lightweight application like a VPN server, a minimal allocation is often sufficient. We will configure
1Socket and1Core, for a total of 1 vCPU. - For more demanding workloads, you would scale these numbers based on your physical host's available resources.
- These fields define the virtual CPU (vCPU) topology. The total number of vCPUs available to the guest OS will be (
- Type:
- This setting determines the CPU model presented to the guest OS. For maximum performance, set this to
host. - The
hosttype passes the host CPU's features (instruction sets like AES-NI, AVX, etc.) directly to the VM. This "passthrough" approach eliminates emulation overhead and provides significantly better performance than generic CPU types (likekvm64).
- This setting determines the CPU model presented to the guest OS. For maximum performance, set this to
Step 7: Allocating Memory 💥
The "Memory" tab is straightforward, defining the total RAM available to the VM.- Memory (MiB): Enter the amount of memory you wish to allocate in Megabytes (MiB). This value must be entered as an integer (e.g.,
2048for 2GiB, or4096for 4GiB). - For this VPN server, we will allocate
2048MiB.
Step 8: Configuring Network Hardware 🌎
The "Network" tab defines the VM's virtual network interface controller (vNIC).- Default Configuration: Proxmox automatically selects the best defaults for a modern Linux VM, typically bridging the vNIC to your host's primary bridge (e.g.,
vmbr0) and selecting the high-performanceVirtIO (paravirtualized)model. For most use cases, these defaults should not be changed. - IP Address Configuration:
- DHCP: If your network uses DHCP and you rely on MAC address reservations to assign static IPs, you can enter a specific MAC address in the "MAC address" field. The VM will then boot and request an IP.
- Manual (Static) Configuration: If you do not specify a MAC address, you can leave the field blank. This is the standard approach for servers. The network interface will be configured manually with a static IP address, gateway, and netmask from inside the operating system during the Ubuntu installation process.
Step 9: Review and Confirm Configuration ✅️
The final tab, "Confirm," presents a complete summary of every setting you have configured, from the VM ID and name to the CPU, memory, and disk allocations.This is your last opportunity to verify that all parameters are correct. Carefully review the configuration.
- If you spot an error, you can click "Back" (or click the specific tab in the wizard) to make corrections.
- If all settings are accurate, click the "Confirm" button to provision the virtual machine.
This concludes the VM creation process. However, the VM is currently an empty shell; the operating system is not yet installed. The next phase involves starting the VM, opening the "Console," and proceeding with the Ubuntu 24.04 installation from the ISO image you attached.
We'll cover that installation process in a separate guide.
✅️