Monter Debian de version¶
Méthode utilisée pour passer toutes les CT de Debian 11 à Debian 13 (en passant par 12). Une version à la fois : bullseye (11) → bookworm (12) → trixie (13).
Avant de commencer¶
1. Prévoir un retour arrière
pct snapshot <CTID> avant_<version> # depuis l'hôte
Une CT avec un point de montage de type bind mount (dossier de l'hôte monté dans la CT) ne peut pas être snapshotée : faire une sauvegarde complète à la place (vzdump <CTID> --storage <stockage> --mode stop).
2. Protéger les paquets serveur
Le piège qui supprime une base de données
Un paquet serveur installé comme dépendance (par exemple postgresql-15 tiré par postgresql, ou docker.io tiré par docker-compose) peut être considéré comme inutile après la montée de version. apt autoremove --purge le supprime alors avec ses données. C'est arrivé à Docker sur une de nos CT (restauré depuis le snapshot).
apt-mark manual postgresql-<NN> docker.io # adapter aux paquets présents
apt-mark showauto | grep -E 'postgres|docker|mariadb|mysql|redis'
3. Sauvegarder les bases à part (en plus du snapshot) :
su - postgres -c 'pg_dumpall' > /root/pg-dumpall-avant.sql
4. Lancer les commandes longues avec nohup
Si la connexion SSH coupe en plein apt, la mise à jour s'arrête au milieu. Écrire les étapes dans un script et le lancer avec nohup ./script.sh > maj.log 2>&1 &, puis suivre tail -f maj.log.
La montée de version¶
apt update && apt -y full-upgrade # être à jour dans la version actuelle
sed -i 's/bookworm/trixie/g' /etc/apt/sources.list /etc/apt/sources.list.d/* # adapter les noms
apt update
apt -y upgrade --without-new-pkgs
apt -y full-upgrade
apt -y autoremove --purge # seulement après l'étape « protéger les paquets »
Vérifier aussi les dépôts tiers dans /etc/apt/sources.list.d/ (Node, Adoptium, Docker…) : ils ont souvent une ligne par version de Debian.
PostgreSQL¶
La nouvelle version de Debian installe une nouvelle version de PostgreSQL, mais l'ancien « cluster » reste sur l'ancienne. Pour migrer les données :
pg_lsclusters # ancien et nouveau cluster
pg_dropcluster <nouvelle_version> main --stop # le cluster vide créé à l'installation
pg_upgradecluster <ancienne_version> main
# vérifier les données, puis :
pg_dropcluster <ancienne_version> main
Après¶
pct reboot <CTID>
systemctl is-system-running # doit répondre « running »
systemctl --failed
dpkg --audit # ne doit rien afficher
getent hosts deb.debian.org # réseau et DNS
Puis tester l'appli elle-même (page web, API, connexion à la base, serveur de jeu…).
Particularités de Debian 13 en CT :
systemd-networkd-wait-online.serviceéchoue (le réseau est géré par ifupdown) et retarde de 2 minutes les services qui attendent le réseau :systemctl mask systemd-networkd-wait-online.service.sys-kernel-config.mountéchoue toujours en CT :systemctl mask sys-kernel-config.mount.- Proxmox avertit si une CT privilégiée n'a pas
nesting=1: l'activer.
Une fois validé¶
Supprimer le snapshot : sur le stockage des CT, il grossit au fil des écritures et occupe de la place pour rien.
pct delsnapshot <CTID> avant_<version>
En cas de problème : pct rollback <CTID> avant_<version>.