Cloud and Self-Hosting
Proxmox VE 8 to 9 Upgrade Guide (Debian Bookworm to Trixie)
By Amjid Ali · · Updated · 6 min read
In this article
- Quick steps
- In-place upgrade or fresh install?
- Step 1: check the prerequisites
- Step 2: run the pve8to9 checklist
- Step 3: move guests off the node (clusters)
- Step 4: switch the repositories to trixie
- Fix: "FAIL: found mixed old and new package repository suites"
- Step 5: run the upgrade
- Step 6: verify the upgrade
- Step 7: modernise the remaining sources (apt modernize-sources)
- Troubleshooting after the upgrade
- Upgrading Proxmox Backup Server too?
To upgrade Proxmox VE 8 to 9, bring the node to the latest 8.4, back up every VM and container, run pve8to9 --full until it shows no failures, switch all Debian and Proxmox repositories from bookworm to trixie, then run apt update and apt dist-upgrade and reboot. In a cluster, upgrade one node at a time after migrating its guests away. The most common blocker, FAIL: found mixed old and new package repository suites, means one repository file still says bookworm.
This is the in-place method from the official Proxmox wiki, the same one I used on the nodes in my homelab cluster. It applies to Proxmox VE 8.4 to the current 9.x release (9.2 at the time of this update, with kernel 7.0 and QEMU 11).
Proxmox VE 8 is end of life. The Proxmox support table lists 8.x support ending in August 2026, after Debian 12 Bookworm security updates stopped in July 2026. If you are still on 8, plan this upgrade now.
Quick steps
apt update && apt dist-upgradeuntilpveversionshows 8.4.1 or newer.- Back up all guests and
/etc,/etc/pve. pve8to9 --fulland fix every FAIL and WARN.- Replace
bookwormwithtrixiein every repository file; use.sourcesfiles for Proxmox and Ceph. apt update, thenpve8to9 --fullagain.apt dist-upgrade, answer the config prompts,reboot.- Check
pveversion, then runapt modernize-sources.
In-place upgrade or fresh install?
- In-place upgrade keeps your configuration, storage definitions and guests where they are. It is the normal path and what this guide covers.
- Fresh install from the Proxmox VE 9 ISO and restore of backups is cleaner if the node has years of manual tweaks or third-party packages, or if you are changing disks anyway.
Either way you need working backups first. If you run Proxmox Backup Server, see my Proxmox Backup Server guide, and keep a copy of the host configuration as described in backing up the Proxmox host configuration.
Step 1: check the prerequisites
| Requirement | Detail |
|---|---|
| Proxmox VE version | Latest 8.4, at least 8.4.1 on every node |
| Ceph (if hyperconverged) | Upgrade Quincy or Reef to Ceph 19.2 Squid first |
| Backups | Tested backups of all VMs and CTs, plus /etc and /etc/pve |
| Disk space | At least 5 GB free on /, ideally 10 GB or more |
| Access | IPMI, iKVM or a physical console, not only SSH or the web shell |
| Cluster | All nodes online and quorate, no HA errors |
Bring the node to the latest 8.4:
apt update
apt dist-upgrade
pveversion
pve-manager/8.4.x/... (running kernel: 6.8.12-x-pve)
Check free space and start a tmux session so a dropped SSH connection does not kill the upgrade:
df -h /
apt install tmux
tmux new -s upgrade
If the connection drops, log back in and run tmux attach -t upgrade.
Step 2: run the pve8to9 checklist
pve8to9 --full
The script only reports, it changes nothing. It ends with a summary like this:
= SUMMARY =
TOTAL: <n>
PASSED: <n>
SKIPPED: <n>
WARNINGS: <n>
FAILURES: 0
Fix every FAILURE before you continue, and read every WARNING. The ones I see most:
systemd-bootmeta-package installed. Remove it withapt remove systemd-bootunless you set up systemd-boot by hand. Proxmox manages its own boot loader throughproxmox-boot-tool.- LVM autoactivation. If you use shared LVM storage (iSCSI or FC), run
/usr/share/pve-manager/migrations/pve-lvm-disable-autoactivation. It is optional for local-only LVM. - Running guests. In a cluster, migrate them to another node first.
- Old
proxmox-veversion. You skipped Step 1; update to the latest 8.4.
Step 3: move guests off the node (clusters)
Live-migrate VMs and migrate containers to other nodes from the GUI or with qm migrate and pct migrate. Upgrade one node at a time: a cluster runs fine with mixed 8.4 and 9.x nodes during the upgrade window, but do not leave it that way longer than needed.
Step 4: switch the repositories to trixie
This is the step where most upgrades go wrong, so do it carefully.
Debian base repositories
sed -i 's/bookworm/trixie/g' /etc/apt/sources.list
On some systems the Debian lines are already in /etc/apt/sources.list.d/debian.sources. In that case run the same sed on that file.
Proxmox VE repository
Pick one of the two, matching what you use today.
With a subscription, create /etc/apt/sources.list.d/pve-enterprise.sources:
cat > /etc/apt/sources.list.d/pve-enterprise.sources <<'EOF'
Types: deb
URIs: https://enterprise.proxmox.com/debian/pve
Suites: trixie
Components: pve-enterprise
Signed-By: /usr/share/keyrings/proxmox-archive-keyring.gpg
EOF
rm /etc/apt/sources.list.d/pve-enterprise.list
Without a subscription, create /etc/apt/sources.list.d/proxmox.sources:
cat > /etc/apt/sources.list.d/proxmox.sources <<'EOF'
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
Then remove the old Proxmox VE 8 no-subscription line wherever it lives. The file name depends on how it was added: pve-no-subscription.list, pve-install-repo.list (the name the Debian install guide uses) or a line inside sources.list. If you are on no-subscription, also disable the enterprise repository so it does not return 401 Unauthorized; my guide to disabling the Proxmox enterprise repository covers that for both versions.
Ceph repository (also needed if Ceph is not in use)
The installer adds a Ceph repository even on nodes without Ceph, so update it too. With a subscription:
cat > /etc/apt/sources.list.d/ceph.sources <<'EOF'
Types: deb
URIs: https://enterprise.proxmox.com/debian/ceph-squid
Suites: trixie
Components: enterprise
Signed-By: /usr/share/keyrings/proxmox-archive-keyring.gpg
EOF
Without a subscription:
cat > /etc/apt/sources.list.d/ceph.sources <<'EOF'
Types: deb
URIs: http://download.proxmox.com/debian/ceph-squid
Suites: trixie
Components: no-subscription
Signed-By: /usr/share/keyrings/proxmox-archive-keyring.gpg
EOF
rm -f /etc/apt/sources.list.d/ceph.list
Also remove any download.ceph.com repository and any bookworm-backports line.
Check that nothing still says bookworm
grep -rn bookworm /etc/apt/sources.list /etc/apt/sources.list.d/
This must print nothing (third-party repositories aside, see below). Then refresh and check the sources:
apt update
apt policy
Every Debian and Proxmox entry in apt policy should show trixie. Run the checklist once more:
pve8to9 --full
Fix: "FAIL: found mixed old and new package repository suites"
If you search for this error, this is the section you want. pve8to9 prints something like:
FAIL: found mixed old and new package repository suites, fix before upgrading! Mismatches:
found suite trixie at in /etc/apt/sources.list:1
found suite bookworm at in /etc/apt/sources.list.d/pve-install-repo.list:1
Configure the same base-suite for all Proxmox and Debian provided repos and ask original vendor for any third-party repos.
E.g., for the upgrade to Proxmox VE 9 use the 'trixie' suite.
It means you changed some repository files to trixie but at least one still points at bookworm. The message tells you exactly which file and line. To fix it:
- Open each file listed with
bookworm, for examplenano /etc/apt/sources.list.d/pve-install-repo.list. - If it is a Proxmox or Debian repository you have already recreated as a
.sourcesfile in Step 4, delete the old.listfile. Otherwise changebookwormtotrixiein it. - If it is a third-party repository (for example a monitoring agent), comment it out until the vendor publishes a Trixie version.
- Run
grep -rn bookworm /etc/apt/sources.list /etc/apt/sources.list.d/until it prints nothing, thenapt updateandpve8to9 --fullagain.
The Updates > Repositories page in the GUI shows the same mismatch as a warning, which is a handy way to spot the file.
Never mix bookworm and trixie on purpose, for example to keep an old package. That leads to a broken dependency tree.
Step 5: run the upgrade
Inside your tmux session:
apt update
apt dist-upgrade
Use dist-upgrade (or full-upgrade), never apt upgrade. You will be asked about changed configuration files. The wiki's guidance:
| File | What to choose |
|---|---|
/etc/issue |
Keep current version (it is regenerated anyway) |
/etc/lvm/lvm.conf |
Install the maintainer's version, unless you edited it |
/etc/default/grub |
Keep current version if unsure (keeps IOMMU and other kernel options) |
/etc/chrony/chrony.conf |
Install the maintainer's version, unless you edited it |
If you see W: (pve-apt-hook) You are attempting to remove the meta-package 'proxmox-ve'!, stop and answer no. It means a Proxmox repository is missing or still on bookworm. Go back to Step 4.
On UEFI systems with root on LVM, the wiki also recommends making sure the EFI GRUB package is installed:
[ -d /sys/firmware/efi ] && apt install grub-efi-amd64
When dist-upgrade finishes, reboot even if you already used a newer opt-in kernel on 8.4:
reboot
Step 6: verify the upgrade
pveversion
cat /etc/debian_version
uname -r
pve-manager/9.x.x/... (running kernel: 7.0.x-x-pve)
13.x
7.0.x-x-pve
Then:
- Clear the browser cache and force-reload the web UI (Ctrl+Shift+R).
- Check that every VM and container starts and that storage is online under Datacenter > Storage.
- Run
pve8to9 --fullonce more to confirm a clean state. - In a cluster, repeat the whole process node by node. HA groups are converted to the new HA rules once every node runs Proxmox VE 9.
Step 7: modernise the remaining sources (apt modernize-sources)
Debian 13 still reads .list files, but apt warns about them and .sources is the format Proxmox VE 9 uses. Convert what is left:
apt modernize-sources
Answer n the first time to see what it would change, run it again and answer Y to apply. The old files are kept as .list.bak. After a clean apt update, remove them:
apt update
rm /etc/apt/sources.list.d/*.list.bak
Troubleshooting after the upgrade
No network after reboot. Network interface names can change with the new kernel and systemd (a different suffix on the same card, for example), so vmbr0 no longer finds its port. From the console, compare ip link with /etc/network/interfaces, fix the name and run ifreload -a. Proxmox VE 9 includes pve-network-interface-pinning to pin names to stable nicX names so it does not happen again. If ifreload is missing, see fixing "you need ifupdown2 to reload network configuration".
PCI or GPU passthrough VM will not start. Some passthrough setups broke with the newer kernel. As a workaround, boot the previous kernel from the boot menu and pin it with proxmox-boot-tool kernel pin <version> until a fixed kernel is out. Also check your IOMMU options survived in /etc/default/grub or /etc/kernel/cmdline; see my GPU passthrough guide.
401 Unauthorized from enterprise.proxmox.com. With a subscription, refresh it with pvesubscription update --force. Without one, disable the enterprise and Ceph enterprise repositories.
Settings in /etc/sysctl.conf ignored. Debian 13 no longer reads that file. Move your settings to a file such as /etc/sysctl.d/90-custom.conf and run sysctl --system.
/tmp filling RAM or files vanishing. /tmp is now a tmpfs that can use up to half the memory, and old files in /tmp and /var/tmp are cleaned automatically. Do not keep anything important there.
Veeam backups fail. Veeam did not support QEMU machine version 10.0 or newer at the time the wiki was written. Pin affected VMs to machine version 9.2+pve1 until your Veeam version supports it.
NVIDIA vGPU. Use GRID 18.3 (driver 570.158.02) or newer before you upgrade.
Upgrading Proxmox Backup Server too?
Proxmox Backup Server 3 to 4 is a separate upgrade with its own checker (pbs3to4) and the pbs-no-subscription repository. Follow the official PBS 3 to 4 upgrade guide for that box.
For minor updates once you are on 9.x (for example 9.1 to 9.2), you do not need any of the above: see how to upgrade Proxmox VE to the latest point release.
Frequently asked questions
How do I upgrade Proxmox VE 8 to 9?+
Update to the latest 8.4 with apt update and apt dist-upgrade, back up your guests, run pve8to9 --full and fix every FAIL, change all Debian and Proxmox repositories from bookworm to trixie, run apt update and apt dist-upgrade, then reboot. In a cluster, do one node at a time after moving its guests away.
What does "FAIL found mixed old and new package repository suites" mean?+
The pve8to9 checker found some apt sources on trixie and others still on bookworm. Usually /etc/apt/sources.list was changed but a file in /etc/apt/sources.list.d, such as pve-install-repo.list or pve-no-subscription.list, still says bookworm. Change or remove every bookworm entry so all Debian and Proxmox repos use trixie, then run pve8to9 again.
What does apt modernize-sources do on Proxmox VE 9?+
It converts old one-line .list repository files into the deb822 .sources format that Debian 13 and Proxmox VE 9 use. Run it after the upgrade, answer n first to preview, then run it again and answer Y. The old files are kept with a .bak suffix so you can delete them once apt update is clean.
Can I upgrade from Proxmox VE 7 directly to 9?+
No. Major upgrades must be done one release at a time. Upgrade 7 to 8 with pve7to8 first, update to the latest 8.4, then follow the 8 to 9 steps.
Is Proxmox VE 8 still supported?+
No. The Proxmox support table lists Proxmox VE 8 end of life as August 2026, after Debian 12 Bookworm security support ended in July 2026. Nodes still on 8.x should be upgraded to 9.
How long does the Proxmox 8 to 9 upgrade take?+
It depends mostly on storage speed. On SSD or NVMe it is a short job, while Proxmox notes it can take 60 minutes or more on slow spinning disks. Add time for the reboot and for checking your guests afterwards, per node.
Sources
- Upgrade from 8 to 9, Proxmox Server Solutions
- Package Repositories, Proxmox Server Solutions
- Proxmox VE Roadmap, Proxmox Server Solutions
- Proxmox VE FAQ (support table), Proxmox Server Solutions
Related videos
Video library- Cloud and Self-Hosting
Upgrade Proxmox VE 8 to 9 in Cluster with Ceph | Full Step-by-Step Guide 2025
· 18:46 · 3.6K views
Watch on YouTube - Cloud and Self-Hosting
How to Upgrade Proxmox to 8.3 Without a Subscription - Step-by-Step Guide
· 4:20 · 5.9K views
Watch on YouTube
Keep reading
Cloud and Self-HostingList of Best Server Virtualization Software in ItalyA list of the best server virtualization software options for enterprises in Italy, compared on architecture, licensing, and security. · 5 min read
Cloud and Self-HostingWhen Free Stops Being Free: Understanding Cloud Storage for Business Usesource · 3 min read
Cloud and Self-HostingExchange Server Database won’t Mount after Dirty Shutdown? Here’s How ESEUTIL can HelpExchange admins sometimes face a situation where the database does not come online or fails to mount itself. There are a number of things that could cause · 5 min read