How to upgrade Proxmox VE 7 to 8: step-by-step in-place upgrade guide | INTROSERV
EUR
european

EUR

usa

USD

English En
Ex. VAT Ex. VAT 0%

How to upgrade Proxmox VE 7 to Proxmox VE 8

This guide describes an in-place upgrade of a Proxmox VE 7 node to Proxmox VE 8 with apt. The upgrade moves the system from Debian 11 Bullseye to Debian 12 Bookworm and replaces the 5.15 kernel with a newer one. Plan for downtime: the node must be rebooted at least once, and usually twice.

Warning

Proxmox VE 7 reached end of life at the end of July 2024, and Proxmox VE 8 reached end of life on 31 August 2026. Upgrading to version 8 is a required intermediate step, but it does not leave you on a supported release. After completing this guide, plan the next upgrade to Proxmox VE 9.

Before you start

Requirements

Check the following before touching any repository:

  • all nodes run the latest Proxmox VE 7.4 packages (pve-manager 7.4-15 or newer);
  • at least 5 GB of free space on the root file system;
  • the cluster is healthy, if the node is part of a cluster;
  • you have access to the server that does not depend on its network, such as IP-KVM;
  • a valid and tested backup of all virtual machines and containers exists.

Check free space on the root file system:

df -h /

Warning

Back up every virtual machine and container before the upgrade and make sure the backups can be restored. A major upgrade replaces the base system, the kernel and the bootloader packages. If something goes wrong, a restore is the only reliable way back. Keep the backups outside the node being upgraded, for example on a separate storage or in INTROSERV Backup Service. Also copy /etc/pve, /etc/network/interfaces, /etc/passwd and /etc/resolv.conf.

Info

If you have a hyper-converged Ceph cluster, it must run Ceph 17.2 Quincy before you start. Check the version in the Ceph panel of each node. If the cluster runs Octopus or Pacific, upgrade Ceph to Quincy first and only then continue with this guide.

Info

If Proxmox Backup Server is installed on the same host, upgrade it from version 2 to version 3 before upgrading Proxmox VE. Follow the official Proxmox Backup Server 2 to 3 upgrade guide.

How to connect to the node

Danger

Do not run the major upgrade from the Shell (console) in the Proxmox VE web interface. The web console is served by Proxmox VE services that restart during the upgrade, and the session will break in the middle of the process.

Connect over SSH or through IP-KVM. With SSH, start a tmux session so that the upgrade keeps running if the connection drops:

apt update apt install tmux tmux new -s upgrade

If the connection is lost, reconnect and return to the session:

tmux attach -t upgrade

The safest option is IP-KVM, because it keeps working even if the network on the node does not come up after the reboot. To connect to a dedicated server through IP-KVM, see Connecting to IDRAC KVM or IP-KVM Access Guide via OpenVPN (DC2, DC3 Servers).

Virtual machines and containers on the node

Shut down the virtual machines and containers on the node, or migrate them to another node if they must keep running. Migration from an older Proxmox VE version to a newer one is supported. Migration from a newer version back to an older one is not supported.

Info

If the node is part of a cluster, upgrade the nodes one at a time and put each node into maintenance mode before upgrading it. Maintenance mode moves HA-managed guests to other nodes: ha-manager crm-command node-maintenance enable <node>. Guests that are not managed by HA are not moved automatically, so migrate or shut them down manually. A reboot does not clear maintenance mode. After the node is upgraded and rebooted, disable it manually: ha-manager crm-command node-maintenance disable <node>.

Step 1. Update Proxmox VE 7 to version 7.4

The pve7to8 checker and a safe upgrade path are available only on the latest 7.4 packages. You can install the updates in the web interface or from the command line.

Configure the repositories

Open the node in the web interface and go to Updates → Repositories.

If you do not have a paid subscription, select the pve-enterprise repository and click Disable. This repository requires a subscription key.

Click Add, select No-Subscription and click Add in the dialog.

Tip

If you have a paid subscription, keep the pve-enterprise repository and skip this part.

Install the updates

Go to Updates and click Refresh. Wait until the package list is updated.

Click Upgrade. A terminal window opens. When asked to continue, enter Y and press Enter.

Wait until the process finishes and do not close the window. At the end, the output asks you to reboot the node.

The same update from the command line. Without a paid subscription, first disable the enterprise repository and add the no-subscription one, as in the web interface above:

sed -i 's/^deb/#deb/' /etc/apt/sources.list.d/pve-enterprise.list echo "deb http://download.proxmox.com/debian/pve bullseye pve-no-subscription" > /etc/apt/sources.list.d/pve-no-subscription.list

Then install the updates:

apt update apt dist-upgrade

Tip

Debian 11 is no longer supported, and its packages may eventually be moved from the regular mirrors to archive.debian.org. If apt update returns 404 errors for bullseye, replace the Debian lines in /etc/apt/sources.list with:

deb http://archive.debian.org/debian bullseye main contrib deb http://archive.debian.org/debian-security bullseye-security main contrib

