pdns-webui

command module
v0.3.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 28, 2026 License: Apache-2.0 Imports: 19 Imported by: 0

README

image

GitHub release GitHub stars GitHub issues Last commit Go version Docker License Docs

PowerDNS Web UI

A lightweight web interface for managing PowerDNS Authoritative Server 4. via its built-in HTTP API.

Security Warning

[!WARNING] This web UI provides no built-in authentication or authorization. Access restriction is entirely the user/operator's responsibility (for example: firewall rules, private network/VPN, reverse proxy auth).

Features

  • Zone management – list, create, edit, delete authoritative zones (Native / Master / Slave)
  • Record management – full CRUD for DNS records (A, AAAA, ALIAS, CNAME, MX, NS, TXT, SOA, SRV, PTR, CAA)
  • Multi-value records – multiple A/AAAA/NS/… records for the same name/type
  • Notify slaves – send NOTIFY to all slave servers with one click
  • Zone export – view and copy the raw zone file
  • Connection status – real-time check from the Settings page

Prerequisites

PowerDNS must have the HTTP API enabled. Add to pdns.conf:

webserver=yes
webserver-port=8081
webserver-allow-from=127.0.0.1,::1   # adjust as needed
api=yes
api-key=yoursecretkey

Quick Start

Go (development)
cp .env.example .env
# edit .env – set PDNS_API_URL and PDNS_API_KEY
go run .
# or override listen address via CLI flags:
go run . -host 127.0.0.1 -port 8080

Open http://localhost:8080

Docker Compose
cp .env.example .env
# edit .env
docker compose up -d

Configuration

Variable Default Description
PDNS_API_URL http://localhost:8081 PowerDNS API base URL
PDNS_API_KEY changeme Must match api-key in pdns.conf
PDNS_SERVER_ID localhost PowerDNS server ID (almost always default)
HOST 0.0.0.0 Host/interface the UI listens on
PORT 8080 Port the UI listens on
ALIAS records

PowerDNS Authoritative serves ALIAS records only when alias expansion is configured. For PowerDNS 5.1, set a resolver that does not point back to the authoritative server itself and enable expansion in pdns.conf:

resolver=[::1]:5300
expand-alias=yes

ALIAS is intended for the zone apex (@) and uses one target name per RRset.

CLI flags
  • -host — host/interface to listen on (default from HOST env var)
  • -port — port to listen on (default from PORT env var)
  • -h — show help

Architecture

browser  ──fetch──►  Go HTTP server (main.go)  ──net/http──►  PowerDNS API (:8081)
                     serves static SPA                         /api/v1/servers/…

The Go backend acts as an authenticated proxy so the PowerDNS API key is never exposed to the browser.

Documentation

Full documentation is available at 📖 pdns-webui docs — covers deployment, configuration, zone and record management, and troubleshooting.

The documentation source lives in docs/ and is built with Mintlify.

Documentation

The Go Gopher

There is no documentation for this package.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL