Con la llegada de Debian 13 Trixie, también se abre el camino para la nueva versión de Proxmox VE 9.x. Si ya trabajas con Proxmox 8.x, es importante preparar bien la actualización para garantizar que tus máquinas virtuales y contenedores sigan funcionando sin problemas. En este artículo veremos los pasos recomendados, los cambios más relevantes y cómo usar la herramienta oficial pve8to9 para verificar que todo esté listo antes de dar el salto a la nueva versión.
Requisitos para la actualización
Para hacer la actualización de Proxmox 8.4 con Debian 12 a Proxmox 9.x con Debian 13 es importante tener en cuenta lo siguiente:
- Actualiza todos los nodos de Proxmox a la última versión de Proxmox VE 8.4.
- Revisa que la versión de
pve-managersea por lo menos la 8.4.1 y que tu nodo o nodos tengan la configuración correcta de repositorios. Puedes verlo en Interfaz Web - Nodo - Repositorios. - El nodo de Proxmox debe de estar en buen estado, no tiene que existir ninguna alerta, ni error para continuar.
- Es importante que tengas acceso directo al nodo. Lo ideal es tener acceso vía
IKVM/IPMIo acceso físico. Por lo general usaremos SSH, pero si algo va mal, será necesario conectar un monitor al nodo o usar algo comonanoKVM. - Es recomendable utilizar un multiplexor de terminal como
tmuxoscreenpara que la actualización siga adelante incluso si se corta la conexión SSH. Te dejo este artículo que habla sobre el comandoscreen:

Y este otro de tmux:

- Ten copias de seguridad de todas las MV o CTs que estés al 100% seguro de que funciona correctamente.
- Ten espacio libre en la partición principal, recomiendan que como mínimo deben de haber 5GB libres, si son 10GB mejor.
- Si tienes más de un nodo, es recomendable mover todas las MVs o CTs a otro nodo. Si sólo tienes uno, es recomendable apagarlas todas.
- Si usas Ceph, actualiza el clúster a Ceph 19.4 Squid antes de empezar la actualización a Proxmox VE 9.0
- Si tienes Proxmox Backup Server instalado junto a Proxmox VE debes de tener actualizado de la PBS 3 a PBS 4 para que funcione correctamente.
¡Hora de hacer copias de seguridad! (no, en serio, hazlas)
¡Ni se te ocurra desplazar la página más abajo! ¡Detente! Antes de ponerte manos a la obra con la actualización, es importante tener copias de seguridad de todo.
Haz copias de todas las MVs y CTs y no lo guardes en el mismo nodo, haz copias de seguridad fuera del nodo: en un NAS, USB, disco externo, en un Object Storage, donde sea.
Realiza una copia de seguridad del nodo
También es importante guardar lo ficheros de configuración de todo, por eso es importante también respaldar el directorio /etc por completo.
Por SSH haz:
tar -cpzf /root/proxmox-config.tar.gz /etcRecomendaciones de SysAdmin
- Si tienes hardware muy especifico o raro, es posible que se rompan algunos drivers, Ten en cuenta esto antes de actualizar.
- Si estás usando ZFS, mira de parar todo.
- Si usas algo fuera de lo oficial para Proxmox, es posible que tengas problemas.
- No realices el proceso que hay a continuación un día a la noche, ni tampoco el lunes a primera hora. Mejor hazlo el martes que todo está más tranquilo. No, en serio, planifica seriamente un buen momento para actualizar, teniendo en cuenta que si algo sale mal te vas a tener que quedar muuuuchas horas para arreglar todo el desastre. Prepara café.
Verifica que puedes actualizar
Antes de liarnos con la actualización, tenemos que comprobar que nuestro nodo tiene todo listo para hacer la actualización. Para eso existe un comando propio de Proxmox que comprueba que tu sistema está preparado para la migración de una versión a otra de Proxmox.
pve8to9 --fullEste script revisará todo tu sistema y te mostrará un informa con los problemas de configuración, con paquetes obsoletos e incompatibles y recomendaciones útiles.
Por ejemplo, a mi me ha mostrado lo siguiente
Salida del comando
pve8to9 --full
= CHECKING VERSION INFORMATION FOR PVE PACKAGES =
Checking for package updates..
PASS: all packages up-to-date
Checking proxmox-ve package version..
PASS: proxmox-ve package has version >= 8.4-0
Checking running kernel version..
PASS: running kernel '6.8.12-14-pve' is considered suitable for upgrade.
= CHECKING CLUSTER HEALTH/SETTINGS =
PASS: systemd unit 'pve-cluster.service' is in state 'active'
PASS: systemd unit 'corosync.service' is in state 'active'
PASS: Cluster Filesystem is quorate.
Analzying quorum settings and state..
INFO: configured votes - nodes: 2
INFO: configured votes - qdevice: 0
INFO: current expected votes: 2
INFO: current total votes: 2
WARN: cluster consists of less than three quorum-providing nodes!
Checking nodelist entries..
PASS: nodelist settings OK
Checking totem settings..
PASS: totem settings OK
INFO: run 'pvecm status' to get detailed cluster status..
= CHECKING HYPER-CONVERGED CEPH STATUS =
SKIP: no hyper-converged ceph setup detected!
= CHECKING CONFIGURED STORAGES =
PASS: storage 'backups' enabled and active.
PASS: storage 'local' enabled and active.
PASS: storage 'local-lvm' enabled and active.
INFO: Checking storage content type configuration..
PASS: no storage content problems found
PASS: no storage re-uses a directory for multiple content types.
INFO: Check for usage of native GlusterFS storage plugin...
PASS: No GlusterFS storage found.
INFO: Checking whether all external RBD storages have the 'keyring' option configured
SKIP: No RBD storage configured.
= VIRTUAL GUEST CHECKS =
INFO: Checking for running guests..
PASS: no running guest detected.
INFO: Checking if LXCFS is running with FUSE3 library, if already upgraded..
SKIP: not yet upgraded, no need to check the FUSE library version LXCFS uses
INFO: Checking for VirtIO devices that would change their MTU...
PASS: All guest config descriptions fit in the new limit of 8 KiB
INFO: Checking container configs for deprecated lxc.cgroup entries
PASS: No legacy 'lxc.cgroup' keys found.
INFO: Checking VM configurations for outdated machine versions
PASS: All VM machine versions are recent enough
= MISCELLANEOUS CHECKS =
INFO: Checking common daemon services..
PASS: systemd unit 'pveproxy.service' is in state 'active'
PASS: systemd unit 'pvedaemon.service' is in state 'active'
PASS: systemd unit 'pvescheduler.service' is in state 'active'
PASS: systemd unit 'pvestatd.service' is in state 'active'
INFO: Checking for supported & active NTP service..
PASS: Detected active time synchronisation unit 'chrony.service'
INFO: Checking if the local node's hostname 'pve' is resolvable..
INFO: Checking if resolved IP is configured on local node..
PASS: Resolved node IP '192.168.1.169' configured and active on single interface.
INFO: Check node certificate's RSA key size
PASS: Certificate 'pve-root-ca.pem' passed Debian Busters (and newer) security level for TLS connections (4096 >= 2048)
PASS: Certificate 'pve-ssl.pem' passed Debian Busters (and newer) security level for TLS connections (2048 >= 2048)
PASS: Certificate 'pveproxy-ssl.pem' passed Debian Busters (and newer) security level for TLS connections (4096 >= 2048)
INFO: Checking backup retention settings..
PASS: no backup retention problems found.
INFO: checking CIFS credential location..
PASS: no CIFS credentials at outdated location found.
INFO: Checking permission system changes..
INFO: Checking custom role IDs
PASS: no custom roles defined
INFO: Checking node and guest description/note length..
PASS: All node config descriptions fit in the new limit of 64 KiB
INFO: Checking if the suite for the Debian security repository is correct..
PASS: found no suite mismatch
INFO: Checking for existence of NVIDIA vGPU Manager..
PASS: No NVIDIA vGPU Service found.
INFO: Checking bootloader configuration...
FAIL: systemd-boot meta-package installed. This will cause problems on upgrades of other boot-related packages. Remove 'systemd-boot' See https://pve.proxmox.com/wiki/Upgrade_from_8_to_9#sd-boot-warning for more information.
INFO: Check for dkms modules...
SKIP: could not get dkms status
INFO: Check for legacy 'filter' or 'group' sections in /etc/pve/notifications.cfg...
PASS: No legacy 'filter' or 'group' sections found!
INFO: Check for legacy 'notification-policy' or 'notification-target' options in /etc/pve/jobs.cfg...
PASS: No legacy 'notification-policy' or 'notification-target' options found!
INFO: Check for LVM autoactivation settings on LVM and LVM-thin storages...
NOTICE: storage 'local-lvm' has guest volumes with autoactivation enabled
NOTICE: Starting with PVE 9, autoactivation will be disabled for new LVM/LVM-thin guest volumes. This system has some volumes that still have autoactivation enabled. All volumes with autoactivations reside on local storage, where this normally does not cause any issues.
You can run the following command to disable autoactivation for existing LVM/LVM-thin guest volumes:
/usr/share/pve-manager/migrations/pve-lvm-disable-autoactivation
INFO: Checking lvm config for thin_check_options...
PASS: Check for correct thin_check_options passed
INFO: Check space requirements for RRD migration...
PASS: Enough free disk space for increased RRD metric granularity requirements, which is roughly 36.43 MiB.
INFO: Checking for IPAM DB files that have not yet been migrated.
PASS: No legacy IPAM DB found.
PASS: No legacy MAC DB found.
INFO: Checking if the legacy sysctl file '/etc/sysctl.conf' needs to be migrated to new '/etc/sysctl.d/' path.
PASS: Legacy file '/etc/sysctl.conf' exists but does not contain any settings.
INFO: Checking if matching CPU microcode package is installed.
PASS: Found matching CPU microcode package 'amd64-microcode' installed.
mount: /var/lib/lxc/119/rootfs: /dev/mapper/pve-vm--119--disk--0 already mounted on /var/lib/lxc/119/rootfs.
dmesg(1) may have more information after failed mount system call.
mounting container failed
WARN: Failed to load config and mount CT 119 - command 'mount /dev/dm-23 /var/lib/lxc/119/rootfs//' failed: exit code 32
= SUMMARY =
TOTAL: 50
PASSED: 41
SKIPPED: 4
WARNINGS: 2
FAILURES: 1
ATTENTION: Please check the output for detailed information!
Try to solve the problems one at a time and then run this checklist tool again.

