SpipCP
DNSSelf-hosted

Set up your nameservers

Step by step — buy a nameserver domain, enroll two cheap VPS in different locations as nameserver nodes, let SpipCP install PowerDNS, then run the one-time glue wizard at your registrar and verify it.

This is the one-time setup for self-hosted DNS: stand up the two boxes that will answer for your domains. You do it once; after that you just delegate domains to them. Everything here lives under Networking → Nameservers in the panel — a page titled DNS Servers with a Nameserver boxes tab and a Self-hosted zones tab, separate from Settings (managed providers) and from the generic Add-Node flow. (The old DNS → DNS Servers link still works.)

Two VPS — ideally on two different providers

Before you start, have two cheap VPS ready, plus one domain to host the nameservers on. The two boxes are your failover, so what matters is that they fail independently:

  • ns1+ns2 on a single box — pointless; one reboot takes out all your DNS.
  • Two boxes, same provider, same region — weak; they can land on the same physical host, and they share the provider's network, power, and account.
  • Two boxes, two different providers (and regions) — best. Separate companies means separate hardware, separate upstream networks (ASNs), separate power, and separate control planes, so no single outage, BGP incident, or account suspension can dark both nameservers at once.

SpipCP writes to each box independently (no link between them — see How it works), so splitting ns1 and ns2 across two providers is the natural setup, not a special case.

VPS specs

A nameserver is light — PowerDNS answers queries and holds a small zone file; it's not a busy web server. The cost driver is two boxes in two locations, not the size of each box. The smallest tier at most providers is plenty to start.

ResourceMinimumRecommendedWhy
vCPU11–2DNSSEC signing and query load are tiny; 1 core serves a small fleet. A 2nd core only helps with many busy zones.
RAM512 MB1 GBPowerDNS fits in a few hundred MB; 1 GB leaves headroom for the OS, updates, and key ops.
Disk10 GB20 GB SSDThe OS, PowerDNS, and the zone data are small; the room is for logs and updates. SSD keeps signing snappy.
Network1 public IPv4 (static)1 IPv4 + 1 IPv6, staticEach box needs a stable public IP — it's the glue record. IPv6 lets v6-only resolvers reach you directly.
Bandwidthwhatever the tier includesA non-issue for DNS. Queries are tiny UDP packets (tens to a few hundred bytes); even a busy fleet uses a sliver of a 1 TB/mo allowance. Don't pay for bandwidth here.
OSUbuntu 24.04 LTSUbuntu 24.04 LTSWhat the enroll flow hardens and installs PowerDNS on.
Locations2 boxes, 2 regions2 boxes, 2 providers + 2 regionsSee the callout above — separate providers give independent hardware, network, power, and control planes.

Why so small?

A nameserver does only DNS — SpipCP won't run instances or sites on it — so you're sizing for DNS alone, which is cheap. The typical $4–6/mo "nano"/"micro" tier at Hetzner, Bunny, OVH, Vultr, etc. is enough for each box. Spend the budget on the second location, not on bigger boxes.

1. Buy a nameserver domain

Register one domain whose only job is to host your nameserver hostnames — for example spipdns.com. You'll create two hostnames under it, ns1.spipdns.com and ns2.spipdns.com, and every domain you self-host will be delegated to that pair.

It can be at any registrar; it doesn't have to be the same one as the domains you'll serve. Keep it cheap and boring — it's plumbing, not a brand.

Some ccTLDs won't register glue — name your nameservers under a gTLD

This is why you buy a separate domain for the nameservers rather than naming them inside a domain you serve. Registrars can create glue (host records) for generic TLDs like .com/.net, but some ccTLDs — .eu (EURid) is the notable one — do not permit registrar-created in-domain glue; the registrar's glue / "Hosts" screen is simply disabled for them ("feature not supported for this extension"). So if the domain you want to serve is a .eu (or similar), you cannot name your nameservers inside it (ns1.example.eu is a dead end).

Instead, name them under a glue-friendly domain you own — a .com like spipdns.com — register the glue once there, then delegate your .eu (and every other) domain to ns1/ns2.spipdns.com with no glue needed at the served domain. This is the generally-recommended pattern anyway (a dedicated nameserver domain); the .eu restriction just makes it mandatory. The nameserver domain itself stays on its own registrar's DNS — you're only adding the ns names + glue to it, not delegating it.

