VM1
VM2
VM3
Proxmox VE
vm • template • clone

How to Use Proxmox to Create Isolated VMs for Each Project

Install Proxmox VE, create VMs, clone from templates, and manage storage for homelab projects that need isolated environments.

14 min read16/06/2026

The problem: one machine, many things to try

You have an old PC or mini server and want to run several things on it at once:

  • One VM running Ubuntu to test backend project A
  • Another VM running Debian for project B
  • A VM with k3s to learn Kubernetes
  • A VM running Pi-hole as a local DNS server

Running all of this on a single OS means constant conflicts: port clashes, incompatible package versions, installing one thing breaking another. Tearing it all down and starting over wastes hours.

Proxmox solves this by giving each project a completely isolated environment. Experiment, break things, delete, clone from scratch — none of it touches any other machine.

What Proxmox VE is, briefly

Proxmox Virtual Environment (PVE) is an open-source virtualization platform that installs directly on bare metal and is managed through a web UI. It runs two types of virtual environments:

  • VMs (KVM): full virtual machines, run any OS, completely isolated
  • LXC containers: lighter than VMs, share the host kernel, faster to start

This guide focuses on VMs because they're the best fit for "one isolated environment per project."


Installing Proxmox on a machine

Minimum requirements

  • 64-bit CPU with VT-x (Intel) or AMD-V support
  • 4GB RAM (8GB+ recommended in practice to run several VMs at once)
  • 32GB+ storage
  • Note: Proxmox installs on bare metal and takes over the entire machine — it's not installed inside Windows or Linux

Download the ISO and create a boot USB

Download the ISO from proxmox.com/downloads, choose Proxmox VE ISO Installer, latest version.

Create the boot USB:

# Linux
sudo dd if=proxmox-ve_*.iso of=/dev/sdX bs=4M status=progress

# or use Balena Etcher on Windows/macOS

Installation

Boot from USB — the process is similar to installing Ubuntu Server:

  1. Choose the disk to install Proxmox on
  2. Set timezone and keyboard layout
  3. Enter email and set the root password
  4. Configure networking: set a static IP for the Proxmox host (e.g., 192.168.1.10/24)
  5. Installation completes, machine reboots

After rebooting, access the web UI at:

https://192.168.1.10:8006

Log in with root and the password you set. The browser will warn about a self-signed SSL certificate — skip and continue.


Creating the first VM

Upload an ISO to Proxmox

In the web UI: local (default storage) → ISO ImagesUpload → select Ubuntu/Debian ISO.

Or download directly by URL:

local → ISO Images → Download from URL

Paste a direct link to an Ubuntu/Debian minimal ISO and Proxmox will download it.

Create a VM

Click Create VM in the top right:

Tab Important settings
General Name the VM, choose a VM ID (auto-increments)
OS Select the ISO, type: Linux
System Keep default q35, BIOS SeaBIOS or OVMF for UEFI
Disks Choose local-lvm storage, set size, enable Discard for SSDs
CPU Number of cores, type host to expose full host CPU features
Memory RAM allocation for this VM
Network Bridge vmbr0 (LAN), model VirtIO

Once created, select the VM → StartConsole to install the OS normally.


Templates and cloning — Proxmox's biggest advantage

Creating a VM from scratch takes 10–15 minutes every time. Proxmox's template + clone workflow lets you spin up a new VM in seconds.

Creating a template

  1. Set up a clean Ubuntu VM with your standard packages installed (git, curl, docker...)
  2. Inside the VM, reset the machine ID to prevent cloned VMs from sharing it:
sudo cloud-init clean
# or if not using cloud-init:
sudo truncate -s 0 /etc/machine-id
sudo rm /var/lib/dbus/machine-id
sudo ln -s /etc/machine-id /var/lib/dbus/machine-id
  1. Shut down the VM
  2. In the Proxmox UI, right-click the VM → Convert to Template

The VM becomes a template (icon changes) and can no longer be started directly.

Cloning a VM from a template

Right-click the template → Clone:

  • Full Clone — creates a completely independent copy, no dependency on the template
  • Linked Clone — lighter, shares disk storage with the template via snapshots (saves space but depends on the template remaining intact)

For typical homelab use, Full Clone is simpler. Clone → Start → SSH in and you have a clean environment immediately.


Managing storage

Default storage types

After installing Proxmox, there are two storage locations by default:

  • local: for ISOs, backups, templates — directory format
  • local-lvm: for VM disks — LVM thin pool format, better performance

Adding a second drive

If you have an additional HDD or SSD to use for VMs:

# List available drives
lsblk

# Partition the new drive (be careful to select the correct one)
fdisk /dev/sdb
# Create a new partition, type Linux

# Set up LVM
pvcreate /dev/sdb1
vgcreate data-vg /dev/sdb1
lvcreate -L 200G -T data-vg/data-pool  # 200GB thin pool

Then in the Proxmox UI: DatacenterStorageAddLVM-Thin, select the VG and pool just created.

Adding a disk to a running VM

Select the VM → HardwareAddHard Disk → choose storage and size → Add.

Inside the VM, the new disk appears as /dev/vdb (unpartitioned). Format and mount normally:

sudo fdisk /dev/vdb
sudo mkfs.ext4 /dev/vdb1
sudo mount /dev/vdb1 /data

Resizing a VM disk

In the Proxmox UI: select the VM → Hardware → select the disk → Resize Disk → enter additional GB.

Then inside the VM, resize the partition and filesystem:

# For an ext4 disk
sudo growpart /dev/vda 1
sudo resize2fs /dev/vda1

# For LVM inside the VM
sudo pvresize /dev/vda3
sudo lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv
sudo resize2fs /dev/ubuntu-vg/ubuntu-lv

Snapshots — checkpoint before risky experiments

Proxmox lets you snapshot a VM at any point, even while it's running.

Select the VM → SnapshotsTake Snapshot:

  • Give it a descriptive name: before-install-k8s, clean-state
  • Check Include RAM to snapshot memory state too (VM resumes exactly where it left off when restored)

If something you install breaks the VM, select the old snapshot → Rollback to return to the previous state.


Networking in Proxmox

Default bridge vmbr0

All VMs connected through vmbr0 join the same LAN as the host. VMs can get IPs via DHCP from the router or use static IPs normally.

Creating an internal network between VMs

To let VMs communicate with each other without exposing them to the LAN:

In the Proxmox host → SystemNetworkCreateLinux Bridge:

Name: vmbr1
IP: 10.10.10.1/24   # Proxmox host's IP on this bridge
Comment: internal lab network

When creating a VM, add a second network card connected to vmbr1. VMs on vmbr1 can talk to each other over the 10.10.10.x range.


Useful tips

Set static IPs via DHCP reservation Rather than configuring static IPs inside each VM, set DHCP reservations on the router by MAC address. Easier to manage — changing an IP means changing it in one place.

Use SSH keys instead of passwords In the template, enable SSH and add your public key to ~/.ssh/authorized_keys. Every cloned VM is immediately accessible over SSH without a password.

Dark mode for the web UI Proxmox 8.x includes dark mode. Go to Preferences (avatar, top right) → Color Theme → Dark.

View real-time resource usage The Summary tab for each VM shows live CPU, RAM, and disk I/O. Useful for spotting which VM is consuming the most resources.


Common errors

Black screen in console after boot

Usually the VM is booting but not outputting to the serial console. Try pressing Enter once in the console window. If still black, check that the VM has an ISO attached and the boot order is correct (OptionsBoot Order).

VM created but can't get an IP

Check the VM's network card is using vmbr0. If using the LAN's DHCP, the router needs to see the VM. Ping from the host to verify:

ping 192.168.1.xxx

Proxmox shows subscription error during updates

Proxmox has an enterprise (paid) edition and a community one. To update without a subscription, swap the repo:

# Disable enterprise repo
echo "# deb https://enterprise.proxmox.com/debian/pve bookworm pve-enterprise" \
  > /etc/apt/sources.list.d/pve-enterprise.list

# Add no-subscription repo
echo "deb http://download.proxmox.com/debian/pve bookworm pve-no-subscription" \
  > /etc/apt/sources.list.d/pve-no-subscription.list

apt update && apt dist-upgrade

Cloned VMs have duplicate hostname and IP

Caused by not resetting the machine ID before converting the template. For already-cloned VMs, fix each one:

sudo hostnamectl set-hostname new-name
# update /etc/hosts to match
sudo truncate -s 0 /etc/machine-id
sudo systemd-machine-id-setup

When not to use Proxmox

  • Machine only has 4GB RAM: Proxmox host uses ~1GB, leaving only 3GB for VMs — very tight
  • Only need a single test environment: WSL2 on Windows or a single VirtualBox VM is enough
  • Already on Kubernetes: k3s/k8s handles isolation on its own; you don't need a VM layer unless you need multi-node on one machine
  • CPU doesn't support VT-x/AMD-V: KVM VMs won't run (LXC containers still will)