
Below is a complete, production-ready, step-by-step guide for how to deploy Poweradmin on AlmaLinux VPS.
What is Poweradmin?
Poweradmin (PowerAdmin) is an open-source, web-based DNS management interface for PowerDNS.
What it does
PowerAdmin provides a graphical UI that allows administrators and users to manage DNS zones and records stored in a PowerDNS backend (typically MySQL or PostgreSQL) without using the command line.
Core features
- Create, edit, and delete DNS zones
- Manage DNS records (A, AAAA, MX, CNAME, TXT, SRV, NS, etc.)
- User and permission management (admin vs regular users)
- Zone templates for fast provisioning
- Supports PowerDNS Authoritative Server
- Works with MySQL or PostgreSQL backends
- Lightweight PHP application (no daemon)
What it is not
- β Not a DNS server itself
- β Not a registrar or domain reseller
- β Not a full hosting control panel
PowerAdmin only manages DNS data that PowerDNS serves.
Typical use cases
- Managing authoritative DNS for VPS and dedicated servers
- Replacing manual BIND zone editing
- Internal DNS management for infrastructure
- Hosting providers (including multi-tenant DNS environments)
- PowerDNS deployments behind an API or reverse proxy
Architecture overview
Browser
β
PowerAdmin (PHP)
β
MySQL / PostgreSQL (DNS records)
β
PowerDNS Authoritative Server
Why people use PowerAdmin
- Simple and fast compared to full control panels
- Open-source and self-hosted
- Direct database control over PowerDNS zones
- Ideal companion to PowerDNS API setups
How to Deploy Poweradmin on AlmaLinux VPS
This guide covers:
- Installing PowerDNS (Authoritative)
- Configuring MariaDB backend
- Setting up Poweradmin (web interface)
- Securing with firewall + SELinux considerations
- Optional: API, zone templates, DNSSEC, performance tuning
Works on AlmaLinux 8 & AlmaLinux 9.
-
π§© System Preparation
sudo dnf update -y sudo dnf install epel-release -y sudo dnf install wget curl unzip -y
-
π Install and Configure MariaDB
Poweradmin requires a SQL backend.
-
Install MariaDB server
sudo dnf install mariadb-server mariadb -y sudo systemctl enable --now mariadb
-
Secure MariaDB
sudo mysql_secure_installation
Choose:
- Remove anonymous users: Y
- Disallow remote root login: Y
- Remove test DB: Y
- Reload privileges: Y
-
Create PowerDNS database + user
mysql -u root -p <<EOF CREATE DATABASE powerdns; CREATE USER 'pdns'@'localhost' IDENTIFIED BY 'STRONGPASSWORD'; GRANT ALL PRIVILEGES ON powerdns.* TO 'pdns'@'localhost'; FLUSH PRIVILEGES; EOF
-
-
πΏ Install PowerDNS Authoritative Server
-
Enable PowerDNS official repo
sudo curl -o /etc/yum.repos.d/powerdns-auth-50.repo https://repo.powerdns.com/repo-files/el-auth-50.repo
For AlmaLinux, CentOS repo works.
-
Install the server + MySQL backend
sudo dnf install pdns pdns-backend-mysql -y
-
-
π Configure PowerDNS to Use MariaDB Backend
Edit the configuration file:
sudo nano /etc/pdns/pdns.conf
Add the following:
launch=gmysql gmysql-host=127.0.0.1 gmysql-dbname=powerdns gmysql-user=pdns gmysql-password=STRONGPASSWORD api=yes api-key=YOURSUPERSECRETAPIKEY webserver=yes webserver-address=0.0.0.0 webserver-port=8081
Save and exit.
-
π Import PowerDNS Database Schema
mysql -u root -p powerdns < /usr/share/pdns-backend-mysql/schema/schema.mysql.sql
-
π Start and Enable PowerDNS
sudo systemctl enable --now pdns sudo systemctl status pdns
-
π Install Web Server + PHP for Poweradmin
Poweradmin requires Apache + PHP.
dnf module reset php dnf module -y enable php:8.1 sudo dnf install httpd php php-mysqlnd php-gd php-xml php-mbstring php-json -y sudo systemctl enable --now httpd
-
π¦ Download & Deploy Poweradmin
cd /var/www/html sudo wget https://github.com/poweradmin/poweradmin/archive/refs/heads/master.zip sudo unzip master.zip sudo mv poweradmin-master poweradmin sudo rm -f master.zip
Fix permissions:
sudo chown -R apache:apache /var/www/html/poweradmin sudo chmod -R 755 /var/www/html/poweradmin
-
βοΈ Configure Poweradmin Installer
Create config directory:
sudo mkdir /var/www/html/poweradmin/inc sudo chmod 777 /var/www/html/poweradmin/inc
(This will be secured after installation.)
-
π Run Poweradmin Installer
Visit:
http://YOUR-SERVER-IP/poweradmin/install/
Poweradmin browser installation step 1 Provide:
-
Database Settings
- Host:
localhost - DB name:
powerdns - User:
pdns - Password:
STRONGPASSWORD
- Host:
-
PowerDNS Settings
- Hostmaster: your email
- Primary nameserver:
ns1.yourdomain.com - Secondary nameserver(s)
- Add default zone templates: Yes
-
Admin Login Creation
Choose username/password.
After installation, Poweradmin creates:
/var/www/html/poweradmin/inc/config.inc.php
-
-
π Secure Poweradmin Paths
Remove installer:
sudo rm -rf /var/www/html/poweradmin/install
Restrict permissions:
sudo chmod 755 /var/www/html/poweradmin/inc sudo chmod 640 /var/www/html/poweradmin/inc/config.inc.php sudo chown apache:apache /var/www/html/poweradmin/inc/config.inc.php
-
π₯ Firewall Configuration
Allow DNS + HTTP traffic:
sudo firewall-cmd --add-service=dns --permanent sudo firewall-cmd --add-service=http --permanent sudo firewall-cmd --reload
If API port needed:
sudo firewall-cmd --add-port=8081/tcp --permanent sudo firewall-cmd --reload
-
π‘ SELinux Adjustments (If Enforcing)
sudo setsebool -P httpd_can_network_connect 1 sudo chcon -t httpd_sys_rw_content_t /var/www/html/poweradmin/inc/ -R
-
π§ͺ Test PowerDNS Correct Operation
-
Check service:
systemctl status pdns
-
Query locally:
dig @127.0.0.1 yourdomain.com
-
-
βοΈ Optional: Enable DNSSEC
In
pdns.conf:gmysql-dnssec=yes
Initialize:
pdnsutil create-zone yourdomain.com pdnsutil secure-zone yourdomain.com pdnsutil show-zone yourdomain.com
-
π¦ Optional: Enable Zone Templates in Poweradmin
Inside Poweradmin interface:
Admin β Zone Templates β Add
Templates help automate:
- A, AAAA, CNAME records
- NS/SOA structure
- Default TTLs
-
β‘ Optional: Performance Tuning for PowerDNS
-
Increase cache size
cache-ttl=20 negquery-cache-ttl=60 max-cache-entries=2000000
-
Enable packet caching
packetcache=yes packetcache-ttl=3600
Restart:
sudo systemctl restart pdns
-
π Deployment Complete
You can now access the PowerDNS Administration Panel:
http://YOUR-SERVER-IP/poweradmin/
Conclusion
You now know how to deploy Poweradmin on AlmaLinux VPS.










