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¶
- Enable the extension (marketplace).
- 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.
- 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¶
- 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).
- 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.
- Sync direction (admin-only):
- Local → ClouDNS — PowerDNS is authoritative, ClouDNS is adjusted to match.
- ClouDNS → Local — ClouDNS is authoritative, the local PowerDNS records are overwritten.
- 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.