SpipCP
Nodes

Nodes

Bring a server under SpipCP's control โ€” enroll it once over SSH, harden it, and keep it converged โ€” then manage it from the node workspace.

A node is a server SpipCP manages โ€” a VPS or a bare-metal box. It receives SSH access once; the panel installs a small agent, hardens the box, and from then on keeps it in a known-good state and watches it. Everything on SpipCP โ€” instances, and the sites inside them โ€” lives on a node, so this is where management starts.

The Nodes list
๐Ÿ“ทNodes โ†’ every managed server, with its status at a glance.img/nodes-list.avif
Nodes โ†’ every managed server, with its status at a glance.

Adding a node

From Nodes โ†’ Add node, a wizard walks through bringing a server online:

Give it SSH access. Name the node and enter its host, SSH port/user, and a private key or password. This is the only time SSH is used, and it's encrypted right away.

Choose what it is. Pick the topology class (VPS, single-IP dedicated, or multi-IP dedicated) and the OS image. The class decides what instances the node can later run.

Preflight. Read-only checks run over SSH and report a verdict โ€” OS, networking, disk, and whether the box can host instances โ€” before anything changes. A failing check explains how to fix it.

Enroll & converge. The panel installs the agent, then hangs up SSH. The agent connects back over a secure channel and the node goes online, then reconciles to green โ€” hardened and reporting facts, watchable live in the terminal.

The add-node wizard
๐Ÿ“ทThe add-node wizard โ€” SSH access, class, preflight, then a live enroll.img/nodes-add.avif
The add-node wizard โ€” SSH access, class, preflight, then a live enroll.

Publish an agent release first

Enrollment installs the agent binary onto the node, so a fresh panel needs one published release per CPU architecture first (Agents โ†’ Releases โ†’ Publish). Otherwise the wizard stops with "No agent release published." This is a one-time step.


Once a node is online, its workspace has these tabs.

Overview

The node's details and the live facts the agent collects โ€” hostname, OS, architecture, CPU, memory, disk โ€” plus a Drift card if the live server has wandered from its desired state. The card names each drifted step in plain words โ€” what diverged, what fixing it will do, and any network egress the fix needs โ€” with a Reconcile now button that applies only the drifted steps and streams the run live, right on the card.

The node Overview tab
๐Ÿ“ทOverview โ€” collected facts, resource usage, and the drift badge.img/nodes-overview.avif
Overview โ€” collected facts, resource usage, and the drift badge.

Renaming a node

A node's name is the label the panel shows for that server. It never reaches the agent and nothing on the server itself depends on it, so it can be changed at any time โ€” the pencil beside the name in the node header, or beside Name on the Overview tab, opens a rename dialog.

Names are unique across the fleet. A name another node already holds is refused, with the reason shown on the field so it can be corrected without leaving the dialog. Entries already written to the activity and audit logs keep the name the node carried at the time, and the rename itself is recorded with both the old and the new name, so the two eras join up.

Metrics

CPU, load average, memory, and disk trends for the node โ€” with a 1h ยท 24h ยท 7d ยท 30d range picker, an online-history strip showing when the node has checked in, and capacity gauges comparing what's allocated to instances against the node's real resources.

The node Metrics tab
๐Ÿ“ทMetrics โ€” resource trends, online history, and capacity gauges.img/nodes-metrics.avif
Metrics โ€” resource trends, online history, and capacity gauges.

See Analytics for how the history behind these charts is collected.

Instances

Every instance hosted on this node, with a jump into each one โ€” and a Create instance button that opens the create dialog with this node already chosen.

The node Instances tab
๐Ÿ“ทInstances โ€” what's running on the node, and a shortcut to create more.img/nodes-instances.avif
Instances โ€” what's running on the node, and a shortcut to create more.

Services

The state of the node's own services (the agent, Incus, Caddy, fail2ban) and the Reconcile and Dry-run controls. Reconcile brings the node back to its desired state and streams every step live; a dry run shows what would change without touching anything.

The node Services tab
๐Ÿ“ทServices โ€” node service health, and the Reconcile / Dry-run controls.img/nodes-services.avif
Services โ€” node service health, and the Reconcile / Dry-run controls.
ControlWhat it does
ReconcileBring the node back to its desired state (safe to re-run โ€” a no-op if already green).
Dry runShow what would change without applying it.

โ†’ Learn more: how reconcile and drift work.

Defaults

The node's cascade defaults โ€” the git account, DNS provider, and SSL issuer its instances, and the sites inside them, inherit unless they override them. Set once here, everything below picks them up.

The node Defaults tab
๐Ÿ“ทDefaults โ€” the git account, DNS provider, and SSL issuer this node's sites inherit.img/nodes-git.avif
Defaults โ€” the git account, DNS provider, and SSL issuer this node's sites inherit.

Security

The node's security posture: its firewall (UFW) rules, the hardening state, and anything that's drifted from the baseline. The first reconcile applies a default-deny firewall, no-root-SSH, fail2ban, a sysctl baseline, and automatic security updates.

The node Security tab
๐Ÿ“ทSecurity โ€” firewall rules, hardening state, and drift.img/nodes-security.avif
Security โ€” firewall rules, hardening state, and drift.

Reconcile log

Every reconcile run against the node, re-openable with the same live view, replaying exactly what changed and when.

The node Reconcile log tab
๐Ÿ“ทReconcile log โ€” a replayable history of every run.img/nodes-reconcile-log.avif
Reconcile log โ€” a replayable history of every run.

Terminal (break-glass)

For genuine hands-on access, the Terminal opens a real shell on the node. It's admin-only and every session is audited โ€” an escape hatch, not the normal way to drive a node (reconcile is that). Operators don't get it.

The node break-glass terminal
๐Ÿ“ทTerminal โ€” an audited, admin-only break-glass shell.img/nodes-terminal.avif
Terminal โ€” an audited, admin-only break-glass shell.

How it works

A node is never SSHed into to run things โ€” the panel decides the desired state and the agent applies it. Reconcile works out the difference between desired and actual, then applies the steps in order. It's safe to re-run, and resumable: if a step fails it stops there and reports how to fix it, and re-running continues from that point. Drift detection is a scheduled read-only check that flags hand-edits; the next reconcile puts them back. A fleet reconcile brings every node back in line at once. Agent releases are signed, and a node refuses to run an unverified binary.

On this page