A web-based control panel for PowerDNS http://www.poweradmin.org
  • PHP 64.8%
  • HTML 16.7%
  • JavaScript 11.5%
  • Shell 3%
  • CSS 2.9%
  • Other 1%
Find a file
2026-08-10 09:03:08 +03:00
.devcontainer chore(deps): pin dependencies (#1396) 2026-07-27 14:56:40 +03:00
.github ci: report cognitive complexity for develop once a week 2026-08-03 08:41:53 +03:00
.phan fix(config): exclude local settings.php from phpcs and Phan checks 2026-03-13 10:27:26 +02:00
addons tests: add dynamic DNS API test suite 2025-06-30 21:58:01 +03:00
assets fix(users): submit group member selection as single field to avoid max_input_vars limit 2026-07-23 13:18:19 +03:00
config fix(mail): use sendmail -t -i so piped messages are actually delivered 2026-08-01 11:56:55 +03:00
data chore(data): update TLD list from IANA 2026-07-22 16:38:37 +03:00
install fix(templates): pin the footer to the viewport bottom in the modern theme and installer 2026-08-09 10:46:36 +03:00
lib fix(auth): treat unset and short session keys as weak 2026-08-10 09:03:08 +03:00
locale fix(locale): add missing translations for recent UI strings 2026-07-23 13:41:21 +03:00
playwright test(e2e): align zone-log access and IPv6 matching-only specs with shipped behavior 2026-07-22 16:20:13 +03:00
sql fix(auth): match OIDC and SAML subject identifiers byte-for-byte 2026-07-14 22:24:00 +03:00
templates fix(templates): pin the footer to the viewport bottom in the modern theme and installer 2026-08-09 10:46:36 +03:00
tests fix(records): restrict LUA records to editors above client level 2026-08-04 15:56:55 +03:00
vendor chore(deps): sync installed.json with guzzle 7.15.2 2026-08-04 23:17:49 +03:00
.dockerignore chore(ci): replace the psalm gate with a scheduled taint-analysis workflow 2026-08-01 16:31:13 +03:00
.gitattributes chore(ci): replace the psalm gate with a scheduled taint-analysis workflow 2026-08-01 16:31:13 +03:00
.gitignore chore: remove translation working files and gitignore them 2026-03-31 17:43:56 +03:00
.hadolint.yaml ci: improve Dockerfile linting compliance and build optimization 2025-07-22 08:27:31 +03:00
.htaccess feat: implement subfolder deployment with base_url_prefix support, related to #84 2025-10-03 08:10:36 +03:00
.php-cs-fixer.php chore(deps): Add PHP static analysis and formatting tools 2025-01-09 08:19:14 +02:00
.semgrepignore ci(security): silence noisy Semgrep HTML-template rules unfit for Twig 2026-04-21 21:34:14 +03:00
caddy.conf.example feat: implement subfolder deployment with base_url_prefix support, related to #84 2025-10-03 08:10:36 +03:00
cliff.toml chore(ci): normalize emails and DNS scopes in git-cliff config 2026-02-18 08:34:07 +02:00
composer.json chore(ci): replace the psalm gate with a scheduled taint-analysis workflow 2026-08-01 16:31:13 +03:00
composer.lock chore(deps): update php_codesniffer to 4.0.4 2026-08-09 08:41:28 +03:00
CONTRIBUTING.md chore(deps): bump minimum PHP version to 8.2 and add 8.5 compatibility 2026-02-11 08:12:26 +02:00
docker-entrypoint.sh fix(mail): use sendmail -t -i so piped messages are actually delivered 2026-08-01 11:56:55 +03:00
DOCKER-SECRETS.md refactor: Docker build (#740) 2025-07-22 07:13:31 +03:00
DOCKER.md fix(mail): use sendmail -t -i so piped messages are actually delivered 2026-08-01 11:56:55 +03:00
Dockerfile chore(docker): add OCI image labels and install su-exec in the main package layer (refs #1318) 2026-08-01 10:55:31 +03:00
dynamic_update.php refactor: centralize timezone initialization in bootstrap helpers 2026-04-04 09:08:21 +03:00
favicon.ico TTN #367 - Add favicon 2010-05-17 01:32:05 +00:00
index.php refactor: centralize timezone initialization in bootstrap helpers 2026-04-04 09:08:21 +03:00
LICENSE localisation templates were moved to locale directory, license to the root 2012-03-23 13:03:02 +02:00
nginx.conf.example feat: implement subfolder deployment with base_url_prefix support, related to #84 2025-10-03 08:10:36 +03:00
package.json chore(deps): update @playwright/test from 1.58.2 to 1.59.1 2026-04-05 07:48:25 +03:00
phpcs.xml fix(config): exclude local settings.php from phpcs and Phan checks 2026-03-13 10:27:26 +02:00
phpdoc.dist.xml refactor: deprecate legacy config system in favor of ConfigurationManager 2025-04-08 21:10:56 +03:00
phpstan.neon fix(zones): add group ownership check in DbZoneRepository and zone name fallback in DbZoneGroupRepository 2026-03-18 16:27:20 +02:00
phpunit.xml.dist chore(deps): upgrade PHPUnit to 11.5 and Psalm to 6.15 2026-02-12 15:20:07 +02:00
playwright.config.js chore: sync tests, CI workflows, and devcontainer config from master 2026-02-10 06:55:09 +02:00
psalm.xml chore(ci): replace the psalm gate with a scheduled taint-analysis workflow 2026-08-01 16:31:13 +03:00
README.md docs: add poweradmin-cli to community projects in README 2026-07-31 09:44:12 +03:00
renovate.json chore(deps): enable renovate pinDigests 2026-07-27 14:26:23 +03:00
robots.txt Initial import 2007-04-10 22:38:28 +00:00
transifex.yml refactor: standardize localization file names and remove unused templates 2023-12-04 19:51:56 +02:00

Poweradmin

release validations license php version docker pulls docker image size

Poweradmin is a friendly web-based DNS administration tool for PowerDNS server. The interface supports most of the features of PowerDNS. It can work directly against the PowerDNS database (with API-assisted DNSSEC) or run entirely through the PowerDNS API in API backend mode.

Features

  • Supports all zone types (master, native, and slave)
  • Supermasters for automatic provisioning of slave zones
  • Zone templates for quick zone creation
  • Bulk operations for records and reverse DNS
  • Zone metadata editor for PowerDNS domainmetadata, including multi-value metadata kinds
  • Native PowerDNS API backend mode - manage zones without direct access to the PowerDNS database
  • Version-aware interface that adapts record types, metadata kinds, and terminology to the connected PowerDNS version
  • IPv6 support
  • Multi-language support (28 languages)
  • DNSSEC operations via PowerDNS API
  • Light and dark themes
  • Search functionality across zones and records
  • User and permission management with role-based access
  • Ability to add reverse records
  • Authentication options:
    • Local database authentication
    • LDAP authentication with custom filter
    • SAML and OIDC authentication
    • Multi-factor authentication (MFA/2FA) with TOTP
  • RESTful API with OpenAPI documentation (used by Terraform/OpenTofu provider)
  • Docker deployment with FrankenPHP

Screenshots

Login Screen

Login interface with multi-language support

Dashboard

Dashboard with quick actions and navigation

Zone Management

Zone list with sorting and filtering

Zone Editor

Zone editor with inline record management

Zone Metadata Editor

Poweradmin includes a zone metadata editor for PowerDNS domainmetadata. The editor supports:

  • selecting known metadata kinds with inline guidance
  • entering custom metadata kinds when needed
  • multi-value metadata such as ALLOW-AXFR-FROM using one row per value

Installation

For detailed installation instructions, please visit the official documentation.

Traditional Installation

  • Recommended method - via releases:
    • Get the latest stable release from releases
  • For specific needs - via Git:
    • Warning: The master branch is used for development of the next major release and may be unstable. For production use, stick with the release/4.3.x branch or a specific version tag (e.g. v4.3.4), or use the stable Docker tag.

Docker Deployment

Quick Start with Docker:

docker run -d \
  --name poweradmin \
  -p 8080:80 \
  -e DB_TYPE=sqlite \
  -e PA_CREATE_ADMIN=1 \
  poweradmin/poweradmin:latest

Important:

  • DB_TYPE environment variable is required (sqlite, mysql, pgsql)
  • No admin user is created by default for security reasons. Use -e PA_CREATE_ADMIN=1 to create an admin user (a secure password will be auto-generated and shown in logs)
  • Docker Hub: poweradmin/poweradmin
  • GitHub Container Registry: ghcr.io/poweradmin/poweradmin
  • Full documentation: DOCKER.md
  • Security with Docker Secrets: DOCKER-SECRETS.md

Features: Multi-database support (SQLite, MySQL, PostgreSQL), Docker secrets integration, FrankenPHP for enhanced performance.

Requirements

  • PHP 8.2 or higher (including 8.3, 8.4, 8.5, etc.)
  • PHP extensions: intl, gettext, openssl, filter, tokenizer, pdo, xml, pdo-mysql/pdo-pgsql/pdo-sqlite, ldap (optional)
  • MySQL 5.7.x/8.x, MariaDB, PostgreSQL or SQLite database
  • PowerDNS authoritative server 4.0.0+ (including 4.x and 5.x series)

Tested on

Officially tested versions:

  • master (4.4.x): PHP 8.2, PowerDNS 4.9.12, MariaDB 10.11, PostgreSQL 16.11
  • release/4.3.x (stable): PHP 8.2, PowerDNS 4.9.12, MariaDB 10.11, PostgreSQL 16.11
  • release/4.2.x (maintenance): PHP 8.2, PowerDNS 4.9.12, MariaDB 10.11, PostgreSQL 16.11
  • release/3.x (LTS): PHP 8.1, PowerDNS 4.7.4, MariaDB 10.11, MySQL 9.1, PostgreSQL 16.3, SQLite 3.45

User-reported compatibility:

  • PowerDNS 4.8.x, 4.9.x, and 5.0.x series have been reported to work correctly by community users

Compatibility note: In the default SQL backend, Poweradmin operates primarily at the database level with PowerDNS, using the PowerDNS API for DNSSEC operations - the database schema stays relatively stable between PowerDNS releases, so compatibility is broad. In API backend mode, all operations go through the PowerDNS HTTP API instead. Since 4.4.0, the interface also detects the connected PowerDNS version and adjusts the available features accordingly.

Version Support

Poweradmin maintains multiple release branches:

Branch Status Support
develop Experimental 4.5.x experimental features, may be unstable
master Current release 4.4.x releases - newest line, still hardening
release/4.3.x Stable Current stable line (recommended), patch releases and security updates
release/4.2.x Maintenance Security updates only, winding down
release/4.1.x End of support No further updates - upgrade to 4.3.x
release/4.0.x End of support No further updates - upgrade to 4.3.x
release/3.x LTS Bug fixes and security updates until December 2027

PHP Version Support

Important: Starting with version 4.2.x, the minimum required PHP version is 8.2. PHP 8.1 is no longer supported.

Long-Term Support (LTS)

The 3.9.x branch is designated as Long-Term Support (LTS), starting with version 3.9.8. This branch will receive bug fixes and security updates for at least two years, providing a stable option for organizations that prefer stability over immediate upgrades.

For more details, see the Poweradmin in 2025: Year in Review blog post.

Contributing

We welcome contributions to Poweradmin! As the sole maintainer of this non-profit project, I work alongside our amazing contributors. See CONTRIBUTING.md for guidelines.

Support the Project

Poweradmin is independently developed and maintained. Your support helps keep the project alive and growing.

JetBrains logo.

JetBrains provides IDE licenses used for development of this project.

Organizations Supporting Development

PYUR
HLkomm Telekommunikations GmbH
IRAM
IRAM
stepping stone AG
stepping stone AG
VISTEC Internet Service GmbH
VISTEC Internet Service GmbH

Individual Donors

  • Stefano Rizzetto
  • Asher Manangan
  • Michiel Visser
  • Gino Cremer
  • Arthur Mayer
  • Dylan Blanqué
  • Tony Johnson
  • Deeefje
  • yBaca s.r.o.

For feature sponsorship, to speed up development of specific features, or to discuss ideas and issues, please contact me. Donations via invoice are also possible for organizations within the EU.

Community Projects

  • poweradmin-cli - Command-line interface for managing zones, records, users and groups through the Poweradmin REST API
  • poweradmin-go - Go SDK for the Poweradmin REST API
  • poweradmin-operator - Kubernetes operator for managing DNS zones and records via the Poweradmin API

Note

Poweradmin is an independent community project, not affiliated with PowerDNS.com or Open-Xchange.

License

This project is licensed under the GNU General Public License v3.0. See the LICENSE file for more details.