Skip to main content

Building a Virtual Machine & Templates

This article covers creating and configuring a full virtual machine in Proxmox. The example uses Ubuntu Server as the guest OS. Ubuntu Server is best lightweight option for running server as virtual machine. Unlike Ubuntu Desktop, this VM is accessed via command line, doesn't have GUI.

 

Uploading ISO Image

 

  1. In the web console, navigate to your node > local storage > ISO Images
  2. Click Upload and upload a Linux ISO (e.g., Ubuntu Server), OR
  3.  Click Download from URL and paste a direct ISO link to have Proxmox download it directly

 

Create Virtual Machine

 

  1.  Click the Create VM button in the top right corner
  2.  General tab:
        • Node: select your node
        • VM ID: auto-assigned (e.g., 100)
        • Name: give it a descriptive name (e.g., ubuntu-server)
  3.  OS tab:
        • Select the uploaded ISO from storage
        • Guest OS Type: Linux; Version: 6.x - 2.6 Kernel
  4. System tab:
        • Machine: Default (i440fx) for Linux; q35 for Windows or PCIe passthrough
        • BIOS: SeaBIOS (default) or OVMF (for UEFI)
        • Enable Qemu Agent — check this box (we will install the agent later)
  5. Disks tab:
        • Bus/Device: VirtIO Block (virtio0) — best performance
        • Storage: local-lvm (default)
        • Disk Size: 32 GB minimum for Ubuntu Server
        • Enable SSD emulation if using an SSD-backed storage
  6. CPU tab:
        • Sockets: 1
        • Cores: 2 (or more depending on your server)
        • Type: x86-64-v2-AIO or host (host gives best performance but reduces migration flexibility)
  7.  Memory tab:
        • RAM: 2048 MB (2 GB) minimum for Ubuntu Server
        • Enable Ballooning if you want dynamic memory allocation
  8. Network tab:
        • Bridge: vmbr0 (the default bridge connected to your physical NIC)
        • Model: VirtIO (paravirtualized) — best network performance
  9. Confirm tab — review settings and click Finish

 

Start and Install the OS

 

  1. Select your new VM in the left panel
  2. Click Start, then click Console to open the display
  3. Follow the OS installation wizard (Ubuntu Server example):
        • Select language and keyboard layout
        • Configure network (DHCP by default)
        • Configure storage — use the entire disk
        • Create your user account and set a password
        • Install SSH server when prompted (important for remote access)
        • Complete installation and reboot

 

Virtual Machine Templates

Templates allow you to quickly clone new VMs without repeating the installation process.

Note: Converting a VM to a template is permanent. Clone it first if you want to keep the original running VM.

Preparing a VM for Template

  1. Start with a fully installed and updated VM
  2. Log into the VM and clean it up:
sudo apt clean
sudo apt autoremove -y
  1.  Clear machine-specific data (cloud-init or sysprep approach):
sudo apt install -y cloud-init
  1. Clear the machine ID so each clone gets a unique one:
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:
sudo shutdown -h now

 

Converting to a Template

  1. In the Proxmox web console, right-click the VM
  2. Select Convert to Template
  3. Confirm the VM icon changes to a template icon

 

Cloning from a Template

  1. Right-click the template and select Clone
  2. Choose:
        • Mode: Full Clone (independent copy) or Linked Clone (shares template disk, faster but dependent)
        • Name: give the new VM a name
        • Target Storage: where to store the clone's disk
  3. Click Clone Proxmox creates the new VM
  4. Configure the clone (resize disk if needed, set static IP, etc.) before starting it