2. Enroll two VPS as nameserver nodes

In the panel, go to Networking → Nameservers → Nameserver boxes tab → Add a nameserver. This is its own flow, not the generic Add-Node wizard — a nameserver node is a distinct kind that won't host instances or sites. Run it twice, once per VPS:

For your first VPS (location A), give the flow the SSH connection details (host, user, private key) plus the nameserver hostname (ns1.spipdns.com) and the box's public IP. You don't type a PowerDNS API key — the panel generates it for you. You can also tag the box with a Provider label (free text — e.g. Hetzner, OVH) and an expiry date for the box's domain or VPS; both then show on the nameserver card so you can see at a glance where each box lives and when it renews. It enrolls and hardens like any node, just tagged nameserver. This becomes ns1.

Repeat for your second VPS in a different location (location B), as ns2.spipdns.com. This becomes ns2.

The public IPs you entered become the glue records at your registrar (step 4).

The Add-a-nameserver dialog with SSH details, nameserver hostname, public IP, and provider-label and expiry fields
📷The Add-a-nameserver dialog: SSH details, nameserver hostname, public IP, and the new provider-label / expiry fields.img/dns-nameserver-add.avif
The Add-a-nameserver dialog: SSH details, nameserver hostname, public IP, and the new provider-label / expiry fields.

3. SpipCP installs PowerDNS

When a nameserver box enrolls, the panel installs PowerDNS on it (the authoritative server plus its API, kept private to the box, with rate-limiting on port 53 to blunt abuse). You don't configure PowerDNS by hand or paste an API key — the panel generates the key, stores it encrypted, and writes it onto that box during the install. The key never returns to your browser and never leaves the panel except onto its own box.

The PowerDNS API is bound to localhost on the box — it is never exposed to the network. The panel drives it through the node's agent (the same authenticated agent WebSocket used for everything else), so the only thing listening publicly is port 53. On a real Ubuntu 24.04 box, systemd-resolved's stub listener normally holds port 53; the nameserver recipe frees it (it sets DNSStubListener=no and restarts resolved) before PowerDNS starts, so PowerDNS can bind :53 — the panel handles this for you, there's nothing to do by hand.

4. The one-time glue wizard

This is the part the panel cannot do for you — it's Layer 1 at your registrar — so the panel guides and verifies it instead. "Glue" tells the world the IP addresses of your nameserver hostnames, breaking the chicken-and-egg where ns1.spipdns.com is itself inside spipdns.com.

The wizard shows you exactly what to enter at the registrar of your nameserver domain (spipdns.com):

Register as a "host" / "private nameserver"IP
ns1.spipdns.comyour first VPS's public IP
ns2.spipdns.comyour second VPS's public IP

At your nameserver domain's registrar, find "register a host", "private nameservers", or "glue records" (the name varies). Create ns1.spipdns.com → IP A and ns2.spipdns.com → IP B, using the exact values the wizard shows.

Back in the panel, click Verify glue. SpipCP resolves the two hostnames from outside and confirms they return the right IPs. Glue can take a little while to propagate at the registrar — re-run Verify until it's green.

Glue is registered once, for the nameserver domain only

You do this once, for spipdns.com (the nameserver domain) — not per domain you serve. After it's verified, every domain you self-host just delegates to ns1/ns2.spipdns.com (delegate a domain) with no further glue work.

5. The NS-health dashboard

The Nameserver boxes tab under Networking → Nameservers lists your nameserver boxes with a live health check for each: whether the box is reachable, whether PowerDNS is answering on port 53, and whether its glue verifies. Each card also shows the box's provider label and expiry badge. A green pair means you're ready to serve zones; an unreachable box shows here so you can fix it before the second one also fails.

A nameserver box card showing health checks, a provider label, and an expiry badge
📷A nameserver box card: health checks, provider label, and expiry badge.img/dns-nameserver-card.avif
A nameserver box card: health checks, provider label, and expiry badge.

Next steps

  • Delegate a domain — put your first real domain on your nameservers.
  • Failover — what the two boxes buy you and what the dashboard watches.
  • DNSSEC — sign your zones.

On this page