SpipCP
Nodes

Removing a node

One action, one choice โ€” stop managing a server and take the agent off it, over the agent's own connection rather than SSH, with the node's token revoked before anything else is attempted.

Remove node is on the node's own page. It takes one decision:

The Remove node dialog
๐Ÿ“ทOne action, with the consequence of the unchecked box stated in plain words.img/nodes-remove-dialog.avif
One action, with the consequence of the unchecked box stated in plain words.

Also uninstall the agent from the server

Checked โ€” the default when the server is reachable โ€” the agent is stopped, disabled, and removed along with its unit file, binary, configuration, runtime state, and service user. The server is left clean and can be added again from scratch.

Unchecked, the agent keeps running. Its token is revoked, so it can manage nothing, but it will keep dialling home and will appear under Unrecognised nodes calling home. That is occasionally what is wanted โ€” a server being handed to someone else who will keep managing it โ€” and the dialog says so rather than leaving it to be discovered.

What happens, in order

The order is the design, not an implementation detail:

  1. The token is revoked. From this moment the agent cannot authenticate, so an agent that survives everything below cannot come back as a stranger asking to be adopted.
  2. The agent is uninstalled over its own connection. Not SSH โ€” the panel's own hardening closes root and password SSH, and the intrusion blocker bans a retry loop, so the SSH path failed precisely on the servers most worth decommissioning. The agent is already holding a connection; the instruction goes down that. SSH remains as a fallback for an agent that is already gone.
  3. The record is deleted โ€” and only then.

A cleanup that cannot finish therefore leaves a silent server, never one asking to be adopted again.

When the server is unreachable

The node keeps a record in awaiting cleanup. Its token is already revoked, so it cannot come back as a healthy node, and the panel has not forgotten that it owes this box a cleanup.

There are two ways out:

  • The server comes back. Its connection is refused, and it is handed a signed instruction to remove its own agent โ€” signed with the secret it already holds, so the most destructive instruction in the protocol cannot come from anywhere else. It uninstalls itself and stops.
  • The server is gone for good โ€” wiped, cancelled, or returned to the provider. The server is gone โ€” forget it clears the record.

A refused connection is never the end of an agent

From the agent's side, "the token was revoked" and "the panel lost its database" are the same event. The second is a recovery that depends on the agent continuing to dial home so it can be claimed back โ€” see Re-adopt workloads. So a refusal alone changes nothing about an agent's behaviour. Only an explicit, signed decommission stops one, and it stops it by uninstalling rather than by giving up.

What is left behind

The uninstall reverses what the enrollment installed, and nothing more. The OS-level hardening the agent applied โ€” the firewall, the SSH policy, the intrusion blocker, automatic security updates โ€” is left exactly as it is. That belongs to the server's owner to keep or to reset.

Instances and the sites inside them are not touched. They run as their own services on the box and do not depend on the panel or the agent to keep running. Removing a node stops it being managed; it does not take anything off the air. To remove the workloads, remove the sites and instances first.

โ†’ Reconnecting a node to a panel that lost its records: Re-adopt workloads. ยท Adding one: Nodes.

On this page