bolt Valebyte VPS from $4/mo — NVMe, 60s deploy.

Get a VPS arrow_forward
eco Beginner Tutorial/How-to

Setting Up PowerDNS with Power

calendar_month Aug 23, 2026 schedule 18 min read visibility 17 views
Настройка PowerDNS с Poweradmin на VPS: создание собственного авторитативного DNS-сервера
info

Need a server for this guide? We offer dedicated servers and VPS in 50+ countries with instant setup.

Need a server for this guide?

Deploy a VPS or dedicated server in minutes.

Setting up PowerDNS with Poweradmin on a VPS: creating your own authoritative DNS server

TL;DR

In this detailed guide, we will step-by-step set up our own authoritative DNS server using PowerDNS Authoritative Server and the Poweradmin web interface, based on the Ubuntu Server 24.04 LTS operating system. You will learn how to prepare a VPS, install and configure all necessary components, including the MariaDB database, Nginx web server, and PHP-FPM, as well as ensure the security and fault tolerance of your DNS infrastructure.

  • Installation and configuration of PowerDNS Authoritative Server for managing domain zones.
  • Deployment of Poweradmin – a convenient web interface for managing DNS records.
  • Using MariaDB as a backend for storing DNS data.
  • Server protection using UFW firewall, Fail2ban, and Let's Encrypt TLS certificates.
  • Recommendations for choosing the optimal VPS configuration, backups, and troubleshooting.

What we are setting up and why

Diagram: What we are setting up and why
Diagram: What we are setting up and why

Today we will focus on deploying our own authoritative DNS server. An authoritative DNS server is a server that stores the official records for one or more domain names (e.g., example.com) and responds to queries about them. Unlike recursive DNS servers (which simply forward queries and cache responses), an authoritative server is the "source of truth" for your domains.

As a foundation, we will use PowerDNS Authoritative Server – a high-performance and flexible DNS server that supports various backends for data storage, including databases. For convenient management of domain zones and records, we will install Poweradmin – a web interface that significantly simplifies working with PowerDNS through a browser, eliminating the need for manual editing of zone files.

Ultimately, you will get a fully functional, fault-tolerant, and easily manageable DNS server where you can host domain zones for your websites, services, or projects. This allows you to fully control your DNS records, quickly make changes, integrate DNS with other systems, and not depend on third-party DNS providers, which is critically important for many developers, startups, and enthusiasts.

There are alternatives, such as cloud DNS services (Cloudflare DNS, AWS Route 53, Google Cloud DNS) or DNS servers built into hosting control panels. Cloud services offer high availability and performance, but often have customization limitations and can be expensive for a large number of zones or specific requests. Self-hosting DNS on a VPS provides full control over configuration, data, and security, and can also be more economical in the long run for projects with specific privacy or integration requirements. By choosing a self-hosted solution, you gain flexibility and sovereignty over your DNS infrastructure.

What VPS configuration is needed for this task

Diagram: What VPS configuration is needed for this task
Diagram: What VPS configuration is needed for this task

For an authoritative DNS server, especially if it serves a not very large number of zones (up to several hundred) and is not subjected to DDoS attacks, the resource requirements are quite modest. PowerDNS is very efficient.

Minimum requirements:

  • CPU: 1 core (x64 architecture). Modern processors with a clock speed of 2 GHz or more are more than sufficient.
  • RAM: 1 GB. This will be enough for the operating system, PowerDNS, MariaDB, Nginx, and PHP-FPM. If a very large number of zones (thousands) or high load is planned, 2 GB can be considered.
  • Disk: 20-30 GB SSD. PowerDNS and the database take up little space. The main volume is needed for the operating system, logs, and backups. SSD is critical for fast database operation.
  • Network: 100 Mbps or 1 Gbps. For DNS queries, bandwidth is not a bottleneck, as queries are very light. The main thing is connection stability and low latency.

Specific VPS plan for the task:

