Retirer le nœud
sudo detachbox-node-host uninstall --confirm
La désinstallation remet le serveur dans l’état où l’installation l’a trouvé. Chaque terminal se termine, et le nœud s’arrête pour de bon.
Ce qui tourne part en premier : node-host et le tunnel, puis chaque terminal et l’edge, puis Incus avec chaque processus, bridge, règle de pare-feu et montage qu’il avait. Viennent ensuite les paquets ajoutés par l’installation, avec tout ce qu’apt a tiré pour eux, les dépôts d’Incus et de Cloudflare, l’utilisateur système d’Incus, les réglages sysctl du nœud, ainsi que la configuration, les clés et l’état de l’installation. detachbox-node-host lui-même reste tant que le pool reste, pour que vous puissiez le retirer plus tard.
Prévenez ensuite votre contact chez detachbox, qui retire le nœud de votre compte.
Vos fichiers restent sur le pool
Le pool boxes avec les fichiers de votre compte reste, exporté, avec ZFS pour le lire :
sudo zpool import boxes # ramène le pool
sudo zfs list -r boxes/custom # liste les dossiers de votre compte
sudo mount -t zfs boxes/custom/<folder> /mnt # en ouvre un
Quand vous n’avez plus besoin de ces fichiers, sudo detachbox-node-host uninstall --confirm --destroy-pool détruit le pool gardé avec tout ce qu’il contient, et retire ZFS et detachbox-node-host. Relancé sans cette option, uninstall --confirm indique que le nœud est déjà désinstallé et nomme cette commande. Sur un serveur où detachbox-node-host a disparu, la vérification de l’installation affiche la commande à utiliser.
Une nouvelle installation sur ce serveur refuse le disque du pool gardé et dit pourquoi : un nouveau nœud ne reprend jamais les fichiers de l’ancien. Donnez au nouveau nœud un autre disque, ou retirez d’abord le pool gardé avec la commande qu’affiche la vérification. Les paquets OpenZFS que l’ancien nœud a gardés passent à la nouvelle installation.
Détruire aussi le pool
sudo detachbox-node-host uninstall --confirm --destroy-pool
Cette commande détruit le pool et chaque fichier qu’il contient. Elle ne touche que le pool créé par cette installation, et n’efface le disque que si tout ce qu’il contient vient de l’installation : le même disque que celui où le pool a été créé, reconnu à son WWN ou à son numéro de série, avec les seules partitions du pool. Le disque reste alors vide, tel que l’installation l’a trouvé : les étiquettes du pool effacées, chaque signature et la table de partitions supprimées, le disque vérifié comme l’installation le vérifie. Sinon, le disque reste tel quel, et la désinstallation dit pourquoi et quoi faire, comme le montre Dépannage du nœud. Elle retire ensuite OpenZFS et chaque paquet que l’installation a ajouté pour lui. Le serveur passe alors les vérifications de l’installation pour une nouvelle installation.
Si une étape échoue
La désinstallation s’arrête à cette étape et liste ce qui reste sur le serveur. Rien de ce dont une deuxième exécution a besoin n’a disparu : ZFS reste tant que le pool reste, et node-host garde son registre jusqu’au bout. Corrigez ce que dit la ligne et relancez la même commande ; elle reprend à cette étape.
Avec --destroy-pool, la dernière chose que la désinstallation retire, c’est detachbox-node-host lui-même ; quand le pool est gardé, le programme reste sur le serveur. Le journal de la désinstallation, avec chaque exécution de l’installation qui l’a précédée, reste dans /var/log/detachbox-node-uninstall.log, lisible par root seul.
Le retirer à la main
Seulement pour le pire des cas : uninstall s’arrête encore et encore sur la même étape, et aucun node-host corrigé ne peut atteindre le serveur, puisqu’un nœud retiré de son compte ne se met plus à jour. Lancez ces commandes en root, dans cet ordre, et sautez ce qui a déjà disparu. Ici, le disque du pool est /dev/sdb et sa partition ZFS /dev/sdb1 :
cp /var/lib/detachbox-node/install/install.log /var/log/detachbox-node-uninstall.log # garder le journal
systemctl disable --now detachbox-node-host cloudflared-detachbox
rm -f /etc/systemd/system/detachbox-node-host.service /etc/systemd/system/cloudflared-detachbox.service
# chaque terminal et l’edge, puis Incus lui-même
incus list --all-projects -c ne -f csv | while IFS=, read -r name project; do incus delete --force "$name" --project "$project"; done
systemctl stop incus-startup incus incus.socket incus-user.socket incus-lxcfs
# le pool, gardé avec vos fichiers :
zpool export boxes
# ou, seulement pour le détruire avec chaque fichier qu’il contient et vider son disque :
zpool import -N boxes 2>/dev/null; zpool destroy -f boxes
zpool labelclear -f /dev/sdb1 # les étiquettes sont sur la partition, pas sur le disque entier
wipefs -a /dev/sdb1 /dev/sdb9 && wipefs -a /dev/sdb && blockdev --rereadpt /dev/sdb
# paquets, sources, fichiers, utilisateurs
apt-mark unhold incus incus-base incus-client cloudflared
apt-get purge incus incus-base incus-client cloudflared 'openzfs-*' # gardez openzfs-* si vous avez gardé le pool
rm -rf /var/lib/incus /var/lib/incus-lxcfs /etc/apt/sources.list.d/zabbly-incus-stable.sources \
/etc/apt/sources.list.d/cloudflared.list /etc/apt/keyrings/zabbly.asc /etc/apt/keyrings/cloudflare-main.asc \
/etc/sysctl.d/90-detachbox.conf /etc/modprobe.d/zfs.conf /usr/src/openzfs-build /etc/cloudflared/detachbox.token \
/etc/detachbox-node /usr/local/lib/detachbox-node /usr/local/bin/detachbox-node-host /var/lib/detachbox-node
userdel incus; groupdel incus-admin; userdel cloudflared
systemctl daemon-reload; update-initramfs -u -k all; reboot # le redémarrage met fin à tout ce qui tourne encore
Après le redémarrage, apt-get autoremove --purge retire ce qu’apt a tiré pour eux, et le serveur passe de nouveau les vérifications de l’installation.