A web interface for PowerDNS with advanced features.
- Forward and reverse zone management
- Zone templating
- User management with role-based access control
- Zone-specific access control
- Activity logging
- Authentication:
- Local users
- SAML
- LDAP (OpenLDAP / Active Directory)
- OAuth (Google / GitHub / Azure / OpenID)
- Two-factor authentication (TOTP)
- PDNS service configuration and statistics monitoring
- DynDNS 2 protocol support
- Easy IPv6 PTR record editing
- API for zone and record management
- Full IDN/Punycode support
PowerDNS-Admin is built and tested against the current stable release of
the PowerDNS Authoritative Server, plus recent prior minor releases.
Support for versions older than 5.0 has been dropped entirely, even where
PowerDNS itself continues to backport critical/security fixes to them.
See app-support.json
for the exact PowerDNS, Python, and browser versions supported by the
current release.
The quickest way to run PowerDNS-Admin is with Docker. For instructions on installing PowerDNS-Admin directly on your system, please refer to our installation documentation.
We offer two options for running PowerDNS-Admin with Docker.
This option is ideal for getting started quickly. To run the latest stable release from Docker Hub, execute the following command:
$ docker run -d \
-e SECRET_KEY='a-very-secret-key' \
-v pda-data:/data \
-p 9191:80 \
powerdnsadmin/pda-legacy:latest
This command creates a volume named pda-data to persist the application's SQLite database.
Note on image name: While the image is named pda-legacy, it is the current and actively maintained version. The name is a historical artifact.
This option is recommended if you need to customize the configuration.
-
Update the configuration
The included Compose configuration starts MySQL and connects PowerDNS-Admin to it automatically. Before deploying, replace the example database passwords in
docker/docker-compose.yml. You can find a list of other environment variables in theAppSettings.defaultsfile.To use Docker-style secrets, you can append
_FILEto an environment variable with a path to a file containing the secret (e.g.,SQLALCHEMY_DATABASE_URI_FILE=/run/secrets/db_uri).Ensure you set the
SECRET_KEYenvironment variable to a long, random string. For more information, please see the Flask configuration documentation. -
Start the container
# From the root of the project $ docker compose -f docker/docker-compose.yml up --build
You can now access PowerDNS-Admin in your browser at http://localhost:9191.
For assistance, please see our Support Guide or join our Discord Server.
Please refer to our Security Policy for information on reporting security vulnerabilities.
We welcome contributions to PowerDNS-Admin. Please see our Contribution Guide for more information.
We are committed to providing a welcoming and inclusive environment for everyone. Please review our Code of Conduct for our community standards.
PowerDNS-Admin is released under the MIT License. For more information, please see the full license.