For most scenarios, including developers, solo founders, and small teams, a VPS with the following characteristics will be optimal:

  • 2 vCPU
  • 2 GB RAM
  • 50 GB SSD
  • 1 Gbps network interface
  • Dedicated IPv4 address (minimum 2 if you want to run two NS servers on different IPs)

Such a configuration will ensure comfortable operation, sufficient performance headroom, and room for growth. You can consider a VPS with the specified characteristics from a reliable provider.

When a dedicated server is needed, not a VPS:

  • Very high load: If you plan to serve hundreds of thousands or millions of DNS queries per second, or manage tens of thousands of domain zones.
  • Critical applications: For infrastructures where any delay or potential issue with "neighbors" on a VPS is unacceptable.
  • Security and isolation requirements: Complete physical isolation from other clients.
  • Specific hardware requirements: For example, for using hardware security modules (HSM) or a very large amount of RAM/fast NVMe drives.

For most authoritative DNS server tasks, especially at the initial stage, a VPS is more than sufficient and an economically viable solution.

Location: what it affects

Choosing the VPS location for a DNS server is important for two reasons:

  1. Latency: The closer your DNS server is physically to the main audience of your domains, the lower the latency will be when resolving domain names. This affects website loading speed and service responsiveness.
  2. Jurisdiction: In some cases, the server's location may be important from the perspective of legislation and legal aspects of data storage.

Ideally, have at least two authoritative DNS servers (one primary, one secondary) in different geographical locations and with different providers for maximum fault tolerance.

Server preparation

Diagram: Server preparation
Diagram: Server preparation

Before proceeding with PowerDNS installation, basic server preparation is required. We will use Ubuntu Server 24.04 LTS, as it is a current and stable version for 2026.

1. SSH Connection

Connect to your new VPS as the root user or the user provided by your provider:


ssh root@YOUR_VPS_IP_ADDRESS

2. System Update

Always start by updating the package manager and installed packages to the latest versions:


sudo apt update && sudo apt upgrade -y

Updates the package list and installs all available updates.

3. Creating a new user with sudo privileges

Working as root is insecure. Let's create a new user and grant them sudo privileges:


sudo adduser username # Replace 'username' with your desired username

Adds a new user to the system. Follow the instructions to create a password and user information.


sudo usermod -aG sudo username

Adds the new user to the sudo group, granting them administrator privileges.


su - username

Switches to the new user. Now all commands will be executed on their behalf.

4. Configuring SSH keys (recommended)

