
This article demonstrates how to deploy Poweradmin to manage PowerDNS on Ubuntu VPS server.
What is Poweradmin?
Poweradmin is a free, open-source web-based control panel for managing DNS zones and records on a PowerDNS server.
Key attributes:
- Works with PowerDNSโs SQL-backed setup (zones stored in a database) rather than purely text-zone files.
- Licensed under the GNU General Public License version 3 (GPLv3).
- Written in PHP and designed for administrators who want a GUI for DNS management rather than editing zone files manually.
Core features
Here are the main capabilities of Poweradmin:
- Support for different zone types: master, native, and slave zones.
- IPv6 support (not just IPv4).
- Multi-language interface (translations available).
- Ability to handle reverse DNS records (PTR) and DNSSEC operations.
- LDAP authentication support (so you can integrate with directory services).
- CRUD (create, read, update, delete) operations for zones and records via web browser rather than command line or raw zoneโfile editing.
Typical use-cases
- A web hosting company or ISP using PowerDNS for authoritative DNS and wanting a simpler GUI for their staff or clients.
- An enterprise internal DNS setup where nonโDNS-expert staff need to add or update records without shell access.
- Environments where ease of administration and reducing errors (via a GUI) are more important than only command-line operation.
System requirements & architecture
Poweradmin requires:
- A PowerDNS server configured with a suitable backend (MySQL, PostgreSQL, etc.) since it interacts with DNS data stored in a database.
- A web server (Apache, Nginx) and PHP environment (for the PHP version).
- Database connection access to the PowerDNS backend (or appropriate API) so it can read/write zone/record data.
- Optionally, when used with the PowerDNS API (for advanced features like DNSSEC, etc) the API must be enabled on the PowerDNS side.
Limitations & things to check
- Since itโs a GUI, for very large / complex DNS infrastructures youโll want to verify scalability and performance (especially large numbers of zones & records).
- Because it integrates with the DNS backend via SQL or API, security is important: ensure the web interface is secured (HTTPS, strong passwords, proper access controls).
- The project has been around a while; check activity and compatibility with the version of PowerDNS and backend databases you are using.
- It is independent of the core PowerDNS project โ a disclaimer in the documentation says it โis not associated with PowerDNS.com โฆ or any other external parties.โ
Why use it
- Speeds up DNS administration tasks (adding zones/records) compared to editing zone files and re-loading the DNS server.
- Reduces risk of syntax errors that occur when manually editing zone files.
- Makes DNS management more accessible to non-DNS specialists via a friendly UI.
- Helps in environments with delegated administration: you can give certain users limited access to only certain zones.
๐งญ How to Deploy Poweradmin to Manage PowerDNS on Ubuntu VPS
This guide is tailored for Ubuntu 22.04 LTS (Jammy) on a VPS with root or sudo privileges.
It sets up PowerDNS (authoritative) with a MariaDB backend and Poweradmin web interface secured via HTTPS.
-
๐ง System Preparation
-
Update and install essentials
sudo apt update && sudo apt upgrade -y sudo apt install curl wget vim git unzip ufw -y
-
Enable firewall
Allow only SSH + HTTP/HTTPS for web access:
sudo ufw allow OpenSSH sudo ufw allow 80/tcp sudo ufw allow 443/tcp sudo ufw enable
-
-
๐๏ธ Install and Configure MariaDB
sudo apt install mariadb-server -y sudo systemctl enable --now mariadb sudo mysql_secure_installation
When prompted, set a strong root password and remove anonymous/test users.
-
Create PowerDNS database and user
sudo mysql -u root -p
Then run:
CREATE DATABASE powerdns; CREATE USER 'pdns'@'localhost' IDENTIFIED BY 'StrongPass123!'; GRANT ALL ON powerdns.* TO 'pdns'@'localhost'; FLUSH PRIVILEGES; EXIT;
-
-
๐ Install PowerDNS with MySQL Backend
sudo apt install pdns-server pdns-backend-mysql -y
-
Configure PowerDNS to use MariaDB backend
Create file:
sudo nano /etc/powerdns/pdns.d/pdns.local.gmysql.conf
Add:
launch+=gmysql gmysql-host=127.0.0.1 gmysql-dbname=powerdns gmysql-user=pdns gmysql-password=StrongPass123! gmysql-dnssec=yes
-
Import schema
sudo mysql -u root -p powerdns < /usr/share/pdns-backend-mysql/schema/schema.mysql.sql
Restart and enable PowerDNS:
sudo systemctl restart pdns sudo systemctl enable pdns sudo systemctl status pdns
-
-
๐งฉ Enable PowerDNS API (for PowerAdmin)
Edit main config:
sudo nano /etc/powerdns/pdns.conf
Add/ensure:
api=yes api-key=SuperSecretAPIKey! webserver=yes webserver-address=127.0.0.1 webserver-port=8081
Restart service:
sudo systemctl restart pdns
-
๐ Install Apache + PHP
Poweradmin is a PHP web app. Install:
sudo apt install apache2 libapache2-mod-php php php-mysql php-gd php-intl php-xml php-curl php-gettext -y sudo systemctl enable --now apache2
-
๐งฐ Install Poweradmin
-
Download and extract
cd /var/www/html sudo wget https://sourceforge.net/projects/poweradmin/files/poweradmin-2.1.9.tgz sudo tar xvf poweradmin-2.1.9.tgz sudo mv poweradmin-2.1.9 poweradmin sudo chown -R www-data:www-data /var/www/html/poweradmin
-
Visit installer
In your browser:
http://YOUR_SERVER_IP/poweradmin/install/
Fill the form:
- Database type: MySQL
- DB name:
powerdns - DB user:
pdns - Password:
StrongPass123! - Host:
localhost - PowerDNS host:
localhost - API key:
SuperSecretAPIKey!
Finish installation โ it will generate
/var/www/html/poweradmin/inc/config.inc.php.
-
-
๐ Secure Poweradmin
After installation:
sudo rm -rf /var/www/html/poweradmin/install
Then set permissions:
sudo chown -R www-data:www-data /var/www/html/poweradmin sudo chmod -R 755 /var/www/html/poweradmin
-
๐ Enable HTTPS with Letโs Encrypt
Install Certbot:
sudo apt install certbot python3-certbot-apache -y
Issue certificate:
sudo certbot --apache -d yourdomain.com -m you@example.com --agree-tos --redirect
Automatically renew:
sudo systemctl enable certbot.timer
-
๐งฑ Verify and Test
Check services:
sudo systemctl status pdns sudo systemctl status apache2 sudo ss -tulpn | grep ':53\|:80\|:443'
From your browser, go to:
https://yourdomain.com/poweradmin/
Log in โ Create your first DNS zone (e.g.,
example.com) โ Add A, MX, CNAME, TXT records.Verify via:
dig example.com @127.0.0.1
-
๐ก๏ธ Firewall & Security Hardening
sudo ufw allow 53/tcp sudo ufw allow 53/udp sudo ufw reload
Optional: restrict PowerDNS API port:
sudo ufw deny 8081 sudo ufw allow from 127.0.0.1 to any port 8081
๐งฉ Optional Enhancements
- Enable DNSSEC
In/etc/powerdns/pdns.d/pdns.local.gmysql.confensuregmysql-dnssec=yes.
Poweradmin supports enabling DNSSEC in zone settings. - Remote Poweradmin
If Poweradmin runs on a different VPS, adjust:gmysql-host=IP_OF_DB_SERVER webserver-address=0.0.0.0 webserver-allow-from=PowerAdmin_IP
Then allow port 8081 in firewall.
- Backups
mysqldump -u root -p powerdns > /root/pdns-backup.sql
โ Final Result
You now have:
- PowerDNS authoritative nameserver using MariaDB backend
- Poweradmin web UI over HTTPS for zone management
- Secure firewall and API configuration
You can now easily manage domains, add/edit DNS records, and enable DNSSECโall via browser.

Conclusion
You now know how to deploy Poweradmin to manage PowerDNS on Ubuntu VPS.








