
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.conf
ensuregmysql-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.