Nicholas Dodds

Ubuntu desktop on Proxmox

Ubuntu desktop on Proxmox

Create an Ubuntu 26.04 desktop VM in the Proxmox VE 9.2 web interface, and fix the two errors you'll meet on day one.

Tested September 2, 2026 on Proxmox VE 9.2.2; captions note where the screenshots differ from this advice. The guest agent and remote desktop steps weren't run; see Testing and references.

What you'll build

PartWhat it is
Proxmox VE 9.2The hypervisor that runs the physical machine, managed in a browser on port 8006
The VM4 virtual cores, 8 GB of RAM, a 64 GiB virtual disk and a network card on your LAN
Ubuntu 26.04 DesktopThe guest operating system, installed from an ISO that Proxmox downloads
noVNC consoleThe VM's screen in your browser, for installing and rescue; use remote desktop day to day

Before you start

You need Proxmox VE 9.2 already running and reachable on your network. Installing Proxmox isn't covered here.

The Proxmox installer erases its disk

If you haven't installed Proxmox yet: its installer erases the disk you choose, including any existing Windows or other system. Back up first and check the disk before you confirm.

Firmware settings

Set these in the host's BIOS or UEFI setup. Names vary by board.

SettingWhat to do
Intel VT-x / AMD SVMEnable. Required: without hardware virtualization, Proxmox can't start a VM.
Intel VT-d / AMD-Vi (IOMMU)Enable. Not needed now, but it's what lets you pass a GPU or network card through to a VM later.
Power state after AC lossAlways On or Last State, so the host comes back after a power cut.
Secure BootLeave it as it is. Disable it only if the host won't boot (see below).

Proxmox has supported Secure Boot since version 8.1, so older advice to disable it no longer applies. Some boards reject the boot loader that the 9.2 upgrade installs and stop with a security violation at boot. Only in that case, disable Secure Boot.

Use a wired connection

Proxmox puts VMs on your network through a bridge (vmbr0) on a physical network port. Wi-Fi cards won't carry traffic for other devices, so they can't back a bridge. Connect the host to your router or switch with a cable.

1. Download the Ubuntu ISO

Proxmox can download the installer straight to its own storage, so you don't have to download 6 GB to your laptop and upload it again.

  1. In the left-hand tree, select local (pve) > ISO Images > Download from URL.
  2. Paste the ISO's address. It must name the .iso file itself; a folder address resolves to a web page, not an image.

    https://releases.ubuntu.com/26.04/ubuntu-26.04-desktop-amd64.iso
  3. Click Query URL. Until you do, File name is outlined in red and Download stays grey. Nothing is wrong; Proxmox just won't download a file it hasn't checked.

    Proxmox Download from URL dialog with a URL entered, the File name field outlined red and reading Please re-query URL to get meta information, File size and MIME type both showing a dash, and the Download button greyed out
    Before Query URL: “Please (re-)query URL to get meta information.”
    The same Proxmox dialog after clicking Query URL, now showing File name ubuntu-26.04-desktop-amd64.iso, File size 6.07 GiB, MIME type application slash x-iso9660-image, and an active blue Download button
    After: the file name, 6.07 GiB size and application/x-iso9660-image type appear, and Download is active.
  4. Click Download and wait for the task log to end in TASK OK. If it ends any other way, the ISO isn't usable; don't continue.

    Proxmox task viewer showing wget progress reaching 100 percent, a line confirming 6518974464 bytes saved to /var/lib/vz/template/iso/ubuntu-26.04-desktop-amd64.iso, and a final TASK OK
    A good download saves to /var/lib/vz/template/iso/ and ends in TASK OK.

The ISO is listed under local (pve) > ISO Images.

Proxmox local storage ISO Images view listing ubuntu-26.04-desktop-amd64.iso with its size, alongside Upload, Download from URL and Remove buttons

2. Create the VM

Click Create VM at the top right. On the General tab, enter a name (the VM ID is filled in), then click Next. Set the remaining tabs as follows.

Choose the installer ISO (OS)

Create Virtual Machine wizard on the OS tab with Use CD/DVD disc image file selected, Storage set to local, ISO image set to the Ubuntu 26.04 desktop image, Guest OS Type Linux and Version 7.x - 2.6 Kernel
FieldValue
Storagelocal, where the ISO was saved. The VM's own disk goes elsewhere.
ISO imageubuntu-26.04-desktop-amd64.iso
Type / VersionLinux / 7.x - 2.6 Kernel, the current Linux entry. It only sets defaults later in the wizard.

Set the agent and firmware (System)

