The latest version of Debian 13 is upon us, bringing with it many security patches and software updates. But if you’re as deeply integrated into the server landscape as I am, you’re probably excited about the updates added to another platform that relies on Debian. I’m talking about Proxmox, a FOSS virtualization environment that’s easily one of (if not the) best platforms for deploying containers and virtual machines on local hardware.

For those out of the loop, Proxmox 9 was released earlier this week. While the shift to Debian 13 is the standout feature of the platform, the updated version of Proxmox includes a couple of noteworthy additions. Now that I’ve installed Proxmox 9 in my primary workstation, here’s a detailed log of all the steps I took, errors I solved, and new features I encountered in the latest version of the platform.

Taking care of the pre-update tasks

Backing up my LXCs and VMs was a must

I’ve been a member of the computing community for long enough to learn that updates can be a double-edged sword. That’s because broken updates are very much a thing, and while Debian is a lot more stable than certain bleeding-edge distros, there’s also the possibility of something going wrong on my end. Plus, I rely on Proxmox for the majority of my self-hosted services and coding environments, so I couldn’t risk losing my workstation to a buggy update process.

As such, the first order of business was to back up all the containers and virtual machines on my Proxmox node. I’ve got a dedicated Proxmox Backup Server that’s connected to my PVE node, with the PBS instance sending all my VM and LXC data to my NAS. So, I quickly created a backup operation that included every virtual guest on my workstation via the Backup tab, hit the Run now button, and went away to brew some coffee while the PBS node did its magic.

If you don’t have a NAS or the Proxmox Backup Server, I’d still recommend backing everything up. By default, Proxmox stores the backups inside your local directory, which can be a bit cumbersome to recover if things go south during the update. My backup strategy before getting my current setup was to create the snapshots in the local directory before using WinSCP to transfer the files to another system.

And so was updating Proxmox to 8.4.9

Before I could jump to Proxmox 9, I had to update my PVE node to the last stable release of Proxmox 8, as I hadn’t installed the newest packages for a while. I used the Updates tab on the Proxmox web UI, as the menu-based interface makes it easy to install all the apps and dependencies. Hitting the Refresh button brought the new packages into the web UI, and I pressed Upgrade to start the update, which is akin to running apt update && apt dist-upgrade in the Shell. After roughly twenty minutes, my Proxmox node was updated to version 8.4.9, and it was time to upgrade to the newest version of the platform.

Upgrading to Proxmox 9

It was a lot easier (and faster) than I’d anticipated

Proxmox 9 has its own repository – one that isn’t enabled on the older releases of PVE. So, the next logical step was to head to the Shell tab of my Proxmox node and run the sed -i 's/bookworm/trixie/g' /etc/apt/sources.list command to modify the base Debian 12 (Bookworm) repos to Debian 13 (Trixie). Afterward, I used the cat command to update the proxmox.sources file with the repository containing the Proxmox 9 packages:

cat > /etc/apt/sources.list.d/proxmox.sources Types: deb
URIs: http://download.proxmox.com/debian/pve
Suites: trixie
Components: pve-no-subscription
Signed-By: /usr/share/keyrings/proxmox-archive-keyring.gpg
EOF

With the config file tweaks complete, I headed back to the Update section, pressed the Refresh button, and tapped Upgrade after the Proxmox 9 packages showed up on the web UI.

The update process took roughly 30 minutes, with the wizard occasionally requesting my input to modify certain configuration files or leave them unchanged. After consulting the Proxmox documentation, I went with the default option in most cases. Soon, the update was complete, and my server rebooted. Little did I know that another issue was about to rear its ugly head…

I encountered an error after the update

But luckily, all my virtual guests were unharmed

Although the reboot was successful and the UI elements weren’t anything out of the ordinary, something was amiss. You see, I have a couple of virtual machines and LXCs set to autostart on boot. However, none of the virtual guests were online, even after waiting a couple of minutes.

Turns out, my local-lvm volume wasn’t online, causing my entire self-hosted suite to crash at startup. Manually booting them didn’t help much either, with the logs displaying the following error:

activating LV 'pve/data' failed: Check of pool pve/data failed (status:64). Manual repair required! (500)

Thankfully, it wasn’t that difficult to troubleshoot. Running lvconvert --repair pve/data inside the Shell tab of my newly-updated Proxmox node fixed this issue. I’ve massively overprovisioned the storage resources to my virtual guests, and I’m willing to bet that’s what caused the error.

Nevertheless, everything worked well after another reboot. All my virtual guests worked without running into weird issues – and this includes the blasphemous nested VMs and LXCs in my home lab.

What’s new in Proxmox 9, anyway?

A Debian 13 base, alongside plenty of cool features

The transition from Debian 12 to 13 is clearly the standout feature of Proxmox 9. However, the virtualization itself includes some notable improvements. For example, the interface has been revamped in Proxmox 9. Since I’ve got multiple PVE nodes in my arsenal, I quickly compared the reworked UI with the one on Proxmox 8 – and the difference was between night and day! I’ve only used the mobile UI a couple of times on Proxmox 8 because of its lackluster interface, but the modern look of Proxmox 9 makes my smartphone a viable option for controlling the virtualization platform.

The monitoring provisions have also been upped in the latest Proxmox release. Each node features new graphs, namely the CPU, IO, and memory pressure stall metrics, which are great for identifying which services are competing for resources. On the network side, Proxmox has added support for OpenFabric and OSPF stacks for Ceph servers. Then there’s the ability to create snapshots for VMs on LVM storage (provided, it’s thick-provisioned), though you’ll probably need a high-end LUN setup to make full use of this facility.