detachbox
PáginasRemova o nó

Remova o nó

sudo detachbox-node-host uninstall --confirm

A desinstalação devolve o servidor do jeito que a instalação o encontrou. Todo terminal é encerrado, e o nó para de vez.

O que está rodando sai primeiro: o node-host e o túnel, depois cada terminal e o edge, depois o Incus com cada processo, bridge, regra de firewall e montagem que ele tinha. Em seguida saem os pacotes que a instalação adicionou, com tudo o que o apt trouxe junto, os repositórios do Incus e da Cloudflare, o usuário de sistema do Incus, as configurações de sysctl do nó, e a configuração, as chaves e o estado da instalação. O próprio detachbox-node-host fica enquanto o pool existir, para você removê-lo depois.

Depois avise o seu contato no detachbox, que tira o nó da sua conta.

Seus arquivos ficam no pool

O pool boxes com os arquivos da sua conta fica, exportado, com o ZFS para lê-lo:

sudo zpool import boxes                          # traz o pool de volta
sudo zfs list -r boxes/custom                    # lista as pastas da sua conta
sudo mount -t zfs boxes/custom/<folder> /mnt     # abre uma delas

Quando você não precisar mais desses arquivos, sudo detachbox-node-host uninstall --confirm --destroy-pool destrói o pool mantido com tudo o que tem dentro e remove o ZFS e o detachbox-node-host. Rodado de novo sem essa opção, uninstall --confirm diz que o nó já foi desinstalado e indica esse comando. Num servidor onde o detachbox-node-host não existe mais, a verificação da instalação mostra o comando a usar.

Uma nova instalação neste servidor recusa o disco do pool mantido e diz por quê: um nó novo nunca assume os arquivos do nó antigo. Dê outro disco ao nó novo, ou remova antes o pool mantido com o comando que a verificação mostra. Os pacotes do OpenZFS que o nó antigo manteve passam a ser os da nova instalação.

Destrua o pool também

sudo detachbox-node-host uninstall --confirm --destroy-pool

Isso destrói o pool e todos os arquivos nele. Só mexe no pool que esta instalação criou, e só limpa o disco quando tudo nele é da instalação: o mesmo disco em que o pool foi criado, pelo WWN ou pelo número de série, só com as partições do próprio pool. Aí o disco fica vazio, como a instalação o encontrou: os rótulos do pool limpos, todas as assinaturas e a tabela de partições apagadas, o disco conferido do mesmo jeito que a instalação confere. Caso contrário, o disco fica como está, e a desinstalação diz por quê e o que fazer, como mostra Solução de problemas do nó. Depois remove o OpenZFS e todos os pacotes que a instalação adicionou para ele. No fim, o servidor passa nas verificações da instalação para uma instalação nova.

Se um passo falhar

A desinstalação para nesse passo e lista o que ainda está no servidor. Nada de que uma segunda execução precise foi removido: o ZFS fica enquanto o pool existir, e o node-host mantém o histórico até o fim. Corrija o que a linha diz e rode o mesmo comando de novo; ele continua desse passo.

Com --destroy-pool, a última coisa que a desinstalação remove é o próprio detachbox-node-host; com o pool mantido, o programa fica no servidor. O log da desinstalação, com cada execução da instalação que veio antes, fica em /var/log/detachbox-node-uninstall.log, legível só pelo root.

Remova à mão

Só para o pior caso: o uninstall para no mesmo passo toda vez, e nenhum node-host corrigido consegue chegar ao servidor, porque um nó retirado da conta não se atualiza mais sozinho. Rode estes comandos como root, nesta ordem, e pule o que já tiver saído. Aqui o disco do pool é /dev/sdb e a partição ZFS dele, /dev/sdb1:

cp /var/lib/detachbox-node/install/install.log /var/log/detachbox-node-uninstall.log   # guarda o log
systemctl disable --now detachbox-node-host cloudflared-detachbox
rm -f /etc/systemd/system/detachbox-node-host.service /etc/systemd/system/cloudflared-detachbox.service
# cada terminal e o edge, depois o próprio 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
# o pool, mantido com os seus arquivos:
zpool export boxes
# ou, só para destruí-lo com todos os arquivos e esvaziar o disco:
zpool import -N boxes 2>/dev/null; zpool destroy -f boxes
zpool labelclear -f /dev/sdb1          # os rótulos ficam na partição, não no disco inteiro
wipefs -a /dev/sdb1 /dev/sdb9 && wipefs -a /dev/sdb && blockdev --rereadpt /dev/sdb
# pacotes, repositórios, arquivos, usuários
apt-mark unhold incus incus-base incus-client cloudflared
apt-get purge incus incus-base incus-client cloudflared 'openzfs-*'   # mantenha openzfs-* se você manteve o 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   # o reboot encerra o que ainda estiver rodando

Depois do reboot, apt-get autoremove --purge remove o que o apt trouxe junto, e o servidor passa de novo nas verificações da instalação.