Reading time: ~12 minutes Audience: Proxmox beginners who have just installed the hypervisor
What Is a Proxmox VM?
Overview
A Virtual Machine (VM) on Proxmox is a full computer emulated in software. It has its own virtual CPU, RAM, disk, and network card. Unlike a container (LXC), a VM runs its own kernel and can run any operating system—Windows, Linux, BSD, or even macOS (with hacks). This tutorial walks you through creating an Ubuntu Server 24.04 LTS VM, the standard starting point for most homelab services.
Key Benefits
- Isolation: A crashed VM does not affect the host or other VMs.
- Snapshots: Freeze the entire VM state before updates. Roll back in seconds.
- Hardware flexibility: Add or remove RAM, CPU cores, and disks without opening a case.
- Migration: Move a running VM to another Proxmox node (with shared storage).
Prerequisites
Hardware Requirements
- Proxmox host installed (bare metal or nested)
- At least 4 GB free RAM on the host
- At least 20 GB free storage (local-lvm, ZFS, or NFS)
Software Requirements
- Ubuntu Server 24.04 LTS ISO (download from ubuntu.com)
- Proxmox web UI access (https://your-proxmox-ip:8006)
Knowledge Prerequisites
- Basic understanding of IP addresses and subnetting
- Comfort with a Linux terminal (SSH or web shell)
Step 1: Upload the Ubuntu ISO to Proxmox
Objective
Before you can install a VM, Proxmox needs access to the installation media. You upload the ISO to the node’s local storage.
Step-by-Step Instructions
- Log in to the Proxmox web UI (
https://<proxmox-ip>:8006). - Select your node in the left sidebar (e.g.,
pve). - Click local under the node, then the ISO Images tab.
- Click Upload and select your Ubuntu Server 24.04 ISO file.
- Wait for the upload to complete. The ISO will appear in the list.
Alternative (CLI):
# SSH into Proxmox
scp ubuntu-24.04-live-server-amd64.iso root@<proxmox-ip>:/var/lib/vz/template/iso/
Step 2: Create the VM
Objective
Create a new VM with 2 CPU cores, 4 GB RAM, and a 32 GB disk.
Step-by-Step Instructions
- Click the Create VM button in the top right.
- General Tab:
- VM ID: 100 (or the next available ID)
- Name:
ubuntu-server-01 - Start at boot: Unchecked (for now)
- OS Tab:
- Use CD/DVD disc image file: Select the Ubuntu ISO you uploaded.
- Guest OS Type: Linux
- Version: 6.x - 2.6 Kernel (or Ubuntu 24.04 if available)
- System Tab:
- Machine: q35 (modern, supports PCIe passthrough)
- BIOS: SeaBIOS (default) or OVMF for UEFI. For beginners, use SeaBIOS.
- Add EFI Disk: Not needed for SeaBIOS.
- QEMU Agent: Check Use QEMU Agent (enables guest reporting and shutdown from host).
- Disks Tab:
- Bus/Device: SCSI (default)
- Storage: local-lvm (or your ZFS pool)
- Disk size: 32 GB
- Cache: Write back (default)
- Discard: Check (helps with thin provisioning on SSDs)
- CPU Tab:
- Sockets: 1
- Cores: 2
- Type: host (passes host CPU features for best performance)
- Memory Tab:
- Memory: 4096 MB (4 GB)
- Ballooning: Unchecked (for beginners, keep it simple)
- Network Tab:
- Bridge: vmbr0 (default LAN bridge)
- VLAN Tag: Leave blank (or set if you use VLANs)
- Firewall: Checked (Proxmox firewall rules will apply)
- Confirm Tab: Review the summary. Click Finish.
The VM will appear in the left sidebar.
Step 3: Install Ubuntu Server
Objective
Boot the VM from the ISO and install Ubuntu Server.
Step-by-Step Instructions
- Select the VM (
ubuntu-server-01) and click Start. - Click Console to open the VNC window.
- The VM will boot from the ISO. Select Try or Install Ubuntu Server.
- Language: English
- Keyboard layout: US (or your layout)
- Network: The VM will get an IP from your LAN DHCP (e.g.,
192.168.1.101). Note this IP. - Proxy: Leave blank (unless you have a corporate proxy)
- Mirror: Default (Ubuntu archive)
- Storage: Guided - use entire disk. Select the 32 GB virtual disk. Confirm.
- Profile:
- Your name: Homelab Admin
- Server name: ubuntu-01
- Username: admin
- Password: Choose a strong password. Confirm it.
- SSH: Check Install OpenSSH server. This is critical for remote management.
- Featured Server Snaps: Skip for now (we will install Docker later).
- The installer will partition, copy files, and install the kernel. This takes 5–10 minutes.
- When finished, select Reboot Now. The VM will restart.
Important: After the first reboot, the VM will try to boot from the ISO again. In the Proxmox web UI, go to Hardware → CD/DVD Drive and click Remove or change it to Do not use any media. Then restart the VM.
Step 4: Configure the VM and Install QEMU Guest Agent
Objective
Ensure the VM reports its IP to Proxmox and can be shut down gracefully.
Step-by-Step Instructions
- In the VM console, log in with the username and password you created.
- Check the IP:
bash ip addr showLook foreth0orens18with an IP like192.168.1.101. - Install QEMU Guest Agent:
bash sudo apt update && sudo apt install qemu-guest-agent -y sudo systemctl enable qemu-guest-agent sudo systemctl start qemu-guest-agent - In the Proxmox web UI, the VM’s Summary tab should now show the IP address under “IPs.”
- Test a graceful shutdown:
- In Proxmox, right-click the VM → Shutdown.
- The VM should power off cleanly within 10 seconds.
Step 5: Create a Cloud-Init Template (Advanced but Recommended)
Objective
Cloud-init lets you clone VMs with pre-configured hostnames, SSH keys, and IPs. This is how production Proxmox users deploy VMs.
Step-by-Step Instructions
- Download the cloud image (instead of the ISO):
bash cd /var/lib/vz/template/iso/ wget https://cloud-images.ubuntu.com/noble/current/noble-server-cloudimg-amd64.img - Create a new VM (ID 9000, name
ubuntu-cloud-template) with no disk. - Import the image as a disk:
bash qm importdisk 9000 noble-server-cloudimg-amd64.img local-lvm - In the VM hardware, attach the imported disk as SCSI.
- Add a CloudInit drive (CD-ROM) in the hardware list.
- In the Cloud-Init tab of the VM:
- Set User:
admin - Set Password: (or better, add an SSH public key)
- Set IP Config:
ip=192.168.1.0/24,gw=192.168.1.1(use DHCP for beginners) - Convert the VM to a template:
bash qm template 9000 - Clone the template to create new VMs in seconds:
bash qm clone 9000 101 --name ubuntu-web --full qm clone 9000 102 --name ubuntu-db --full
Pro Tips
Tip 1: Use Snapshots Before Major Changes
Before you run apt upgrade or install a risky app, take a snapshot:
- In Proxmox, select the VM → Snapshots → Take Snapshot. Name it “pre-upgrade.”
- If something breaks, right-click the snapshot → Rollback.
Tip 2: Reserve RAM for the Host
Never allocate 100% of host RAM to VMs. Proxmox needs 2–4 GB for itself, ZFS ARC, and overhead. If your host has 32 GB, cap VM allocations at 28 GB.
Tip 3: Enable Firewall Rules
Go to Datacenter → Firewall and enable the host firewall. Then, in each VM’s Firewall tab, add rules: - Allow SSH (port 22) from your LAN subnet. - Block everything else by default.
This adds a layer of protection even if the VM’s OS firewall is misconfigured.
Tip 4: Use Spice for Better Console Performance
VNC is slow for video. If you need to interact with a desktop VM, install spice-vdagent and use the SPICE console instead of VNC.
Troubleshooting Common Issues
Problem 1: “No Boot Device Found”
Cause: The ISO is still mounted, or the disk boot order is wrong.
Fix: - Go to Hardware → CD/DVD Drive and remove the ISO. - Go to Options → Boot Order and ensure the disk is first. - Restart the VM.
Problem 2: VM Gets No IP Address
Cause: The network bridge vmbr0 is not connected to a LAN with DHCP, or the VM’s NIC is disconnected.
Fix:
- Check that vmbr0 on the Proxmox host has a valid IP.
- In the VM hardware, ensure the network adapter is connected (checkbox).
- Try setting a static IP in the VM if your LAN has no DHCP.
Problem 3: QEMU Guest Agent Does Not Show IP
Cause: The agent is not installed, or the VM was created without “QEMU Agent” checked.
Fix:
- Install qemu-guest-agent inside the VM.
- Shut down the VM, go to Hardware → Options, and ensure QEMU Agent is enabled.
- Start the VM and wait 30 seconds.
Conclusion
Summary
You have created your first VM on Proxmox, installed Ubuntu Server, and configured QEMU Guest Agent. This is the foundation of your homelab. From here, you can clone VMs, take snapshots, and deploy Docker inside the VM for application hosting.
Next Steps
- [internal_link] Install Docker inside the VM: read our Docker Compose for beginners.
- [internal_link] Set up a reverse proxy: see our Portainer and NGINX Proxy Manager guide.
- [internal_link] Ready for more VMs? Learn about cloud-init templates for instant cloning.
Affiliate Opportunities
- Proxmox mini PCs: Beelink, Minisforum, Intel NUC
- Ubuntu Server: Official Ubuntu Pro subscriptions
- Courses: Linux Foundation sysadmin courses
Internal Linking Strategy
what-is→proxmox-beginner-guide-2026— “learn Proxmox from scratch”prerequisites→beelink-mini-pc-proxmox— “hardware for your Proxmox host”conclusion→docker-compose-for-beginners— “deploy apps inside your new VM”
CTA
- [comment] What OS did you install in your first Proxmox VM? Ubuntu, Debian, or something else?
- [newsletter] Subscribe for more Proxmox tutorials, VM templates, and homelab automation.