SpipCP

Choose a setup

Four ways to run SpipCP β€” pick who serves DNS and how the panel gets installed, then follow one walkthrough end to end.

SpipCP doesn't force one architecture. Two independent choices define the setup:

  1. Who serves DNS? β€” self-hosted nameservers, or an external provider (Cloudflare, Bunny, …).
  2. How does the panel get installed? β€” cloned from a git host, or pulled from a registry.

Pick a row, follow its walkthrough, ignore the rest. The panel's offerings switchboard (Networking β†’ Providers) turns OFF whichever DNS posture isn't in use, so the team never even sees the other path's screens.

The fastest way in: start a guided journey

Each scenario below maps to a guided journey on the Set up surface (Networking β–Έ Domains β†’ Set up). Rather than reading the whole walkthrough up front, starting the matching journey follows a resumable checklist that reads its progress from the live fleet β€” the scenario prose here is the depth behind each step. Scenario A β†’ Self-host nameservers; B/C β†’ Connect a managed provider; the do-nothing path β†’ Bring your own DNS.

The scenarios

ScenarioDNS records live…Best forWalkthrough
A Β· Self-hosted DNSon dedicated PowerDNS nameserver boxes, managed entirely in the panelMaximum sovereignty β€” becoming a self-hosted Cloudflare equivalent. No third party holds a single record.No domain yet / self-hosted DNS
B Β· External DNS β€” Cloudflareat Cloudflare, written via its APIFastest start; already using CloudflareExternal DNS/CDN
C Β· External DNS β€” deSEC / Hetzner / Bunny / Gcoreat that provider, written via its APIEU-first sovereignty without running nameserversExternal DNS/CDN (same flow, pick the provider tab)
D Β· Registry installany of A–CTeams with CI + a registry (Forgejo, GHCR, GitLab, Harbor) β€” the box only ever pullsInstallation

A and B/C are both first-class

Self-hosted DNS (A) is the sovereignty path β€” the panel runs the nameservers and its records editor replaces the provider dashboard entirely. External DNS (B/C) is the fast path β€” the panel writes records through the provider's API and everything else (sites, certs, deploys, backups) works identically. Starting on B/C and migrating to A later is supported: create the zone on dedicated nameservers, re-create the records (the editor's Paste many exists for exactly this), then re-delegate at the registrar.

What each scenario needs

A β€” Self-hosted DNS

  • Start the Self-host nameservers journey (Set up) β€” it sequences box β†’ box β†’ glue β†’ zone β†’ records β†’ DNSSEC-off β†’ delegate β†’ attach as one resumable checklist, with a Check now on the glue and delegation steps
  • 2 small extra VPSes (1–2 GB) that become ns1/ns2 β€” enrolled from the panel in one wizard each
  • One-time registrar steps: glue records for the in-domain nameservers + delegation
  • Full walkthrough: Installation without DNS covers panel-on-IP β†’ nameservers β†’ zone β†’ delegation β†’ hostname cutover in order

B / C β€” External DNS

  • Start the Connect a managed provider journey (Set up) β€” pick a provider, then take the automate with a token fork (or the records-by-hand one, for holding no credential)
  • An API token from the provider (exact scopes are shown per provider in the panel)
  • A provider account added under Networking β†’ Providers
  • The domain delegated to that provider at the registrar (usually already true)
  • Full walkthrough: External DNS/CDN

D β€” Registry install

  • A container registry the box can pull from (GHCR today; a self-hosted Forgejo/Harbor once one is running)
  • The deploy files from any git host β€” install.sh --repo <url> fetches exactly what it needs
  • Full walkthrough: Installation (the quick install is this scenario)

What happens automatically (every scenario)

These used to be manual steps β€” they aren't anymore. On every install and upgrade:

  • The database migrates itself β€” a one-shot migrate service runs before the panel; seeing it as Exited (0) in docker compose ps is correct, not an error.
  • Roles & permissions seed themselves β€” the admin/operator/developer grants reconcile on every boot.
  • Agent releases are baked in and auto-published β€” the image carries signed agent binaries (amd64 + arm64); the first node enrollment never requires compiling or uploading anything.

If the panel asks for a manual agent release, or the nav renders empty after login, the box is running an image from before these fixes β€” updating the panel resolves both.

On this page