Upgrade Proxmox VE to Latest Version Safely

upgrade proxmox ve custom-pve9-updates.png

Updating Proxmox VE comes in two very different sizes. A minor update within the same major version is routine: refresh packages and reboot if
the kernel changed. A major upgrade, such as 8 to 9, moves the whole system to a new Debian release and deserves a plan, a backup and a checker.

This guide covers both, with the cluster-safe order for multi-node setups. Make sure your repositories work first with the
no-subscription repository fix, and have tested backups from
Proxmox Backup Server or vzdump.

Quick answer: minor update: apt update && apt full-upgrade. Major upgrade: back up, run the pveXtoY checker until clean, switch repositories, then apt dist-upgrade.

Minor Update or Major Upgrade?

Check your current version first. A minor update keeps the same Debian base. A major upgrade changes it and follows the official upgrade guide for that version pair.

bashcurrent version
pveversion
cat /etc/os-release | grep VERSION_CODENAME
Minor versus major
Different risk, different process

Back Up Before Anything

Back up every VM and container and copy the host configuration. For a major upgrade, restore one backup to prove they work.

bashhost config copy
tar czf /root/pve-etc-$(date +%F).tar.gz /etc/pve /etc/network/interfaces /etc/hosts
vzdump --all --storage backup-store --mode snapshot
Backups first
Guests and host config

Run the Upgrade Checker (Major Upgrades)

Proxmox ships a checker script for each major upgrade (for example pve8to9). It reports anything that would break. Fix every FAIL, read every WARN, and re-run until clean.

bash8 to 9 example
pve8to9 --full
Upgrade checker
Fix every FAIL

Switch Repositories to the New Release

For a major upgrade, point Debian, Proxmox and (if installed) Ceph repositories at the new release codename. The official guide for your version pair lists the exact files; the pattern below is the 8 to 9 (bookworm to trixie) case.

bashbookworm to trixie (review before running)
sed -i 's/bookworm/trixie/g' /etc/apt/sources.list
grep -rl bookworm /etc/apt/sources.list.d/
# update each listed file to trixie, or convert to .sources as the guide describes
WarningFollow the official upgrade guide for your exact version pair. Repository names and required steps change between releases.
Repository switch
Old codename to new

Upgrade a Cluster One Node at a Time

Never upgrade every node at once. Migrate guests off a node, upgrade and reboot it, confirm it rejoined the cluster healthily, then move to the next.

bashmigrate a VM off first
qm migrate 101 pve2 --online
pvecm status
Rolling cluster upgrade
Migrate, upgrade, verify, repeat

Run the Upgrade

Use full-upgrade/dist-upgrade, never plain upgrade. For a major upgrade, read each configuration-file prompt; keeping your current version is usually right for files you customised.

bashminor update
apt update
apt full-upgrade
bashmajor upgrade (after repos are switched)
apt update
apt dist-upgrade
reboot
TipRun major upgrades inside tmux or on the console, so a dropped SSH session cannot interrupt the package manager.
Running the upgrade
dist-upgrade, then reboot

Verify After Reboot

Confirm the new versions, that guests start, and in a cluster that quorum is healthy before touching the next node.

bashchecks
pveversion -v | head -10
qm list; pct list
pvecm status
journalctl -b -p err --no-pager | tail -20
Post-upgrade checks
Versions, guests, quorum

If Something Goes Wrong

A node that boots but misbehaves can often be recovered by selecting the previous kernel from the boot menu. Read the logs before reinstalling anything; restoring guests from backup is the last resort, not the first.

bashlist installed kernels and pin one temporarily
proxmox-boot-tool kernel list
proxmox-boot-tool kernel pin <version> --next-boot
Recovery options
Previous kernel, logs, then restore

How do I update Proxmox VE?

Run apt update then apt full-upgrade, and reboot if a new kernel was installed. Make sure a working repository (enterprise or no-subscription) is configured first.

What is the difference between a Proxmox update and an upgrade?

An update stays within the same major version and Debian release. A major upgrade (for example 8 to 9) moves to a new Debian release and requires the checker script and repository changes.

What does pve8to9 do?

It checks a Proxmox VE 8 system for anything that would block or break an upgrade to version 9, and reports each item as PASS, WARN or FAIL.

Can I upgrade a Proxmox cluster without downtime?

Largely, yes: migrate guests off one node, upgrade and reboot it, verify, then repeat for each node. Guests keep running on the other nodes.

Why use apt full-upgrade instead of apt upgrade on Proxmox?

Proxmox updates often add or remove dependencies. Plain upgrade holds those back and can leave the system in an inconsistent state.

Cheat Sheet

  • Minor: apt update && apt full-upgrade; major: backup, pveXtoY --full, switch repos, dist-upgrade
  • Clusters: one node at a time; verify quorum before the next

Related tutorials

Diagrams are original illustrations by Gnome IT Solutions. Tutorial text © Gnome IT Solutions.