A web-based control panel for PowerDNS http://www.poweradmin.org
Find a file
2025-12-24 08:15:17 +02:00
.devcontainer chore(devcontainer): disable xdebug extension 2025-11-05 11:59:39 +02:00
.github chore(deps): update actions/checkout action to v6 (#934) 2025-12-24 07:44:21 +02:00
.phan refactor: improve type safety with null checks and proper type narrowing 2025-10-11 18:47:19 +03:00
addons tests: add dynamic DNS API test suite 2025-06-30 21:58:01 +03:00
assets feat(dns-wizards): improve form validation and UX 2025-10-25 19:13:53 +03:00
config docs(config): improve title setting description, closes #900 2025-12-20 06:52:23 +02:00
data test: fix integration test failures for WHOIS and routing 2025-08-25 21:19:07 +03:00
install fix(sql): add primary key to records_zone_templ table, closes #906 2025-12-21 13:14:20 +02:00
lib fix: prevent undefined array key errors in DnssecDataTransformer 2025-12-23 09:40:15 +02:00
locale chore(i18n): add missing translations 2025-09-12 08:01:45 +03:00
playwright test: expand test coverage for search, validation, and zone management 2025-11-06 17:34:01 +02:00
sql fix(sql): add primary key to records_zone_templ table, closes #906 2025-12-21 13:14:20 +02:00
templates fix(ui): use double quotes for class attributes in templates 2025-12-24 08:15:17 +02:00
tests fix: prevent undefined array key errors in DnssecDataTransformer 2025-12-23 09:40:15 +02:00
vendor chore(deps): update dependency twig/twig to v3.22.2 (master) (#909) 2025-12-15 21:35:17 +02:00
.dockerignore ci: add git-cliff based release PR workflow with scope grouping 2025-12-23 10:09:44 +02:00
.gitattributes ci: add git-cliff based release PR workflow with scope grouping 2025-12-23 10:09:44 +02:00
.gitignore test: migrate E2E tests from Cypress to Playwright 2025-11-05 22:00:08 +02: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
.release-please-manifest.json ci: add Release Please for automated releases 2025-12-07 22:28:24 +02: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 fix(ci): hide dev/CI scopes from release notes 2025-12-23 21:34:41 +02:00
composer.json chore(composer): add PHP 8.5 compat script 2025-12-20 14:12:49 +02:00
composer.lock chore(deps): update dependency twig/twig to v3.22.2 (master) (#909) 2025-12-15 21:35:17 +02:00
CONTRIBUTING.md docs: move contributing guidelines to separate file 2025-10-28 15:17:08 +02:00
docker-entrypoint.sh feat(docker): add Generic OIDC provider support for Authentik/Keycloak/Okta, closes #918 2025-12-21 08:48:45 +02:00
DOCKER-SECRETS.md refactor: Docker build (#740) 2025-07-22 07:13:31 +03:00
DOCKER.md feat(docker): add Generic OIDC provider support for Authentik/Keycloak/Okta, closes #918 2025-12-21 08:48:45 +02:00
Dockerfile chore(docker): update FrankenPHP base image and deps 2025-12-20 13:21:11 +02:00
dynamic_update.php refactor: complete cross-database compatibility implementation 2025-07-02 08:41:56 +03:00
favicon.ico TTN #367 - Add favicon 2010-05-17 01:32:05 +00:00
index.php feat(auth): add SAML authentication support with user provisioning, closes #789 2025-09-28 19:52:49 +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 test: migrate E2E tests from Cypress to Playwright 2025-11-05 22:00:08 +02:00
phpcs.xml chore: add php compatibility checks and update development tooling 2025-10-02 20:26:59 +03:00
phpdoc.dist.xml refactor: deprecate legacy config system in favor of ConfigurationManager 2025-04-08 21:10:56 +03:00
phpmd.xml fix(branding): normalize Poweradmin naming across codebase 2025-05-17 15:29:32 +03:00
phpstan.neon fix(ci): resolve static analyzer configuration issues 2025-10-10 21:48:01 +03:00
phpunit.xml.dist test: add functional test suite and enhance testing structure 2025-08-13 14:50:09 +03:00
playwright.config.js test: migrate E2E tests from Cypress to Playwright 2025-11-05 22:00:08 +02:00
psalm-baseline.xml chore(psalm): update baseline after type safety fixes 2025-10-10 21:55:35 +03:00
psalm.xml refactor: remove legacy pdnsutil provider for DNSSEC operations 2025-08-18 08:25:13 +03:00
README.md docs: update PowerDNS version support and tested environment, closes #808 2025-12-20 08:07:40 +02:00
release-please-config.json ci: disable changelog generation in Release Please 2025-12-08 09:37:46 +02:00
renovate.json ci: rename branch references from release/4.0.x to release/4.x 2025-12-09 23:14:02 +02: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 is a hybrid solution that uses SQL for most operations and has PowerDNS API support for DNSSEC operations.

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
  • IPv6 support
  • Multi-language support (15+ 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 and MFA support

Dashboard

Dashboard with quick actions and navigation

Zone Management

Zone list with sorting and filtering

Zone Editor

Zone editor with inline record management

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 and may be unstable. For production use, stick with the stable release/4.x branch 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.1 or higher (including 8.2, 8.3, 8.4, 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 (development): PHP 8.2.29, PowerDNS 4.9.5, MariaDB 10.11.15, PostgreSQL 16.3, SQLite 3.51.1
  • release/4.x (stable): PHP 8.1.31, PowerDNS 4.7.4, MariaDB 10.11.10, MySQL 9.1.0, PostgreSQL 16.3, SQLite 3.45.3
  • release/3.x (LTS): PHP 8.1.31, PowerDNS 4.7.4, MariaDB 10.11.10, MySQL 9.1.0, PostgreSQL 16.3, SQLite 3.45.3

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: Poweradmin operates primarily at the database level with PowerDNS, using the PowerDNS API only for DNSSEC operations. This design provides broad compatibility across PowerDNS versions, as the database schema remains relatively stable between releases.

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

  • HLkomm Telekommunikations GmbH
  • IRAM (Institut de Radioastronomie Millimétrique)

Individual Donors

  • Stefano Rizzetto
  • Asher Manangan
  • Michiel Visser
  • Gino Cremer
  • Arthur Mayer
  • Dylan Blanqué
  • trendymail

For feature sponsorship, to speed up development of specific features, or to discuss ideas and issues, please contact me.

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.