This guide covers upgrading a Proxmox VE 8 node (based on Debian 12 “Bookworm”) to Proxmox VE 9 (based on Debian 13 “Trixie”) using the command line, which works for both standalone nodes and clusters. Because it upgrades the whole Debian base underneath, this is a major upgrade rather than a routine apt run, so it’s worth taking slowly.
Before you start, make sure you have complete, verified backups of your VMs, your containers, and the Proxmox host itself. If anything goes wrong partway through, a good backup is the difference between a quick retry and a rebuild from scratch.
Step 1: Prepare the System
Along with your VM backups, it’s worth backing up the /etc/pve directory as well, since it holds your cluster and VM configuration and it’s small enough that there’s no reason not to.
If this node is part of a cluster, check that the cluster is healthy and quorate before you begin, using:
pvecm status
Then move all the guests off the node you’re upgrading, either by migrating them to another node or shutting them down. It’s best not to upgrade a node while VMs are still running on it.
Step 2: Fully Update Proxmox 8 First
Make sure you’re on the latest version of Proxmox 8 before jumping to 9, since starting from a fully patched 8.x install means fewer package conflicts on the way across:
apt update
apt dist-upgrade -y
Step 3: Switch to the Trixie Repositories
The core of the upgrade is telling APT to look at the Trixie repositories instead of Bookworm. These sed commands replace every instance of bookworm with trixie across your repository files:
# Main Debian repositories
sed -i 's/bookworm/trixie/g' /etc/apt/sources.list
# Proxmox repositories (handles both the no-subscription and enterprise lists)
sed -i 's/bookworm/trixie/g' /etc/apt/sources.list.d/pve-*.list
# Ceph repositories (only if you use Ceph)
sed -i 's/bookworm/trixie/g' /etc/apt/sources.list.d/ceph.list
If you don’t run Ceph, the last command will just report a missing file, which is harmless and can be ignored.
Step 4: Perform the Distribution Upgrade
First, refresh APT’s database so it becomes aware of the new Trixie packages:
apt update
Then run the main upgrade, which installs the new packages, removes the obsolete ones, and upgrades the entire Debian base underneath. This takes a while, so it’s best done over a wired connection or a console you won’t lose, rather than a flaky SSH session that might drop halfway through:
apt dist-upgrade -y
Step 5: Handle the Configuration File Prompts
Partway through the upgrade, you’ll be prompted about configuration files you’ve modified locally, where the system asks whether to keep your current version or replace it with the package maintainer’s new one. This is the part that catches people out, and when in doubt, the safest choice is to keep your own version (usually N or O).
A couple of files are worth calling out specifically:
lvm.conf: this holds your LVM storage configuration, so keep your version. If you let the new one overwrite it, Proxmox can lose sight of your storage pools, which turns a routine upgrade into a storage debugging session.sshd_config: if you’ve hardened SSH at all, such as disabling password login, keep your version, otherwise the maintainer’s default can lock you out of the very box you’re upgrading./etc/issue: this only sets the text banner at the login prompt, so either choice is fine. The new version just updates the branding from “Debian 12” to “Debian 13”.
If you’re ever unsure about a file, the prompt lets you view the diff or drop to a shell to investigate first, and it’s worth doing, since ten seconds reading a diff beats an hour undoing a bad overwrite.
Step 6: Update Appliance Templates (Optional)
Refresh the list of available Turnkey Linux templates so it matches the newly upgraded system:
pveam update
Step 7: Reboot the Node
Once the dist-upgrade is complete, reboot the node to load the new kernel and finalise the upgrade:
reboot
Step 8: Verify the Upgrade
After the node reboots, log back in over SSH and check the version:
pveversion -v
You should see pve-manager/9.x.x at the top, confirming the upgrade worked. It’s also worth loading the web UI and checking that your storage, networking, and guests all show up as they should.
Step 9: Final Steps for a Cluster
If you’re running a cluster, you’re not finished after one node. Migrate a couple of test VMs back onto the upgraded node to confirm it’s stable, and once you’re happy, repeat the whole process on the next node, one at a time, until every node is running Proxmox VE 9. Doing them one by one keeps the cluster online while you work through it.


Leave a Reply