To enhance security, it is recommended to use SSH keys instead of passwords. Generate keys on your local machine (if you haven't already):


ssh-keygen -t ed25519 -C "[email protected]"

Copy the public key to the server:


ssh-copy-id username@YOUR_VPS_IP_ADDRESS

Disable password login for root and the new user in the /etc/ssh/sshd_config file. Find the lines:


#PermitRootLogin prohibit-password
#PasswordAuthentication yes

And change them to:


PermitRootLogin no
PasswordAuthentication no

Restart the SSH service:


sudo systemctl restart sshd

5. Installing and configuring the firewall (UFW)

A firewall is necessary to restrict access to the server. We will allow only SSH, HTTP, HTTPS, and DNS ports.


sudo apt install ufw -y

Installs Uncomplicated Firewall (UFW).


sudo ufw allow ssh # Allow SSH (port 22 by default)
sudo ufw allow http # Allow HTTP (port 80) for Poweradmin and Let's Encrypt
sudo ufw allow https # Allow HTTPS (port 443) for Poweradmin
sudo ufw allow 53/tcp # Allow TCP traffic for DNS
sudo ufw allow 53/udp # Allow UDP traffic for DNS
sudo ufw enable

Enables the firewall and applies the rules. Confirm the action by typing y.


sudo ufw status verbose

Checks the current status and rules of UFW.

6. Installing Fail2ban

Fail2ban protects the server from brute-force attacks by blocking IP addresses from which failed login attempts were detected.


sudo apt install fail2ban -y

Installs Fail2ban.


sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Creates a local configuration file that will not be overwritten during package updates.

Edit /etc/fail2ban/jail.local to strengthen protection. For example, change bantime (ban time) and maxretry (number of attempts).


sudo nano /etc/fail2ban/jail.local

Find the [DEFAULT] section and change the values:


[DEFAULT]
bantime  = 1h # Ban for 1 hour
findtime = 10m # Scan for the last 10 minutes
maxretry = 3 # Ban after 3 failed attempts

Restart Fail2ban to apply changes:


sudo systemctl restart fail2ban

Your server is now basically prepared and secured.

Software Installation — Step-by-Step

Diagram: Software Installation — Step-by-Step
Diagram: Software Installation — Step-by-Step

Now that the server is prepared, let's proceed with the installation of the main components: MariaDB, PowerDNS Authoritative Server, Nginx, PHP-FPM, and Poweradmin.

1. MariaDB Server Installation (version 11.x)

MariaDB will be used as the backend for PowerDNS and Poweradmin. Ubuntu 24.04 LTS comes with MariaDB Server 11.x.


sudo apt install mariadb-server -y # Installs MariaDB server

Run the MariaDB secure installation script:


sudo mysql_secure_installation # Script to enhance MariaDB installation security

Follow the instructions: set a password for the root database user, remove anonymous users, disallow remote root login, and remove the test database.

Create a database and user for PowerDNS:


sudo mysql -u root -p # Connect to MariaDB as root

Enter the password you set earlier. Inside the MariaDB console, execute:


CREATE DATABASE powerdns; # Creates the 'powerdns' database
CREATE USER 'pdns_user'@'localhost' IDENTIFIED BY 'YOUR_STRONG_PASSWORD'; # Creates the 'pdns_user' user
GRANT ALL PRIVILEGES ON powerdns. TO 'pdns_user'@'localhost'; # Grants all privileges on the 'powerdns' database to the 'pdns_user' user
FLUSH PRIVILEGES; # Refreshes privileges
EXIT; # Exit MariaDB console

Replace YOUR_STRONG_PASSWORD with a strong password.

2. PowerDNS Authoritative Server Installation (version ~4.8-4.9)

Let's install PowerDNS and the necessary dependencies for the MariaDB backend.


sudo apt install pdns-server pdns-backend-mysql -y # Installs PowerDNS Authoritative Server and backend for MySQL/MariaDB

Import the PowerDNS database schema. The schema can be found in the PowerDNS documentation or in the package.


sudo mysql -u pdns_user -p powerdns < /usr/share/doc/pdns-backend-mysql/schema.mysql.sql # Imports the PowerDNS database schema

Enter the password for pdns_user.

3. PowerDNS Configuration

Edit the main PowerDNS configuration file /etc/powerdns/pdns.conf.


sudo nano /etc/powerdns/pdns.conf # Opens the PowerDNS configuration file

Find or add the following lines, ensuring they match your settings:


# /etc/powerdns/pdns.conf
launch=gmysql
gmysql-host=127.0.0.1
gmysql-port=3306
gmysql-dbname=powerdns
gmysql-user=pdns_user
gmysql-password=YOUR_STRONG_PASSWORD
default-soa-name=ns1.yourdomain.com # Replace with your NS server name
allow-recursion=0.0.0.0/0 # Or restrict to specific IPs if you don't want recursion
allow-axfr-ips=127.0.0.1 # IP addresses allowed for AXFR (zone transfer)
setuid=pdns
setgid=pdns
log-level=4
daemon=yes
local-address=ВАШ_IP_АДРЕС_VPS # IP address on which PowerDNS will listen for requests

Replace YOUR_STRONG_PASSWORD with the PowerDNS database user's password, and ns1.yourdomain.com and ВАШ_IP_АДРЕС_VPS with your own values.


sudo systemctl enable pdns # Enables PowerDNS autostart on system boot
sudo systemctl start pdns # Starts the PowerDNS service
sudo systemctl status pdns # Checks PowerDNS status

4. Nginx and PHP-FPM Installation (versions ~1.28 and ~8.3)

Nginx will be the web server for Poweradmin, and PHP-FPM will process PHP scripts.


sudo apt install nginx php8.3-fpm php8.3-mysql php8.3-gd php8.3-curl php8.3-xml php8.3-mbstring php8.3-intl -y # Installs Nginx, PHP-FPM, and necessary PHP modules

sudo systemctl enable nginx php8.3-fpm # Enables Nginx and PHP-FPM autostart
sudo systemctl start nginx php8.3-fpm # Starts Nginx and PHP-FPM services
sudo systemctl status nginx php8.3-fpm # Checks service status

5. Poweradmin Installation (version ~3.0)

Let's download Poweradmin from the official GitHub repository. For 2026, we will target the stable 3.0 release.


cd /var/www/ # Navigate to the web root directory
sudo git clone https://github.com/PowerDNS/poweradmin.git html # Clones the Poweradmin repository into the 'html' folder
sudo chown -R www-data:www-data /var/www/html # Sets owner for Poweradmin files
sudo find /var/www/html -type d -exec chmod 755 {} \; # Sets permissions for directories
sudo find /var/www/html -type f -exec chmod 644 {} \; # Sets permissions for files

Navigate to the Poweradmin directory and copy the configuration file:


cd /var/www/html
sudo cp config-dist.inc.php config.inc.php # Copies the configuration template

Now you need to edit config.inc.php. Specify the database connection details that we created earlier:


sudo nano config.inc.php # Opens the Poweradmin configuration file

Find the database-related sections and modify them:


// config.inc.php (fragment)
$db_host = 'localhost';
$db_user = 'pdns_user';
$db_pass = 'YOUR_STRONG_PASSWORD'; // PowerDNS user password in MariaDB
$db_name = 'powerdns';
$db_type = 'mysql'; // Or 'pgsql' for PostgreSQL

Also specify the domains for NS servers:


// config.inc.php (fragment)
$primary_ns = 'ns1.yourdomain.com'; // Replace with the name of your first NS
$secondary_ns = 'ns2.yourdomain.com'; // Replace with the name of your second NS (if any)

Create a Poweradmin administrator user. Go to http://ВАШ_IP_АДРЕС_VPS/install/ in your browser. Follow the installation wizard instructions: create an administrator, delete the install directory.


sudo rm -rf /var/www/html/install # Deletes the installation directory after completion

Poweradmin is now ready for use.

Configuration

Diagram: Configuration
Diagram: Configuration

After installing the components, their final configuration is required, especially for Nginx, so that it correctly serves Poweradmin, and to set up TLS/HTTPS.

1. Nginx Configuration for Poweradmin

Create a new Nginx configuration file for Poweradmin. Delete the default Nginx config if it exists, or simply create a new one.


sudo nano /etc/nginx/sites-available/poweradmin.conf # Creates a new Nginx configuration file

Insert the following content:


# /etc/nginx/sites-available/poweradmin.conf
server {
    listen 80;
    server_name your_poweradmin_domain.com ВАШ_IP_АДРЕС_VPS; # Replace with your domain or IP
    root /var/www/html;
    index index.php index.html index.htm;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.3-fpm.sock; # Ensure this matches your PHP-FPM version
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location ~ /\.ht {
        deny all;
    }
}

Create a symbolic link to this file in sites-enabled and check the Nginx configuration:


sudo ln -s /etc/nginx/sites-available/poweradmin.conf /etc/nginx/sites-enabled/ # Creates a symbolic link
sudo nginx -t # Checks Nginx configuration syntax

If the test is successful, restart Nginx:


sudo systemctl restart nginx # Restarts Nginx

Now you can access Poweradmin via your VPS's IP address or domain name, if you have already configured it (e.g., http://poweradmin.yourdomain.com).

2. TLS/HTTPS Setup via Certbot (Let's Encrypt)

It is crucial to secure the Poweradmin web interface with HTTPS. We will use Certbot to obtain free SSL/TLS certificates from Let's Encrypt.


sudo apt install certbot python3-certbot-nginx -y # Installs Certbot and the Nginx plugin

Run Certbot. It will automatically detect your domain (specified in Nginx server_name) and configure Nginx.


sudo certbot --nginx -d your_poweradmin_domain.com # Obtains and installs a certificate for your domain

Follow the Certbot instructions: enter an email address, agree to the terms. Certbot will offer to redirect HTTP traffic to HTTPS, which is recommended.

Check automatic certificate renewal:


sudo certbot renew --dry-run # Checks the possibility of renewing certificates without actual renewal

If successful, your Poweradmin is now accessible via HTTPS.

3. PowerDNS Operability Check

After all configurations, let's ensure that PowerDNS is working correctly and responding to queries.


sudo systemctl status pdns # Ensure PowerDNS is running

Use the dig utility to check DNS queries. First, add a test zone via Poweradmin. For example, create a zone test.com with an A-record for www.test.com pointing to the IP address 192.0.2.1.


dig @ВАШ_IP_АДРЕС_VPS www.test.com A # Sends a DNS query to your PowerDNS server

In the response, you should see the IP address 192.0.2.1. If PowerDNS responds, it means it is working correctly.

Check that Poweradmin is accessible via HTTPS:


curl -v https://your_poweradmin_domain.com # Checks Poweradmin's HTTPS accessibility and displays certificate information

You should see a successful connection and SSL certificate details.

4. Poweradmin Secret Configuration

In Poweradmin's config.inc.php file, there is a variable $session_key. It is used for session encryption. Generate a random string and place it there. Never leave the default value.


head /dev/urandom | tr -dc A-Za-z0-9_ | head -c 32 ; echo # Generates a random 32-character string

Edit config.inc.php:


sudo nano /var/www/html/config.inc.php

And insert the generated string:


// config.inc.php (fragment)
$session_key = 'ВАША_СЛУЧАЙНАЯ_32_СИМВОЛЬНАЯ_СТРОКА';

Backups and Maintenance

Diagram: Backups and Maintenance
Diagram: Backups and Maintenance

Regular backups and timely maintenance are critically important for any production server, including DNS. Loss of DNS records can lead to the unavailability of all your services.

What to Back Up

  1. PowerDNS Database (MariaDB): This is the most important component, containing all your domain zones and records.
  2. PowerDNS Configuration Files: /etc/powerdns/pdns.conf and any other custom configs.
  3. Nginx Configuration Files: /etc/nginx/sites-available/poweradmin.conf, /etc/nginx/nginx.conf.
  4. Poweradmin Configuration Files: /var/www/html/config.inc.php.
  5. Let's Encrypt Certificates: Although they can be reissued, keeping a backup will speed up recovery. They are stored in /etc/letsencrypt/.

Simple Auto-Backup Script

Let's create a simple script for daily backups of the database and key configuration files. We will use mysqldump for the database and tar for the files. An external S3-compatible service can be used for storage.


sudo mkdir -p /opt/backup/pdns # Create backup directory
sudo nano /opt/backup/pdns/backup_pdns.sh # Create backup script

Contents of /opt/backup/pdns/backup_pdns.sh:


#!/bin/bash

# Database settings
DB_USER="pdns_user"
DB_PASS="YOUR_STRONG_PASSWORD" # Use an env variable or .my.cnf file for production
DB_NAME="powerdns"

# Backup directory
BACKUP_DIR="/opt/backup/pdns"
DATE=$(date +%Y%m%d%H%M%S)

# Create database dump
echo "Dumping MariaDB database..."
mysqldump -u "$DB_USER" -p"$DB_PASS" "$DB_NAME" > "$BACKUP_DIR/powerdns_db_$DATE.sql"
if [ $? -eq 0 ]; then
    echo "Database dump created successfully: $BACKUP_DIR/powerdns_db_$DATE.sql"
else
    echo "Error creating database dump."
    exit 1
fi

# Archive configuration files
echo "Archiving configuration files..."
tar -czvf "$BACKUP_DIR/pdns_configs_$DATE.tar.gz" \
    /etc/powerdns/pdns.conf \
    /etc/nginx/sites-available/poweradmin.conf \
    /etc/nginx/nginx.conf \
    /var/www/html/config.inc.php \
    /etc/letsencrypt/live/your_poweradmin_domain.com/ # Specify your domain
if [ $? -eq 0 ]; then
    echo "Configuration files archived successfully: $BACKUP_DIR/pdns_configs_$DATE.tar.gz"
else
    echo "Error archiving configuration files."
    exit 1
fi

# Delete old backups (keep for 7 days)
echo "Cleaning up old backups..."
find "$BACKUP_DIR" -type f -name "*.sql" -mtime +7 -delete
find "$BACKUP_DIR" -type f -name "*.tar.gz" -mtime +7 -delete
echo "Backup process completed."

Replace YOUR_STRONG_PASSWORD and your_poweradmin_domain.com with actual values. Set execution permissions:


sudo chmod +x /opt/backup/pdns/backup_pdns.sh # Makes the script executable

Add the script to cron for daily execution (e.g., at 3 AM):


sudo crontab -e # Opens crontab for editing

Add the following line to the end of the file:


0 3 * * * /opt/backup/pdns/backup_pdns.sh >> /var/log/pdns_backup.log 2>&1

This will run the script every day at 03:00 and record the output to a log file.

Where to Store

Never store backups on the same server! If the server fails, you will lose both data and backups. Recommended storage locations:

  • External S3-compatible object storage: AWS S3, DigitalOcean Spaces, Backblaze B2, Yandex Object Storage. This is a reliable and scalable solution. Utilities like s3cmd or rclone can be used for automatic uploads.
  • Separate VPS: An inexpensive VPS in a different location, used exclusively for storing backups. Synchronization can be done via rsync or scp.
  • Local NAS/server: If you have your own infrastructure.

Updates: rolling vs maintenance window

Software updates are an important part of maintenance. For a DNS server, which must be maximally available, this is especially relevant.

  • Rolling updates: If you have two (or more) DNS servers (primary and secondary NS) configured in different locations, you can update them one by one. Update one server, ensure it's working correctly, then update the next. This ensures continuous availability.
  • Maintenance window: If you only have one DNS server, or you want to minimize risks, plan updates for periods of low load (e.g., late at night). Be sure to warn users about possible short-term service interruptions.

Always back up before updating and test updates on a test server, if possible. To update the system and packages, use:


sudo apt update && sudo apt upgrade -y # Update all packages

After major kernel or system library updates, a server reboot may be required:


sudo reboot # Reboot server

Troubleshooting + FAQ

This section collects common problems and answers to frequently asked questions that may arise when setting up and operating PowerDNS with Poweradmin.

PowerDNS is not starting or not responding to queries. What to do?

First, check the status of the PowerDNS service: sudo systemctl status pdns. If it's not running or shows errors, check the logs: sudo journalctl -u pdns --since "5 minutes ago". Common causes include: incorrect configuration in /etc/powerdns/pdns.conf (errors in gmysql-host, gmysql-user, gmysql-password), issues with connecting to MariaDB, or port conflicts. Ensure that MariaDB is running and accessible, and that the user pdns_user has the correct password and privileges for the powerdns database. Check local-address, if specified, to ensure it is your server's IP address.

Poweradmin is not loading or returns a 500/404 error.

Check Nginx configuration: sudo nginx -t and restart it: sudo systemctl restart nginx. Ensure that Nginx is listening on port 80/443 and that the root directory (/var/www/html) and fastcgi_pass for PHP-FPM (unix:/run/php/php8.3-fpm.sock) are correctly configured. Check Nginx logs (/var/log/nginx/error.log) and PHP-FPM logs (/var/log/php8.3-fpm.log). 500 errors often indicate PHP issues, such as incorrect database settings in /var/www/html/config.inc.php or missing PHP modules (php8.3-mysql).

DNS records added via Poweradmin are not resolving.

Ensure that you have correctly configured NS records for your domain with your domain name registrar, pointing to your VPS's IP address. After changing NS records, it may take up to 48 hours for changes to fully propagate across the internet (DNS propagation). Verify that the zone is added in Poweradmin and contains correct records (SOA, NS, A, AAAA, etc.). Use dig @YOUR_VPS_IP_ADDRESS example.com to directly check your DNS server.

What is the minimum VPS configuration suitable for PowerDNS?

For a small number of domains and moderate load, a minimum VPS with 1 vCPU, 1 GB RAM, and 20-30 GB SSD will be sufficient. PowerDNS is very efficient. However, for greater stability, performance headroom, and the ability to run other small services on the same VPS, 2 vCPU, 2 GB RAM, and 50 GB SSD are recommended. An SSD is key for good database performance.

What to choose — VPS or dedicated for this task?

For most users, including developers, solo founders, and small businesses, a VPS is the optimal choice due to its cost-effectiveness, flexibility, and sufficient performance. Dedicated servers are only justified for very high loads (hundreds of thousands of queries per second), strict resource isolation requirements, or the need for specific hardware. Start with a VPS, and if the load grows to a critical level, you can always migrate to a dedicated server.

What other security measures can be taken?

In addition to SSH keys, Fail2ban, and UFW, consider the following steps: regular system updates, using strong and unique passwords, restricting MariaDB access to localhost only, regular log auditing, using two-factor authentication for Poweradmin (if available via third-party modules or workarounds), and setting up a secondary DNS server (secondary NS) in a different location for fault tolerance and DDoS protection.

How does SOA serial work and why is it important?

The SOA (Start of Authority) record contains important information about a zone, including the serial number. The serial number is a number that increments with each change to the zone. Secondary DNS servers use this number to determine if they need to request zone updates (AXFR/IXFR) from the primary server. If the serial number on the primary server is higher than on the secondary, the secondary server initiates a zone transfer. Poweradmin automatically increments the serial number with each record change, ensuring correct synchronization.

Conclusions and Next Steps

Diagram: Conclusions and Next Steps
Diagram: Conclusions and Next Steps

Congratulations! You have successfully set up and launched your own authoritative DNS server with PowerDNS and the Poweradmin web interface on your VPS. You now have full control over your domain names, can quickly make changes, and ensure reliable DNS resolution for your projects. This is a powerful tool that provides independence and flexibility.

Here are a few next steps you can take to further develop your DNS infrastructure:

  1. Setting up a secondary DNS server: For maximum fault tolerance and performance, deploy a second PowerDNS server on another VPS (preferably in a different geographical location and with a different provider) and configure it as a secondary (slave) NS server.
  2. Monitoring: Implement a monitoring system (e.g., Prometheus, Zabbix, Grafana) to track the status of PowerDNS, MariaDB, Nginx, and overall server load.
  3. Performance optimization: For very high loads, explore PowerDNS caching capabilities, MariaDB query optimization, and fine-tuning of Nginx/PHP-FPM.

Was this guide helpful?

Your feedback helps us improve our guides.

Share this post:

Send this guide to someone who may find it useful.

Telegram VKVK WhatsApp Facebook LinkedIn XX

PowerDNS setup with Poweradmin on VPS: creating your own authoritative DNS server
support_agent
Valebyte Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.