SpipCP
DNSSelf-hosted

Run dedicated nameservers

Own DNS end to end by running PowerDNS on cheap VPS as nameserver nodes. The trade-offs (two boxes, the upkeep, no anycast), how it works, and why it's worth it for data ownership.

Self-hosted DNS means the operator's infrastructure is authoritative for its domains โ€” the nameservers run there, the records live there, no third party sits in between. Where a managed provider only handles Layer 2 (the records, because delegation to it already happened), self-hosted DNS owns both layers: the domains point at dedicated ns1/ns2.spipdns.com, and SpipCP writes the records onto those boxes.

Why

  • Data ownership. Records โ€” who points where, mail (MX/SPF/DKIM/DMARC), subdomains โ€” live on infrastructure under direct control, not a provider's account that could be suspended, priced up, or subpoenaed.
  • Off third-party (and US) soil entirely. Even the EU managed providers are still someone else's service. Self-hosting puts the whole stack under direct control.
  • No per-zone limits or lock-in. The DNS belongs to the operator; add as many zones and records as the boxes hold.

The trade-offs

Running dedicated nameservers is real infrastructure, not a toggle:

This is upkeep taken on, not a toggle

  • Two boxes are required, not optional. A single nameserver is a single point of failure for every domain delegated to it. The whole point of ns1 + ns2 is that the second box is the backup โ€” so they must be two separate VPS in different locations. Putting ns1 and ns2 on one box buys nothing.
  • The upkeep falls to the operator. Patching, uptime, and the registrar steps (glue + per-domain delegation) are work the panel guides but cannot do automatically.
  • No anycast. The two VPS sit in two locations; a big managed provider answers from dozens of points worldwide. For most sites two well-placed boxes are plenty, but the lowest possible lookup latency or massive DDoS-absorbing DNS still favors a managed provider. Self-hosted is chosen for ownership, not for anycast.

When the upkeep isn't worth it, an EU managed provider gets records off US-hosted DNS with none of this.

How it works

SpipCP runs PowerDNS on each nameserver box and writes to each box one at a time. The boxes share no database and no zone transfer between them; the panel pushes every zone and record change to each box on its own.

The panel drives each box's PowerDNS through the node's own agent โ€” the same authenticated agent WebSocket that carries everything else โ€” rather than reaching over a direct HTTP connection to the box. That keeps the PowerDNS API bound to localhost on each box and never exposed to the network: nothing listens publicly except port 53. It also means a box behind a strict firewall or NAT no longer shows as "unreachable" just because its API port can't be dialed from the outside โ€” if the agent is connected, the panel can drive PowerDNS.

That buys two things:

  • One box down doesn't block edits. Because the panel writes to each box separately, a box being unreachable doesn't stop DNS edits โ€” the reachable box still takes the write, and the down one catches up when it returns.
  • Automatic failover. Both boxes are listed as nameservers for the domain, so resolvers try each one โ€” if ns1 is unreachable, the world falls back to ns2 with nothing to configure. See Failover.
                  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
                  โ”‚  A record is edited     โ”‚
                  โ”‚  in the panel           โ”‚
                  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                               โ”‚  push to EACH box (via its agent โ†’
                               โ”‚  localhost PowerDNS API)
                โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
                โ–ผ                              โ–ผ
       โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”            โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
       โ”‚  PowerDNS @ ns1 โ”‚            โ”‚  PowerDNS @ ns2 โ”‚
       โ”‚  location A     โ”‚            โ”‚  location B     โ”‚
       โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜            โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                โ–ฒ                              โ–ฒ
                โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                               โ”‚  resolvers try either,
                               โ”‚  fall back automatically
                  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
                  โ”‚  the world's DNS        โ”‚
                  โ”‚  resolvers              โ”‚
                  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

  No shared DB ยท no AXFR โ€” each box is written independently, so one box
  down never blocks a write, and failover is automatic.

A nameserver node is its own kind of node: SpipCP won't host instances or sites on it. It runs DNS and nothing else, added through its own Add-a-nameserver flow under Networking โ†’ Nameservers (the Nameserver boxes tab) โ€” not the generic add-node path. (The old DNS โ†’ DNS Servers link still works.) Each nameserver row links across to its underlying Node, and a role=nameserver node links back here. DNSSEC is supported (PowerDNS signs the zone and holds the keys; the panel reads the DS for entry at the registrar โ€” see DNSSEC).

Wildcard certificates

Self-hosted nameservers are wildcard-cert-capable. A *.example.com certificate needs the ACME DNS-01 challenge โ€” and because SpipCP owns the PowerDNS API on these boxes, the node's Caddy self-solves it via the compiled caddy-dns/powerdns module, writing and tearing down the _acme-challenge TXT automatically. The result issues and auto-renews exactly like a per-host cert, so the self-hosted posture is fully automatable โ€” no third-party DNS credential required. See SSL/TLS certificates for the full matrix.

How to get there

Everything lives under Networking โ†’ Nameservers in the panel โ€” a page titled DNS Servers with two tabs, Nameserver boxes and Self-hosted zones. (The old DNS โ†’ DNS Servers link still works.)

Or follow the guided checklist

The Self-host nameservers journey on the Set up surface sequences this whole page's steps into one resumable checklist โ€” box โ†’ box โ†’ glue โ†’ zone โ†’ records โ†’ DNSSEC-off โ†’ delegate โ†’ attach โ€” and adds a Check now button to the two steps done at the registrar: it resolves the glue records and delegation from outside and reports whether they're visible yet. The check is advisory, never a gate โ€” a red result means "not yet propagated," not "misconfigured."

Records first, then delegate โ€” never the other way round

The single rule that governs go-live: records must exist on the boxes BEFORE delegation points at those boxes. Delegating first means that, hours later, the panel itself at cp.example.com can go dark because the cp record was never added to the boxes. The DNS Servers page keeps this order in front of the operator as an always-visible callout above the tabs; the full six-step sequence is on Delegate a domain.

The DNS Servers page with the go-live order callout above the two tabs
๐Ÿ“ทThe DNS Servers page โ€” the always-visible go-live order callout above the tabs.img/dns-servers-golive-order.avif
The DNS Servers page โ€” the always-visible go-live order callout above the tabs.
  1. Setup โ€” buy a nameserver domain, enroll two VPS as nameserver nodes, install PowerDNS, run the one-time glue wizard.
  2. Delegate a domain โ€” create the zone, add records, point the registrar at the new nameservers, verify it propagated.
  3. Failover โ€” what two nameservers buy and what the panel monitors.
  4. DNSSEC โ€” sign the zones and register the DS.

On this page