This guide creates your first virtual machine in Proxmox VE — a barebones Ubuntu 24.04 server you can use as a template later. You will go from "fresh Proxmox install" to "SSHing into a VM" in about 15 minutes.
Prerequisites
- Proxmox VE 8 installed (see Install Proxmox VE 8).
- Logged into the web UI as a user with VM permissions.
- The Ubuntu 24.04 server ISO on hand.
Step 1: Upload the ISO
In the web UI:
- Select your node → local (pve) storage → ISO Images → Upload.
- Pick the Ubuntu ISO. Wait for the upload to finish.
Or via SSH (faster on a fast network):
cd /var/lib/vz/template/iso/
wget https://releases.ubuntu.com/24.04/ubuntu-24.04-live-server-amd64.iso
sha256sum ubuntu-24.04-live-server-amd64.iso
Step 2: Create the VM
Click Create VM at the top-right.
- General:
- VM ID:
100 - Name:
ubuntu-template - Resource Pool: empty
- VM ID:
- OS:
- Storage:
local - ISO image: the file you just uploaded
- Type: Linux 6.x - 2.6 Kernel
- Storage:
- System:
- Graphic card: Default
- Machine:
q35 - BIOS:
OVMF (UEFI)for modern, or SeaBIOS for legacy - Add EFI Disk: yes, store on
local-lvm, formatraw - SCSI Controller: VirtIO SCSI single
- Disks:
- Storage:
local-lvm - Disk size:
32GiB - Cache: Write back (safer with battery-backed RAID/UPS; use Default otherwise)
- Discard: on (lets the guest tell the host to free unused blocks)
- SSD emulation: on for SSD-backed pools
- Storage:
- CPU:
- Sockets: 1
- Cores: 2
- Type:
host(pass-through, max performance) orx86-64-v2-AES(better for migration between mixed hosts)
- Memory:
- 4096 MiB; tick Ballooning Device
- Network:
- Bridge:
vmbr0 - Model: VirtIO (paravirtualized, fastest)
- Firewall: ticked
- Bridge:
- Confirm: tick Start after created if you're ready.
Step 3: Install Ubuntu inside
Open the VM's Console. Follow the Ubuntu installer same as bare metal — see Install Ubuntu Server 24.04 for the recipe.
When asked about SSH server, tick Install OpenSSH and paste your SSH public key (Ubuntu's installer offers GitHub key import too).
After install, eject the ISO (Hardware → CD/DVD Drive → Edit → "Do not use any media") and reboot.
Step 4: Install qemu-guest-agent inside the VM
The guest agent lets Proxmox cleanly shut down, snapshot consistent disks, and report the VM's IP back to the web UI:
ssh ubuntu@<vm-ip>
sudo apt update && sudo apt install -y qemu-guest-agent
sudo systemctl enable --now qemu-guest-agent
Back on the host, in the web UI VM → Options → QEMU Guest Agent → Edit → Enabled.
Step 5: Convert to a template (optional but useful)
Shut the VM down. In the UI: right-click → Convert to template. Now clone from this template for every future VM — much faster than re-running the Ubuntu installer.
# CLI alternative
qm shutdown 100
qm template 100
# Linked clone (instant, shared blocks)
qm clone 100 101 --name web01 --full 0
# Full clone (independent copy)
qm clone 100 102 --name db01 --full 1
Edit each clone's MAC + hostname before booting.
Step 6: Snapshots and backups
qm snapshot 101 pre-upgrade --description "Before patching to 24.04.2"
qm listsnapshot 101
qm rollback 101 pre-upgrade
qm delsnapshot 101 pre-upgrade
For backups, configure the Datacenter → Backup schedule pointing at your Proxmox Backup Server.
Verify
qm status 101
qm config 101 | head -20
qm guest cmd 101 ping # only works with guest agent up
qm list
Conclusion
A Proxmox VM is just a qm command set on top of QEMU/KVM. The UI is great for first-time setup; once you know the workflow, the CLI (qm, pvesh) is faster and scriptable.
Next steps
- Set up storage backends before your VMs grow.
- Add an offsite Proxmox Backup Server.
- Inside the VM apply the Ubuntu hardening recipe.
Comments
0 total · 0 threads