pdns-webui

command module
v0.3.1 Latest Latest
Warning

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

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

README

image

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

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

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