Create Virtual Machine wizard on the System tab showing Graphic card set to Default, Machine Default i440fx, BIOS Default SeaBIOS, SCSI Controller VirtIO SCSI single, Qemu Agent checked and Add TPM unchecked
The captured session left Graphic card on Default here and switched to VirtIO-GPU later. Either works.
FieldValue
Qemu AgentCheck it. Lets Proxmox shut the guest down cleanly and show its IP address and real memory use, once you install the agent in Ubuntu (step 6).
Graphic cardDefault, or VirtIO-GPU for a smoother desktop. Neither gives 3D acceleration. If the console misbehaves, go back to Default.
MachineDefault (i440fx) works. Choose q35 now if you might pass a GPU through later; changing it afterwards is disruptive.
BIOSDefault (SeaBIOS) works. OVMF (UEFI) is needed for Secure Boot or a virtual TPM in the guest, and adds an EFI disk.
SCSI ControllerVirtIO SCSI single. Leave it (why).

Size the disk (Disks)

Create Virtual Machine wizard on the Disks tab showing a single scsi0 device, Bus/Device SCSI 0, SCSI Controller VirtIO SCSI single, Storage local-lvm, Disk size 64 GiB, Cache Default no cache, Discard unchecked and IO thread checked
Discard is unchecked in this capture; it was missed. Check it. If you already created the VM, edit it under Hardware > Hard Disk.
FieldValue
scsi0The VM's disk, /dev/sda inside Ubuntu. You don't need a second disk.
Storagelocal-lvm (or local-zfs). Space is used as the VM fills the disk, not all at once.
Disk size64 GiB. Ubuntu Desktop and everyday apps need 40–64 GiB. Growing the disk later is easy; shrinking it isn't.
DiscardCheck it on SSD or NVMe storage, so space freed inside Ubuntu is returned to the host.
IO threadLeave it checked. It stops heavy disk use from stalling the rest of the VM.

Why SCSI rather than VirtIO Block, SATA or IDE

The Bus/Device dropdown on the Disks tab expanded to show four options: IDE, SATA, VirtIO Block, and SCSI, with SCSI highlighted as the current selection

Set the cores and CPU type (CPU)

Set Sockets to 1 and Cores to 4. The VM gets sockets × cores, shown as Total cores. Each virtual core uses one host thread, so a 10-core, 20-thread CPU offers 20. Use 6–8 cores for compiling or rendering, and leave a few threads free for the host.

Create Virtual Machine wizard on the CPU tab showing Sockets 1, Cores 4, Total cores 4, and Type at its default value of x86-64-v2-AES

No more cores than the host has threads

Don't give one VM more cores than the host has threads. Proxmox allows it, but the VM gets slower: Ubuntu waits on processors that aren't really running.

Set Type to host

Change Type from the default x86-64-v2-AES to host. The default hides CPU features such as AES-NI and AVX2 so VMs can move between different machines. On a single host there's nowhere to move to, so host makes encryption, compression and number-crunching faster at no cost.

The CPU tab with the Type field being edited and set to host, alongside Sockets 1 and Cores 4

Set memory and keep network defaults (Memory, Network)

Set Memory to 8192 MiB. Ubuntu Desktop runs in 4096 but swaps once a browser is open. Leave the host several gigabytes for itself; Proxmox won't stop you giving it all away.

Create Virtual Machine wizard on the Memory tab with Memory set to 8192 MiB

On the Network tab, keep the defaults:

Create Virtual Machine wizard on the Network tab with Bridge vmbr0, no VLAN tag, Firewall checked, Model VirtIO paravirtualized and MAC address set to auto
FieldValue
Bridgevmbr0. The VM joins your network as its own device and gets an address from your router.
ModelVirtIO (paravirtualized). Much faster and lighter than the emulated Intel and Realtek cards, which exist for systems without VirtIO drivers.
FirewallChecked by default, but it does nothing until you also enable the Proxmox firewall for the datacenter or node, which is off out of the box.

Review and finish (Confirm)

Check the summary against the table below; this is the last easy moment to fix a mistake. Leave Advanced unchecked and click Finish.

Create Virtual Machine wizard on the Confirm tab listing agent 1, cores 4, cpu host, ide2 the Ubuntu ISO as cdrom, memory 8192, net0 virtio bridge vmbr0 firewall 1, nodename pve, numa 0, ostype l26, scsi0 local-lvm 64 iothread on, scsihw virtio-scsi-single, sockets 1, vga virtio and vmid 100
The captured summary. scsi0 has no discard=on because Discard was left unchecked; yours should include it.

What each line means

LineMeaning
agent 1Guest agent expected; install it in Ubuntu
sockets 1, cores 4Four virtual cores
cpu hostThe host CPU's features are passed through
memory 81928 GiB of RAM
ostype l26Linux, from the OS tab
ide2 local:iso/…,media=cdromThe installer ISO as a virtual DVD drive
scsi0 local-lvm:64,iothread=onThe 64 GiB disk; add discard=on if missing
scsihw virtio-scsi-singleOne SCSI controller per disk, which allows the IO thread
net0 virtio,bridge=vmbr0,firewall=1The network card on your LAN, firewall flag set
vga virtioVirtIO-GPU; absent if you kept Default
numa 0, vmid 100NUMA off; the VM's ID