Al final del todo, muestra un resultado final. Para poder actualizar con seguridad tenemos que corregir todos los errores que aparecen. Los warnings podemos revisarlos con calma y ver si son importantes o no.
Por ejemplo, el error que me estaba dando a mi:
FAIL: systemd-boot meta-package installed. This will cause problems on upgrades of other boot-related packages. Remove 'systemd-boot' See https://pve.proxmox.com/wiki/Upgrade_from_8_to_9#sd-boot-warning for more information.En Debian Trixie el paquete systemd-boot se ha dividido en tres (systemd-boot-efi, systemd-boot-tools y el meta systemd-boot), y este último puede entrar en conflicto con Proxmox, ya que solo en ciertas configuraciones se gestiona el arranque mediante proxmox-boot-tool. Por ello, si el script pve8to9 recomienda desinstalar systemd-boot, se puede hacer sin problema, salvo que se haya instalado manualmente para usarlo como cargador de arranque; en ese caso se mantendrán los paquetes necesarios y el propio script indicará qué acciones tomar antes y después de la actualización.
Así que pare resolver este problema:
apt removee systemd-bootY una vez arreglado el error, relanzamos el comando:
pve8to9 --full 
En este punto ya no hay errores en rojo y el warning es por la configuración de un contenedor que no debería de ser un problema. Ahora sí, con esto podemos iniciar la actualización.
Actualizar Proxmox 8.x a Proxmox 9.x
Lo primero de todo, es revisar que está todo actualizado:
apt update
apt full-upgrade
apt autoremove -yDe esta manera nos aseguramos de que tenemos los repositorios actualizados y actualizamos sin romper ningún tipo de dependencia.
reboot del nodo para que cargue el nuevo kernel.En este punto, ejecutamos este comando para revisar la versión de Proxmox que tenemos:
$ pveversion
pve-manager/8.4.14/b502d23c55afcba1 (running kernel: 6.8.12-14-pve)Ahora toca modificar los repositorios de Debian y cambiar bookworm por trixie lo haremos con el comando sed:
sed -i 's/bookworm/trixie/g' /etc/apt/sources.list
sed -i 's/bookworm/trixie/g' /etc/apt/sources.list.d/pve-enterprise.listY luego añade el nuevo formato de repositorios:
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
EOFSi eres un suertudo y tienes suscripción enterprise ejecuta mejor este:
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
EOFSi tenéis también licencia y usáis Ceph:
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
EOFAhora si, ha llegado el momento de actualizar paquetes... Os recomiendo utilizar screen para ejecutar este comando, por si te quedas sin conexión de SSH durante la actualización, el comando quede en segundo plano ejecutando.
screen -S ProxmoxUpdateY en ese screen ejecutamos:
apt update
apt dist-upgradeCuando finalice toda la instalación de paquetes, reiniciamos:
rebootEn un rato, podremos acceder a través de la interfaz web cargando de nuevo Proxmox y revisando que tiene la versión 9.x:

O revisando por CLI:
$ pveversion
pve-manager/9.0.10/deb1ca707ec72a89 (running kernel: 6.14.11-3-pve) ¡Enhorabuena! Ya tienes Proxmox 9.x y Debian 13, ya puedes dormir feliz!
Más sobre ./voidNull
- 📖 Aprende todos sobre los comandos de GNU/Linux en nuestro Diccionario "De la A a la Z: Los comandos de GNU/Linux"
- 💪 ¡Forma parte de la Comunidad de ./voidNull!
- 🤖 Disfruta de todos nuestros Cursos sobre Ansible, Proxmox, Home Assistant entre otros.
- 📩 Mantente actualizado con lo último en GNU/Linux y Software Libre. Recibe nuestra Newsletter mensual.


Comentarios