These lines are needed only to finish Step 1. In Step 3, replace them with the Bookworm lines shown there instead of running sed.

Reboot and check the version

Reboot the node:

reboot

After the node starts, refresh the browser page and check the version in the node Summary, or run:

pveversion

The output must show 7.4-15 or newer.

Step 2. Run the pve7to8 checker

Proxmox VE 7.4 includes the pve7to8 script. It only checks the system and reports problems; it does not change anything. Run it with all checks enabled:

pve7to8 --full

Review the result:

  • FAIL items must be fixed before the upgrade;
  • WARN items must be read and evaluated, even if they do not block the upgrade;
  • after each fix, run the script again to confirm the problem is gone.

Tip

Remove packages, plugins and third-party storage modules that are not supported by Proxmox VE 8 before you continue. A third-party storage plugin must have a version compatible with Proxmox VE 8, otherwise wait until its author releases one.

Warning

If Proxmox VE was installed on top of a plain Debian 11 system and not from the Proxmox VE ISO, check whether the linux-image-amd64 package is installed. It conflicts with the Proxmox VE kernel packages and can make apt try to remove the proxmox-ve package. Remove it before you continue: apt remove linux-image-amd64.

Step 3. Switch the repositories to Bookworm

Debian repositories

Replace Bullseye with Bookworm in the main sources list:

sed -i 's/bullseye/bookworm/g' /etc/apt/sources.list

If you switched to archive.debian.org in Step 1, sed would point the lines to a Bookworm path that does not exist on the archive. Replace the content of /etc/apt/sources.list with the standard Debian 12 lines instead:

deb http://deb.debian.org/debian bookworm main contrib deb http://deb.debian.org/debian bookworm-updates main contrib deb http://security.debian.org/debian-security bookworm-security main contrib

Then make sure no Bullseye entries remain in any file:

grep -r bullseye /etc/apt/sources.list /etc/apt/sources.list.d/

If the command finds lines, update them to Bookworm or comment them out with #. Remove any backports lines: the upgrade was not tested with packages from backports.

Also check that there are no held or half-installed packages. Both commands must return empty output:

apt-mark showhold dpkg --audit

Proxmox VE repository

The repository file name depends on how the repository was added. List the files first:

ls /etc/apt/sources.list.d/

Without a subscription, update the file that contains the pve-no-subscription line. On a system installed from the ISO, this is usually pve-install-repo.list:

sed -i 's/bullseye/bookworm/g' /etc/apt/sources.list.d/pve-install-repo.list

The correct line for Proxmox VE 8 without a subscription is:

deb http://download.proxmox.com/debian/pve bookworm pve-no-subscription

On some systems the line also contains [arch=amd64] after deb. This is fine, keep it.

Make sure the enterprise repository is disabled: if pve-enterprise.list exists, its line must be commented out with #, as it is after disabling it in Step 1.

With a paid subscription, write the enterprise repository and make sure no pve-no-subscription line remains active in other files:

echo "deb https://enterprise.proxmox.com/debian/pve bookworm pve-enterprise" > /etc/apt/sources.list.d/pve-enterprise.list

Ceph repository

Skip this part if Ceph is not installed on the node.

With a paid subscription:

echo "deb https://enterprise.proxmox.com/debian/ceph-quincy bookworm enterprise" > /etc/apt/sources.list.d/ceph.list

Without a subscription:

echo "deb http://download.proxmox.com/debian/ceph-quincy bookworm no-subscription" > /etc/apt/sources.list.d/ceph.list

Tip

If apt update returns a 401 error for the enterprise Ceph repository, refresh the subscription with pvesubscription update --force and try again.

Refresh the package index

apt update

The output must not contain errors. Every line must point to bookworm.

Step 4. Upgrade the system to Proxmox VE 8

Start the upgrade:

apt dist-upgrade

The duration depends on the speed of the root disk: a few minutes on SSD, up to an hour or more on slow HDD.

Prompts during the upgrade

If a page with release notes opens at the beginning, press q to close it and continue.

When asked whether to restart services automatically during package upgrades, select Yes with the arrow keys and press Enter.

Configuration file prompts

During the upgrade, apt asks what to do with configuration files that were changed both by you and by the package. Press D to see the difference before answering. Recommended answers for common files:

  • /etc/issue: keep your version (N). Proxmox VE regenerates this file at boot, it only affects the login screen;
  • /etc/lvm/lvm.conf: install the package maintainer's version (Y) if you did not edit the file yourself;
  • /etc/apt/sources.list.d/pve-enterprise.list: if apt asks about this file, keep your version (N), otherwise apt overwrites the repository you configured in Step 3;
  • /etc/ssh/sshd_config: if you did not edit the file, install the maintainer's version (Y), it replaces the deprecated ChallengeResponseAuthentication option with KbdInteractiveAuthentication. If you changed SSH settings yourself, compare the files carefully;
  • /etc/default/grub: this prompt usually appears only if you changed the file, for example to add kernel parameters. Check the difference; if unsure, keep your version (N).

