PowerDNS UI is a modern web management interface for the PowerDNS Authoritative Server. It wraps the PowerDNS REST API with an Angular frontend and a FastAPI backend, adding its own accounts, roles and audit layer so teams can manage zones, records, DNSSEC and more without touching the raw API.
- 🗂️ DNS Zones — create, edit, delete (Native / Master / Slave), record management with catalog assignment at creation
- 🔑 DNSSEC — cryptographic key management per zone
- 🔁 Reverse DNS — IPv4/IPv6 PTR zone creation with automatic PTR record generation
- 🧩 Catalog Zones — Producer (manual members) and Consumer (automatic AXFR sync) zones
- 🧮 Lua Records — per-zone activation of dynamic Lua records (admin/zone-admin only)
- 🔐 ACME & TSIG Keys — DNS-01 challenge keys and signing key management
- 🛰️ Autoprimaries & DNS Views / Networks (LMDB only)
- 🔍 Search & Statistics — global search plus real-time PowerDNS server metrics
- 📋 Audit Log — history of every user action + PDNS logs, syslog export
- 👥 User Management — admin / manager / viewer roles per account, OIDC SSO
- 🎨 Theme — light / dark / automatic
Single container (Angular served statically by FastAPI), SQLite by default — see the Architecture section for details.
# docker-compose.yaml
services:
pdns:
image: powerdns/pdns-auth-51:5.1.3
restart: unless-stopped
volumes:
- powerdns_data:/var/lib/powerdns
ports:
- 53:53
- 53:53/udp
command:
- "--api=yes"
- "--api-key=${PDNS_AUTH_API_KEY:-change-this-api-key-in-production}"
- "--webserver=yes"
- "--webserver-address=0.0.0.0"
- "--webserver-port=8081"
- "--webserver-allow-from=0.0.0.0/0"
pdns-ui:
image: ghcr.io/cyr-ius/pdns-ui:latest
restart: unless-stopped
depends_on: [pdns]
environment:
- PDNS_AUTH_API_URL=http://pdns:8081
- PDNS_AUTH_API_KEY=change-this-api-key-in-production
volumes:
- powerdns-ui_data:/var/lib/powerdns-ui
ports:
- 8080:8080
volumes:
powerdns_data:
powerdns-ui_data:docker compose up -dOpen http://localhost:8080 and log in as admin with the one-time password printed in the container logs on first start, then change it immediately.
Note: mounting a persistent volume on
/var/lib/powerdns-uiis required — the generated admin password and JWT secret key are stored there.
For the full installation guide (PowerDNS API setup, MariaDB backend, reverse proxy) see Getting Started.
Full documentation — configuration reference, every feature explained, the REST API, and how to contribute — is published at cyr-ius.github.io/powerdns-ui.
| Looking for... | Go to |
|---|---|
| Every environment variable | Environment Variables |
| PowerDNS API setup & DNS Views/Networks | PowerDNS Configuration |
| OIDC SSO & e-mail alerting | OIDC & Mail Connectors |
| Rate limiting behind a reverse proxy | Rate Limiting & Reverse Proxy |
| MariaDB (gmysql) backend schema init | MariaDB Backend |
| Roles, permissions & user management | Administration |
| REST API endpoints | API Reference |
| Running the frontend/backend locally | Development |
MIT — see LICENSE for details.
Author: @cyr-ius — Sponsor: GitHub Sponsors