Skip to content

ClouDNS Sync

The ClouDNS Sync extension synchronizes individual DNS zones between local PowerDNS and ClouDNS — in either direction, chosen per zone. It's installed as an opt-in extension via the marketplace and accesses local DNS data exclusively through the panel's existing DNS API.

Installation & enabling

  1. Enable the extension (marketplace).
  2. Global credentials — the admin sets a ClouDNS Auth ID and Auth Password under Extensions → ClouDNS Sync → Settings. These act as the fallback for every customer who hasn't set their own.
  3. Package permission — in the package, the admin sets Allow ClouDNS sync (perm_clouddns_sync) to control which customers even see the toggle in the DNS tab.

Syncing a zone

  1. Open a domain's zone in the DNS tab — the ClouDNS Sync block appears there (only visible when the extension is active and the package grants the permission).
  2. Enable the toggle. If ClouDNS already has a zone matching the same domain name, its zone ID is linked; otherwise the extension automatically creates a new ClouDNS zone.
  3. Sync direction (admin-only):
  4. Local → ClouDNS — PowerDNS is authoritative, ClouDNS is adjusted to match.
  5. ClouDNS → Local — ClouDNS is authoritative, the local PowerDNS records are overwritten.
  6. Sync Now triggers a manual run; every direction change also triggers an immediate run.

Synced record types: A, AAAA, MX, CNAME and TXT — SOA and NS are left untouched, that's the zone's own business.

Own credentials (customer)

A customer can set their own ClouDNS credentials in the same block. Own credentials, when set, take precedence over the global ones — even if the admin has configured global credentials.

Security model

  • All ClouDNS credentials (global and per-customer) are stored AES-256-GCM encrypted in the extension's own SQLite database — never in plaintext in logs or API responses.
  • Local DNS access goes exclusively through the panel's existing DNS API, forwarding the caller's own Bearer token — the extension has no privileged access of its own to PowerDNS.
  • The package permission is enforced by the extension itself, server-side (the generic extension proxy does not check it).

Not yet included

  • Scheduled automatic sync — every run is currently triggered by a user action (toggling/changing direction, or the manual sync button); there is no cron job.
  • Additional record types (e.g. SRV, CAA) — currently A/AAAA/MX/CNAME/TXT only.