Warning

On a system that boots in UEFI mode with root on LVM, GRUB may fail to boot after the upgrade with the error disk `lvmid/...' not found. On such a system, install the correct GRUB package before rebooting:


[ -d /sys/firmware/efi ] && apt install grub-efi-amd64

Run this command on UEFI systems that boot with GRUB, which is the default for installations from the Proxmox VE ISO with root on LVM. On a legacy BIOS system it does nothing. Skip it if root is on ZFS: such systems boot through proxmox-boot-tool and are not affected.

Check the result

When apt dist-upgrade finishes without errors, run the checker again:

pve7to8 --full

Before the reboot, the checker can show WARN items about the running kernel and about LXCFS still using the old FUSE library. This is expected: both disappear after you reboot into the new kernel in Step 5. There must be no FAIL items.

Step 5. Reboot into the new kernel

Reboot the node. This is required even if you already used the opt-in 6.2 kernel on Proxmox VE 7:

reboot

Warning

The new kernel can rename network interfaces on some hardware. If the node does not respond on the network after the reboot, connect through IP-KVM, check the current interface names with ip link, and update them in /etc/network/interfaces. Then apply the configuration with ifreload -a.

Step 6. Check the result

Clear the browser cache or force-reload the web interface with Ctrl+Shift+R (Cmd+Shift+R on macOS). Check the version in the node Summary or with:

pveversion

Start the virtual machines and containers and check that they work. In a cluster, disable maintenance mode on the node and continue with the next node, starting again from the requirements check.

Info

Systems that boot in UEFI mode through proxmox-boot-tool, usually with root on ZFS installed from the ISO, get a pve7to8 warning about the systemd-boot package after the upgrade. Install the package only if the checker reports this warning. On other systems it is not needed, and its installation script can replace GRUB as the bootloader.

Troubleshooting

The upgrade wants to remove proxmox-ve

The message W: (pve-apt-hook) You are attempting to remove the meta-package 'proxmox-ve'! means that some repository is still configured for Bullseye or does not exist for Bookworm. Check all files in /etc/apt/sources.list.d/, fix the repositories and run apt update again. Do not confirm the removal.

The upgrade was interrupted

If the connection was lost or the upgrade stopped halfway, reconnect to the tmux session or log in again and run:

dpkg --configure -a apt -f install apt dist-upgrade

Dependency errors for Ceph packages

If apt dist-upgrade reports unmet dependencies for Ceph packages on a node without Ceph, add the Ceph Quincy no-subscription repository from Step 3 and run apt update again. Some Proxmox VE packages can require it during the upgrade.

The node does not boot

Connect through IP-KVM to see the boot error. For GRUB problems, see the official Recover From Grub Failure page.

What's next

Proxmox VE 8 no longer receives updates. Plan the upgrade to Proxmox VE 9 on Debian 13 Trixie, which follows the same procedure with the pve8to9 checker.

If you prefer not to perform major upgrades yourself, INTROSERV System Administration specialists can plan and carry out the upgrade for you.

VAT

  • Other

    Ex. VAT

    0%
  • austria

    Austria

    20%
  • Belgium

    Belgium

    21%
  • Bulgaria

    Bulgaria

    20%
  • Croatia

    Croatia

    25%
  • Cyprus

    Cyprus

    19%
  • Czech Republic

    Czech Republic

    21%
  • Denmark

    Denmark

    25%
  • Estonia

    Estonia

    22%
  • France

    France

    20%
  • Finland

    Finland

    24%
  • Germany

    Germany

    19%
  • Greece

    Greece

    24%
  • Hungary

    Hungary

    27%
  • Ireland

    Ireland

    23%
  • Italy

    Italy

    22%
  • Latvia

    Latvia

    21%
  • Lithuania

    Lithuania

    21%
  • Luxembourg

    Luxembourg

    17%
  • Malta

    Malta

    18%
  • Netherlands

    Netherlands

    21%
  • Poland

    Poland

    23%
  • Portugal

    Portugal

    23%
  • Romania

    Romania

    19%
  • Slovakia

    Slovakia

    20%
  • Slovenia

    Slovenia

    22%
  • Spain

    Spain

    21%
  • Sweden

    Sweden

    25%
  • USA

    USA

    0%
european
states
  • germany
  • Español
  • Italiano
  • Poland
  • Русский
  • Slovenski
  • Türkçe
  • ukraine
  • kingdom
  • French
  • Hrvatska
  • Other
  • Austria
  • Belgium
  • Bulgaria
  • Croatia
  • Cyprus
  • Czech Republic
  • Denmark
  • Estonia
  • Finland
  • France
  • Germany
  • Greece
  • Hungary
  • Ireland
  • Italy
  • Latvia
  • Lithuania
  • Luxembourg
  • Malta
  • Netherlands
  • Poland
  • Portugal
  • Romania
  • Slovakia
  • Slovenia
  • Spain
  • Sweden
  • USA