SpipCP
Nodes

Tenant isolation

Why instances default to a KVM VM, why a shared kernel is not a tenant boundary, and the three network controls every node class enforces so tenants can't see, reach, or spoof each other.

SpipCP is built so you can sell hosting to many tenants: you can run instances that hold untrusted tenant content next to each other on one node, and the boundary between them holds. Two things make that real — instances default to a KVM VM, and every node class keeps tenants apart on the network.

VM by default, container by exception

Every instance is one of two types:

TypeWhat it isWhen
VM (KVM)Hardware-virtualised — its own kernel, isolated from the host and its neighbours.The default. Safe for untrusted tenant content.
Container (LXC)Shares the host kernel. Lighter, denser.A trusted / internal-only opt-in.

A shared kernel is not a tenant boundary

An LXC container shares the host kernel, so a kernel bug becomes a way to take over the host. A container is not a safe boundary for untrusted tenant content. That's why VM is the default and container is labelled trusted/internal only in the create dialog — use a container only for workloads you control.

This is the same for every class — vps, dedicated-single-ip, and dedicated-multi-ip all default to VM and all allow container as the trusted opt-in. See Node topology for the full capability table.

The network boundary

A VM isolates the compute. The other half is the network: tenants share a node's NAT bridge, so the bridge itself has to keep them apart. Every class enforces three controls:

ControlWhat it stopsHow
L2 isolationOne tenant scanning or talking to a neighbour on the local network.The shared bridge gives tenants no direct link to each other.
Egress firewallA guest reaching the node's management (the panel, the worker).A guest can reach the internet but cannot reach host management.
Anti-spoofA tenant faking a neighbour's IP or MAC.Each interface is pinned to its own address.

So a tenant can't see its neighbours, can't reach the control plane, and can't impersonate another address. All three are on for every class.

The boundary belongs to the node class

The isolation rules are part of the node's class, so what the agent applies and what the instance workspace shows you come from the same source. It's a property of the node class, not a per-instance toggle you can forget to set.

Next steps

  • Node topology classes — how a node declares what it is and what each class can deliver.
  • Instances — creating VM or container instances on a node.
  • Site owners — the next isolation layer down: a per-site Linux owner inside an instance.

On this page