3. Fix the update error

A fresh Proxmox install uses the enterprise package repositories, which refuse access without a paid subscription. Updating the package list fails with exit code 100:

Proxmox task viewer for Update package database showing a single line reading TASK ERROR: command apt-get update failed: exit code 100

Open pve > Updates > Repositories. Two rows point at enterprise.proxmox.com:

Proxmox APT Repositories panel with a warning banner reading The enterprise repository is enabled, but there is no active subscription, listing pve-ceph.sources pointing at enterprise.proxmox.com ceph-squid, two Debian sources, and pve-enterprise.sources pointing at enterprise.proxmox.com, all enabled

Disable both

Most fixes online only mention pve-enterprise. pve-ceph points at the same subscriber-only server, so leaving it on gives the same error.

  1. Select pve-enterprise.sources and click Disable.
  2. Select pve-ceph.sources and click Disable.
  3. Click Add, choose No-Subscription and confirm.
  4. Click Reload, then update the package list again.
Proxmox APT Repositories panel after changes, showing pve.sources added with the pve-no-subscription component, pve-enterprise.sources marked Enabled false, and pve-ceph.sources still enabled and still pointing at enterprise.proxmox.com ceph-squid
In this capture pve-ceph.sources (top row) is still enabled, so the update would still fail. Disable it too.

From the shell instead: Proxmox 9 keeps repositories in /etc/apt/sources.list.d/*.sources as multi-line entries. To disable one, add Enabled: false to its file:

cat /etc/apt/sources.list.d/*.sources
echo 'Enabled: false' | sudo tee -a /etc/apt/sources.list.d/pve-ceph.sources
sudo apt update

The update finishes without error. A banner saying the no-subscription repository “is not recommended for production use” remains; that's expected for a home or lab host.

4. Start the VM

A new VM is stopped, so Console shows VM 100 not running (500). The console only exists while the VM runs.

Proxmox VM summary page with a modal error dialog reading VM 100 not running (500) and a single OK button
  1. Click OK to close the error.
  2. Click Start in the top bar and wait for the VM's icon in the left tree to turn green.
  3. Click Console.

The Ubuntu logo appears in the console. Click inside it to send your keyboard and mouse to the VM.

Proxmox noVNC console showing the Ubuntu logo on a black background as the installer boots, with the task log below listing VM 100 Start and Console entries

5. Install Ubuntu

Follow the guided installer. Three screens need a decision.

Proprietary software

Ubuntu installer screen titled Optimise your computer asking Install recommended proprietary software, with two unchecked boxes: install third-party software for graphics and Wi-Fi hardware, and download and install support for additional media formats
The captured session left both unchecked.

Account

Choose a local account, not Active Directory, which needs a Windows domain controller. Enter your name, a computer name, a username and a password.

Erase disk

Erase disk and install Ubuntu only affects the VM's 64 GiB virtual disk. The host's drives, Proxmox and other VMs are invisible to the installer.

Remove the installation medium

When asked to remove the installation medium, click inside the console and press Enter. If the VM doesn't start the installed system, detach the ISO under Hardware > CD/DVD Drive and check Options > Boot Order.

The noVNC console showing a black screen with the Ubuntu logo and the text Please remove the installation medium, then press ENTER

6. After the install

With Ubuntu running, install the guest agent and set up remote desktop for daily use.

Install the guest agent

This is the Ubuntu half of the Qemu Agent box on the System tab in step 2.

sudo apt update && sudo apt install -y qemu-guest-agent
sudo systemctl enable --now qemu-guest-agent

The VM's summary in Proxmox shows its IP address and real memory use instead of Guest Agent not running, and Shutdown now shuts Ubuntu down cleanly.

Remote desktop for daily use

Not tested: the captured session ended at the install, and GNOME moves these settings between releases, so the menu path on 26.04 may differ.

The browser console is fine for installing and rescue, but has no shared clipboard or sound. GNOME's built-in remote desktop is better day to day.

  1. In Ubuntu, open Settings > System > Remote Desktop.
  2. Turn on desktop sharing and remote control.
  3. Set the remote desktop username and password. They're separate from your Ubuntu login.
  4. From another computer, connect with an RDP client (Windows Remote Desktop, Microsoft Remote Desktop on macOS, or Remmina on Linux) to the IP address shown in Proxmox.

Keep both services off the internet

The Proxmox interface (port 8006) and the VM's remote desktop now listen on your network. Don't forward either port on your router. For access from outside, use a VPN, and give the Proxmox root account a strong password and two-factor authentication under Datacenter > Permissions > Two Factor.

Testing and references

Tested September 2, 2026 on Proxmox VE 9.2.2, with screenshots from that one session on one machine. They don't show:

The screenshots are 1024 pixels wide or less, so small interface text is soft; the text and tables give every setting you need.