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
| Part | What it is |
|---|---|
| Proxmox VE 9.2 | The hypervisor that runs the physical machine, managed in a browser on port 8006 |
| The VM | 4 virtual cores, 8 GB of RAM, a 64 GiB virtual disk and a network card on your LAN |
| Ubuntu 26.04 Desktop | The guest operating system, installed from an ISO that Proxmox downloads |
| noVNC console | The 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.
| Setting | What to do |
|---|---|
| Intel VT-x / AMD SVM | Enable. 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 loss | Always On or Last State, so the host comes back after a power cut. |
| Secure Boot | Leave 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.
- In the left-hand tree, select local (pve) > ISO Images > Download from URL.
-
Paste the ISO's address. It must name the
.isofile itself; a folder address resolves to a web page, not an image.https://releases.ubuntu.com/26.04/ubuntu-26.04-desktop-amd64.iso -
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.
Before Query URL: “Please (re-)query URL to get meta information.”
After: the file name, 6.07 GiB size and application/x-iso9660-imagetype appear, and Download is active. -
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.
A good download saves to /var/lib/vz/template/iso/and ends inTASK OK.
The ISO is listed under local (pve) > ISO Images.
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)
| Field | Value |
|---|---|
| Storage | local, where the ISO was saved. The VM's own disk goes elsewhere. |
| ISO image | ubuntu-26.04-desktop-amd64.iso |
| Type / Version | Linux / 7.x - 2.6 Kernel, the current Linux entry. It only sets defaults later in the wizard. |
Set the agent and firmware (System)
Default here and switched to VirtIO-GPU later. Either works.| Field | Value |
|---|---|
| Qemu Agent | Check 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 card | Default, or VirtIO-GPU for a smoother desktop. Neither gives 3D acceleration. If the console misbehaves, go back to Default. |
| Machine | Default (i440fx) works. Choose q35 now if you might pass a GPU through later; changing it afterwards is disruptive. |
| BIOS | Default (SeaBIOS) works. OVMF (UEFI) is needed for Secure Boot or a virtual TPM in the guest, and adds an EFI disk. |
| SCSI Controller | VirtIO SCSI single. Leave it (why). |
Size the disk (Disks)
| Field | Value |
|---|---|
scsi0 | The VM's disk, /dev/sda inside Ubuntu. You don't need a second disk. |
| Storage | local-lvm (or local-zfs). Space is used as the VM fills the disk, not all at once. |
| Disk size | 64 GiB. Ubuntu Desktop and everyday apps need 40–64 GiB. Growing the disk later is easy; shrinking it isn't. |
| Discard | Check it on SSD or NVMe storage, so space freed inside Ubuntu is returned to the host. |
| IO thread | Leave it checked. It stops heavy disk use from stalling the rest of the VM. |
Why SCSI rather than VirtIO Block, SATA or IDE
- SCSI (the default) uses
virtio-scsi, where guest and host cooperate instead of the host imitating real hardware. It supports discard and many disks per controller. - VirtIO Block is just as fast and also supports discard. SCSI wins on consistent
/dev/sd*names, more disks per controller and device pass-through. - SATA and IDE imitate old hardware register by register, which is slow. They exist for systems too old to have VirtIO drivers.
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.
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.
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.
On the Network tab, keep the defaults:
| Field | Value |
|---|---|
| Bridge | vmbr0. The VM joins your network as its own device and gets an address from your router. |
| Model | VirtIO (paravirtualized). Much faster and lighter than the emulated Intel and Realtek cards, which exist for systems without VirtIO drivers. |
| Firewall | Checked 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.
scsi0 has no discard=on because Discard was left unchecked; yours should include it.What each line means
| Line | Meaning |
|---|---|
agent 1 | Guest agent expected; install it in Ubuntu |
sockets 1, cores 4 | Four virtual cores |
cpu host | The host CPU's features are passed through |
memory 8192 | 8 GiB of RAM |
ostype l26 | Linux, from the OS tab |
ide2 local:iso/…,media=cdrom | The installer ISO as a virtual DVD drive |
scsi0 local-lvm:64,iothread=on | The 64 GiB disk; add discard=on if missing |
scsihw virtio-scsi-single | One SCSI controller per disk, which allows the IO thread |
net0 virtio,bridge=vmbr0,firewall=1 | The network card on your LAN, firewall flag set |
vga virtio | VirtIO-GPU; absent if you kept Default |
numa 0, vmid 100 | NUMA 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:
Open pve > Updates > Repositories. Two rows point at enterprise.proxmox.com:
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.
- Select
pve-enterprise.sourcesand click Disable. - Select
pve-ceph.sourcesand click Disable. - Click Add, choose No-Subscription and confirm.
- Click Reload, then update the package list again.
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.
- Click OK to close the error.
- Click Start in the top bar and wait for the VM's icon in the left tree to turn green.
- Click Console.
The Ubuntu logo appears in the console. Click inside it to send your keyboard and mouse to the VM.
5. Install Ubuntu
Follow the guided installer. Three screens need a decision.
Proprietary software
- Third-party software for graphics and Wi-Fi: leave unchecked. It's for physical hardware the VM doesn't have.
- Support for additional media formats: check it if you'll play video or audio in the VM.
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.
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.
- In Ubuntu, open Settings > System > Remote Desktop.
- Turn on desktop sharing and remote control.
- Set the remote desktop username and password. They're separate from your Ubuntu login.
- 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:
- installing Proxmox itself, or the firmware settings (every board differs);
- Discard checked, or the Ceph repository disabled (both missed in the session);
VirtIO-GPUon the System tab, orq35(the graphics card was changed later; the machine type wasn't);- the media codecs checked;
- the guest agent or remote desktop steps.
The screenshots are 1024 pixels wide or less, so small interface text is soft; the text and tables give every setting you need.