Full Step-by-Step How-To with Real-World Troubleshooting
Upgrading Proxmox VE between major versions can go smoothly—if you prepare correctly. This guide walks you through an upgrade from Proxmox VE 8.4 to 9.0, including the exact errors encountered and their solutions.
Follow these steps to avoid common pitfalls when moving from Proxmox 8 (Debian 12 “Bookworm”) to Proxmox 9 (Debian 13 “Trixie”).
1. Backup Your Environment First (Essential!)
Before touching your system, make a full backup of all VMs/containers and critical Proxmox configuration files. One quick way to back up critical configs is:
tar czvf proxmox_etc_backup_$(date +%F).tar.gz /etc/pve /etc/passwd /etc/network/interfaces /etc/resolv.conf
Remember to transfer this archive off the Proxmox host.
2. Ensure You’re on the Latest Proxmox 8.x
Run the following commands to get your system to the latest point release:
pveversion -v
apt update
apt full-upgrade
3. Clean Up and Fix Repo Configuration
Common pre-upgrade issues often stem from APT repositories:
- Enterprise repo 401 Unauthorized errors: If you don’t have a subscription, comment out the enterprise repo and enable the no-subscription one in
/etc/apt/sources.list.d/pve-enterprise.list
. - Duplicate repo warnings: Remove duplicates across
/etc/apt/sources.list
and files in/etc/apt/sources.list.d/
.
4. Update Repositories for Proxmox 9 (Trixie)
Update /etc/apt/sources.list
to point to Debian Trixie:
# /etc/apt/sources.list
deb http://ftp.us.debian.org/debian trixie main contrib
deb http://ftp.us.debian.org/debian trixie-updates main contrib
deb http://security.debian.org/debian-security trixie-security main contrib
Update your Proxmox repo file for Trixie:
# /etc/apt/sources.list.d/pve.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
5. Upgrade Your Base System and Packages
🚨 Real-World Lesson
I initially forgot to change my base Debian repositories from bookworm
to trixie
. This caused over 60 packages to be “kept back” due to missing dependencies. Correcting the sources and re-running the upgrade fixed it without needing any force installs.
Once all sources are correct, run the full upgrade:
apt update
apt full-upgrade
6. Reboot and Verify
A reboot is required to load the new kernel. After rebooting, verify the new version:
reboot
pveversion
The output should now report version 9.x.
⚠️ Important Warning: Kernel Module Issues
After my first upgrade attempt, none of my containers or VMs would start. The cause was an incomplete upgrade due to the old APT sources. The new kernel was installed, but its corresponding module packages (like veth
, bridge
, kvm
) were not.
Fix: Correcting all APT sources to Trixie and re-running apt full-upgrade
installed the correct packages. After another reboot, everything worked.
7. Visual Comparison of Repository Changes
Repository Type | Before (Proxmox 8 – Bookworm) | After (Proxmox 9 – Trixie) |
---|---|---|
Debian Base | deb ... bookworm ... |
deb ... trixie ... |
Proxmox Repo | .list format, bookworm |
.sources format, trixie |
Final Thoughts
A repository mismatch is the root cause of most upgrade headaches. Triple-check your APT sources before upgrading, and confirm the kernel and its modules are correct after the first reboot.