Skip to content

Repository files navigation

🌐 PowerDNS UI

License Python Angular ci::status docker::pulls documentation::badge

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.

PowerDNS UI zone view

Features

  • 🗂️ 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.


Quick Start

# 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 -d

Open 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-ui is 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.


Documentation

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

License

MIT — see LICENSE for details.

About

Author: @cyr-ius — Sponsor: GitHub Sponsors

About

Web management interface for PowerDNS Authoritative Server

Topics

Resources

Security policy

Stars

2 stars

Watchers

0 watching

Forks

Releases

Sponsor this project

Packages

Used by

Contributors

Languages