Удаление ноды
sudo detachbox-node-host uninstall --confirm
Удаление возвращает сервер в то состояние, в котором его нашла установка. Все терминалы завершаются, нода останавливается насовсем.
Сначала уходит то, что работает: node-host и туннель, затем все терминалы и edge, затем Incus со всеми его процессами, мостами, правилами файрвола и точками монтирования. Потом удаляются пакеты, которые добавила установка, вместе со всем, что apt подтянул к ним, репозитории Incus и Cloudflare, системный пользователь Incus, настройки sysctl ноды, а также конфиг, ключи и состояние установки. Сам detachbox-node-host остаётся, пока есть пул, чтобы потом вы могли убрать и его.
После этого напишите вашему контакту в detachbox: он снимет ноду с вашего аккаунта.
Файлы остаются в пуле
Пул boxes с файлами вашего аккаунта остаётся, экспортированный, вместе с ZFS, чтобы его читать:
sudo zpool import boxes # вернуть пул
sudo zfs list -r boxes/custom # папки вашего аккаунта
sudo mount -t zfs boxes/custom/<folder> /mnt # открыть одну из них
Когда эти файлы больше не нужны, sudo detachbox-node-host uninstall --confirm --destroy-pool уничтожит сохранённый пул со всем содержимым и уберёт ZFS и detachbox-node-host. uninstall --confirm без этого флага, запущенный снова, скажет, что нода уже удалена, и назовёт эту команду. Если detachbox-node-host на сервере уже нет, нужную команду печатает проверка установки.
Новая установка на этом сервере откажется от диска с сохранённым пулом и объяснит почему: новая нода никогда не забирает файлы старой. Дайте новой ноде другой диск или сначала уберите сохранённый пул командой, которую печатает проверка. Пакеты OpenZFS, которые оставила старая нода, станут пакетами новой установки.
Уничтожить и пул
sudo detachbox-node-host uninstall --confirm --destroy-pool
Эта команда уничтожает пул и каждый файл в нём. Команда трогает только пул, который сделала эта установка, а диск стирает, только если всё на нём принадлежит установке: тот же диск, на котором сделан пул (по WWN или серийному номеру), и на нём только разделы самого пула. Тогда диск остаётся пустым, каким его нашла установка: метки пула стёрты, все сигнатуры и таблица разделов удалены, диск проверен так же, как его проверяет установка. Иначе диск остаётся как есть, а удаление объясняет почему и что делать, как показано на странице Неполадки ноды. Затем команда удаляет OpenZFS и все пакеты, которые установка добавила для неё. После этого сервер проходит проверки установки для новой ноды.
Если шаг не прошёл
Удаление останавливается на этом шаге и перечисляет, что ещё осталось на сервере. Ничего, что понадобится второму запуску, не удалено: ZFS остаётся, пока есть пул, а node-host хранит свою запись до самого конца. Исправьте то, о чём говорит строка, и запустите ту же команду снова: она продолжит с этого шага.
С --destroy-pool удаление последним шагом убирает сам detachbox-node-host; если пул сохранён, программа остаётся на сервере. Журнал удаления вместе со всеми прошлыми запусками установки остаётся в /var/log/detachbox-node-uninstall.log, и читать его может только root.
Удаление вручную
Только на крайний случай: uninstall раз за разом останавливается на одном и том же шаге, а исправленный node-host до сервера не доходит, потому что нода, снятая с аккаунта, больше не обновляется. Выполните эти команды от root, по порядку, пропуская то, чего уже нет. Здесь диск пула — /dev/sdb, а его раздел ZFS — /dev/sdb1:
cp /var/lib/detachbox-node/install/install.log /var/log/detachbox-node-uninstall.log # сохранить журнал
systemctl disable --now detachbox-node-host cloudflared-detachbox
rm -f /etc/systemd/system/detachbox-node-host.service /etc/systemd/system/cloudflared-detachbox.service
# все терминалы и edge, затем сам Incus
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
# пул, сохранить вместе с файлами:
zpool export boxes
# или, только чтобы уничтожить его со всеми файлами и очистить диск:
zpool import -N boxes 2>/dev/null; zpool destroy -f boxes
zpool labelclear -f /dev/sdb1 # метки лежат на разделе, а не на всём диске
wipefs -a /dev/sdb1 /dev/sdb9 && wipefs -a /dev/sdb && blockdev --rereadpt /dev/sdb
# пакеты, источники, файлы, пользователи
apt-mark unhold incus incus-base incus-client cloudflared
apt-get purge incus incus-base incus-client cloudflared 'openzfs-*' # оставьте openzfs-*, если сохранили пул
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 # перезагрузка завершит всё, что ещё работает
После перезагрузки apt-get autoremove --purge уберёт то, что apt подтянул к этим пакетам, и сервер снова пройдёт проверки установки.