Installazione software · 15 min read · Sep 08, 2025
Come installare PowerDNS e PowerAdmin su Rocky Linux

PowerDNS è un software DNS Server gratuito e open-source. Può essere utilizzato come nameserver autorevole e DNS recursor. Il PowerDNS è scritto in C++ e supporta più sistemi operativi, tra cui BSD, Linux e macOS.
PowerDNS è un server DNS di alta gamma e ad alte prestazioni che supporta più tipi di backend come BIND e backend RDBMS come MySQL/MariaDB, PostgreSQL e Oracle database.
Il server PowerDNS è ad alte prestazioni e può gestire decine di migliaia di connessioni simultanee, supporta DNSSEC e fornisce un alto livello di scripting con Lua.
In questa guida, ti mostreremo come installare PowerDNS e PowerDNS-Admin su un sistema Rocky Linux. Eseguiremo PowerDNS con il backend del database MySQL/MariaDB e configureremo PowerDNS-Admin che sarà utilizzato come strumento di gestione basato sul web per il server PowerDNS.
Questa guida mostra anche l’installazione dei pacchetti Python per progetti basati su Flask e la configurazione di Nginx e Gunicorn che saranno utilizzati come reverse proxy per l’applicazione web PowerDNS-Admin.
Requisiti
Per iniziare con questa guida, avrai bisogno dei seguenti requisiti:
- Un server Rocky Linux - Puoi utilizzare Rocky Linux v8 o v9.
- Un utente non root con privilegi di amministratore sudo/root.
Installazione e configurazione del server di database MariaDB
PowerDNS è un software server DNS scalabile che supporta più backend come PostgreSQL, MariaDB/MySQL e SQLite. Per grandi distribuzioni, dovresti considerare di utilizzare PostgreSQL o MySQL/MariaDB come backend del database.
Inizierai ora installando e configurando il database MariaDB sul server Rocky Linux. Configurerai PowerDNS con MariaDB come backend del database.
Il repository predefinito di Rocky Linux fornisce più versioni dei pacchetti del server MariaDB. Esegui il comando dnf qui sotto per installare il server di database MariaDB.
sudo dnf install mariadb-serverQuando ti viene chiesta la conferma, inserisci y per confermare e premi INVIO per procedere.

Dopo che il server MariaDB è stato installato, esegui il comando systemctl qui sotto per avviare e abilitare il servizio MariaDB.
sudo systemctl start mariadb
sudo systemctl enable mariadbOra il server MariaDB dovrebbe essere in esecuzione e dovrebbe essere abilitato. Esegui il comando qui sotto per verificare il servizio MariaDB e assicurati che il servizio sia in esecuzione.
sudo systemctl status mariadbVedrai il seguente output - Il servizio MariaDB è in esecuzione ed è abilitato, il che significa che il servizio verrà eseguito automaticamente all’avvio.

Ora che il server MariaDB è in esecuzione, configurerai e metterai in sicurezza l’installazione di MariaDB tramite lo strumento da riga di comando ‘mysql_secure_installation’.
Esegui il seguente comando per iniziare a mettere in sicurezza il deployment del server MariaDB.
sudo mysql_secure_installationTi verrà quindi chiesto di alcune configurazioni del server MariaDB.
- Configurare la password di root di MariaDB? Inserisci y per confermare e digita la nuova password per il tuo server MariaDB, quindi ripeti la password.
- Disabilitare l’accesso remoto per l’utente root di MariaDB? Inserisci y per confermare e disabilitalo.
- Rimuovere l’utente anonimo predefinito da MariaDB? Inserisci y per confermare.
- Rimuovere il database di test predefinito da MariaDB? Inserisci y di nuovo per confermare.
- Infine, ricaricare i privilegi delle tabelle per applicare le nuove modifiche? Inserisci y per confermare e MariaDB ricaricherà tutti i privilegi e applicherà le nuove impostazioni.
Ora che hai messo in sicurezza il deployment di MariaDB, configurerai un nuovo database MariaDB e un utente per PowerDNS.
Per iniziare, esegui il comando mysql qui sotto per accedere alla shell di MariaDB come utente root di MariaDB.
sudo mysql -u root -pQuando ti viene chiesta la password, inserisci la password del tuo utente root di MariaDB.
Successivamente, esegui le seguenti query per creare un nuovo database MariaDB e un utente. In questo esempio, creerai un nuovo database pdns con l’utente pdnsadmin e la password è ‘ password ‘.
CREATE DATABASE pdns;
GRANT ALL ON pdns.* TO pdnsadmin@localhost IDENTIFIED BY 'password';
FLUSH PRIVILEGES;
Ora esegui le seguenti query per verificare i privilegi dell’utente MariaDB pdnsadmin@localhost. Questo ti mostrerà l’elenco dei privilegi per l’utente MariaDB pdnsadmin@localhost.
SHOW GRANTS FOR pdnsadmin@localhost;Vedrai il seguente output - L’utente MariaDB pdnsadmin@localhost ha privilegi sul database PowerDNS pdns.

Ora digita ‘ quit ‘ per uscire dalla shell di MariaDB.
Con il server MariaDB in esecuzione, installerai e configurerai il server PowerDNS con il backend del database MariaDB.
Installazione e configurazione di PowerDNS
Dopo aver installato il server di database MariaDB, installerai ora il server PowerDNS e configurerai PowerDNS con il backend del database MariaDB.
Per i sistemi operativi basati su RHEL, PowerDNS è disponibile nel repository EPEL. Quindi, prima di installare PowerDNS, devi aggiungere il repository EPEL al tuo sistema.
Esegui il seguente comando dnf per installare il repository EPEL.
sudo dnf install epel-release -yDopo che il repository EPEL è stato aggiunto, esegui il seguente comando dnf per installare PowerDNS e il backend MySQL di PowerDNS.
sudo dnf install pdns pdns-backend-mysqlQuando ti viene chiesta la conferma, inserisci y per confermare e premi INVIO per procedere.

Dopo che l’installazione di PowerDNS è terminata, esegui il seguente comando mysql per importare lo schema del database per PowerDNS. Il seguente comando importerà lo schema del database tramite l’utente MariaDB pdnsadmin nel database pdns.
sudo mysql -u pdnsadmin -p pdns < /usr/share/doc/pdns/schema.mysql.sqlInserisci la password per l’utente pdnsadmin e premi INVIO per confermare e procedere.
Successivamente, modifica la configurazione di PowerDNS ‘/etc/pdns/pdns.conf’ utilizzando il seguente comando dell’editor nano.
sudo nano /etc/pdns/pdns.confDecommenta la configurazione del backend MariaDB e modifica i dettagli del nome del database, dell’utente e della password. Assicurati di utilizzare i dettagli corretti del database MariaDB che hai creato.
#################################
# launch Quali backend avviare e in quale ordine interrogarli
#
launch=gmysql
gmysql-host=localhost
gmysql-user=pdnsadmin
gmysql-password=password
gmysql-dbname=pdnsSuccessivamente, decommenta l’ ‘api’ e cambia il valore in ‘ yes ‘. Quindi, decommenta l’opzione ‘ api-key ‘ e cambia la chiave predefinita. La seguente API di PowerDNS sarà utilizzata per gestire il server PowerDNS tramite l’applicazione web PowerDNS-Admin.
#################################
# api Abilita/disabilita l'API REST (incluso l'ascoltatore HTTP)
#
api=yes
#################################
# api-key Chiave di autenticazione statica pre-condivisa per l'accesso all'API REST
#
api-key=CHANGEMESalva il file ed esci dall’editor quando hai finito.
Dopo aver configurato il server PowerDNS, esegui il seguente comando per verificare la configurazione di PowerDNS.
pdns_server --daemon=no --guardian=no --loglevel=9Vedrai un output simile al seguente - La connessione di PowerDNS al backend del database MariaDB è riuscita, ora puoi premere ‘Ctrl+c’ per terminare il processo.

Ora esegui il seguente comando systemctl per avviare e abilitare il servizio PowerDNS.
sudo systemctl start pdns
sudo systemctl enable pdnsInfine, verifica il servizio PowerDNS per assicurarti che PowerDNS sia in esecuzione e abilitato.
sudo systemctl status pdnsNell’output qui sotto, vedrai che il servizio PowerDNS è in esecuzione ed è abilitato, il che significa che verrà eseguito automaticamente all’avvio del sistema.

A questo punto, hai completato l’installazione del server PowerDNS. Ora inizierai l’installazione di PowerDNS-Admin che sarà utilizzato come interfaccia di gestione front-end web per il server PowerDNS.
Installazione di PowerDNS-Admin
Con PowerDNS in esecuzione, installerai ora e configurerai PowerDNS-Admin sul server Rocky Linux. PowerDNS-Admin è un’applicazione web basata su Python Flask, quindi l’installazione di PowerDNS-Admin è abbastanza simile all’installazione del framework web Flask.
Di seguito sono riportati alcuni passaggi che devi eseguire per installare PowerDNS-Admin su Rocky Linux
- Installazione delle dipendenze dei pacchetti
- Configurazione dell’ambiente virtuale Python
- Installazione delle dipendenze Python
- Configurazione di PowerDNS-Admin con il database MariaDB
- Generazione dello schema del database e creazione di file statici
Ora iniziamo l’installazione di PowerDNS-Admin
Installazione delle dipendenze dei pacchetti
Il primo passo per installare PowerDNS-Admin è installare le dipendenze dei pacchetti come Python3, Pip, Node.js e Yarn.
Prima di iniziare, esegui il comando dnf qui sotto per abilitare il repository ‘ powertools ‘ sul tuo sistema Rocky Linux.
sudo dnf config-manager --set-enabled powertoolsDopo aver abilitato il repository ‘powertools’, installa i pacchetti Python tramite il comando dnf qui sotto.
sudo dnf install python3 python3-devel python3-pip python3-xmlsec gcc git mariadb-devel openldap-devel xmlsec1-devel xmlsec1-openssl libtool-ltdl-develQuando ti viene chiesta la conferma, inserisci y e premi INVIO per procedere.

Successivamente, aggiungi i repository Node.js e Yarn al tuo sistema tramite il comando qui sotto. I pacchetti Node.js e Yarn saranno utilizzati per generare file statici per l’applicazione web PowerAdmin. Questo esempio utilizza Node.js v16.
curl -sL https://rpm.nodesource.com/setup_16.x | bash -
curl -sL https://dl.yarnpkg.com/rpm/yarn.repo -o /etc/yum.repos.d/yarn.repo
Dopo aver aggiunto i repository, esegui il comando dnf qui sotto per installare il gestore di pacchetti Node.js e Yarn.
sudo dnf install nodejs yarnInserisci y e premi INVIO quando ti viene chiesto di confermare l’installazione.

Inoltre, quando ti viene chiesto di confermare la chiave GPG, inserisci y e premi INVIO.

Successivamente, esegui il comando pip3 qui sotto per aggiornare il pacchetto Python pip e installare virtualenv sul tuo sistema.
pip3 install -U pip
pip3 install -U virtualenvIl pacchetto Python pip e virtualenv saranno ora installati nella directory ‘ /usr/local/bin ‘. Aggiungi la directory ‘ /usr/local/bin ‘ alla variabile di ambiente $PATH del sistema tramite il comando qui sotto.
echo "export PATH="/usr/local/bin:$PATH"" >> ~/.bashrcOra applica le nuove modifiche nel file ‘ ~/.bashrc’ utilizzando il comando qui sotto. Dovresti ora eseguire i comandi ‘ pip ‘ e ‘ virtualenv ‘.
source ~/.bashrcConfigurazione dell’ambiente virtuale Python
Con le dipendenze dei pacchetti installate, ora scaricherai il codice sorgente di PowerDNS-Admin e configurerai l’ambiente virtuale Python per PowerDNS-Admin.
Clona il codice sorgente di PowerDNS-Admin nella directory ‘/opt/powerdns-admin’ utilizzando il seguente comando git.
git clone https://github.com/ngoduykhanh/PowerDNS-Admin.git /opt/powerdns-adminDopo che il codice sorgente è stato scaricato, sposta la directory di lavoro in ‘ /opt/powerdns-admin ‘ e crea un nuovo ambiente virtuale Python ‘ flask ‘.
cd /opt/powerdns-admin
virtualenv -p python3 flaskOra attiva l’ambiente virtuale Python ‘ flask ‘ tramite il comando qui sotto.
source flask/bin/activateQuando attivato, dovresti ora vedere il prompt diventare qualcosa come ‘ (flask) [user@hostname /directory/path]# ‘.

Da qui, il tuo ambiente di lavoro dovrebbe sempre essere nell’ambiente virtuale Python ‘ flask ‘.
Installazione delle dipendenze Python
Dopo aver configurato l’ambiente virtuale Python e attivato, installerai quindi le dipendenze Python tramite il comando pip.
Esegui il seguente comando pip per installare le dipendenze Python per PowerDNS-Admin.
pip install python-dotenv
pip install -r requirements.txtOra l’installazione inizierà - Questo installerà le dipendenze Python richieste da PowerDNS-Admin, che sono memorizzate nel file ‘ requirements.txt ‘.

Ora che hai installato le dipendenze Python, sei pronto per configurare PowerDNS-Admin con il database MariaDB.
Configurazione di PowerDNS-Admin con il database MariaDB
Con le dipendenze Python installate, ora configurerai PowerDNS-Admin con il database MariaDB. I dettagli del database per PowerDNS-Admin saranno gli stessi del database PowerDNS.
Ora modifica il file ‘ /opt/powerdns-admin/powerdnsadmin/default_config.py ‘ utilizzando il seguente comando dell’editor nano.
nano /opt/powerdns-admin/powerdnsadmin/default_config.pyCambia la configurazione come segue.
SALT = 'RANDOM-GENERATED'
SECRET_KEY = 'RANDOM-GENERATED'
BIND_ADDRESS = '0.0.0.0'
PORT = 9191
HSTS_ENABLED = False
OFFLINE_MODE = False
SQLA_DB_USER = 'pdnsadmin'
SQLA_DB_PASSWORD = 'password'
SQLA_DB_HOST = '127.0.0.1'
SQLA_DB_NAME = 'pdns'
SQLALCHEMY_TRACK_MODIFICATIONS = TrueSalva il file ed esci dall’editor quando hai finito.
Generazione dello schema del database e creazione di file statici
Dopo aver configurato il database MariaDB su PowerDNS-Admin, migrerai quindi il database e genererai file statici per PowerDNS-Admin.
Per prima cosa, esegui il seguente comando per migrare il database di PowerDNS-Admin. Questo inserirà un nuovo schema del database nel database che sarà utilizzato per PowerDNS-Admin.
export FLASK_APP=powerdnsadmin/__init__.py
flask db upgradeDi seguito è riportato l’output che otterrai quando la migrazione del database è terminata.

Dopo che la migrazione del database è terminata, esegui il seguente comando per generare file statici per PowerDNS-Admin.
yarn install --pure-lockfile
flask assets buildDi seguito puoi vedere l’installazione di alcune dipendenze JavaScript tramite il gestore di pacchetti yarn e il processo di generazione di file statici per PowerDNS-Admin.

Quando i file statici sono stati generati, esegui il seguente comando per disattivare l’ambiente virtuale Python.
deactivateA questo punto, hai completato l’installazione di base di PowerDNS-Admin con il server di database MariaDB. Ora puoi avviare l’applicazione PowerDNS-Admin tramite la riga di comando, ma puoi anche eseguire PowerDNS-Admin come servizio systemd.
Configurazione del servizio Systemd per PowerDNS-Admin
In questo passaggio, configurerai un nuovo file di servizio systemd per l’applicazione PowerDNS-Admin. Questo ti consente di gestire e mantenere facilmente PowerDNS-Admin tramite il comando systemd. Inoltre, semplificherà la configurazione di PowerDNS-Admin.
Per iniziare, crea un nuovo file di servizio systemd ‘/etc/systemd/system/powerdns-admin.service’ utilizzando il seguente comando dell’editor nano.
sudo nano /etc/systemd/system/powerdns-admin.serviceAggiungi la configurazione qui sotto al file. Con questa configurazione, eseguirai l’applicazione PowerDNS-Admin tramite gunicorn e verrà eseguita come utente e gruppo ‘ pdns ‘. Inoltre, PowerDNS-Admin verrà eseguito con il file socket UNIX ‘ /run/powerdns-admin/socket ‘.
[Unit]
Description=PowerDNS-Admin
Requires=powerdns-admin.socket
After=network.target
[Service]
PIDFile=/run/powerdns-admin/pid
User=pdns
Group=pdns
WorkingDirectory=/opt/powerdns-admin
ExecStartPre=+mkdir -p /run/powerdns-admin/
ExecStartPre=+chown pdns:pdns -R /run/powerdns-admin/
ExecStart=/usr/local/bin/gunicorn --pid /run/powerdns-admin/pid --bind unix:/run/powerdns-admin/socket 'powerdnsadmin:create_app()'
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s TERM $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.targetSalva il file ed esci dall’editor quando hai finito.
Successivamente, crea un nuovo file socket systemd per PowerDNS-Admin ‘ /etc/systemd/system/powerdns-admin.socket ‘ utilizzando il seguente editor nano.
sudo nano /etc/systemd/system/powerdns-admin.socketAggiungi la seguente configurazione al file.
[Unit]
Description=PowerDNS-Admin socket
[Socket]
ListenStream=/run/powerdns-admin/socket
[Install]
WantedBy=sockets.targetSalva il file ed esci dall’editor quando hai finito.
Ora crea un nuovo file di configurazione ‘/etc/tmpfiles.d/powerdns-admin.conf’ utilizzando il seguente comando dell’editor nano.
sudo nano /etc/tmpfiles.d/powerdns-admin.confAggiungi la seguente configurazione al file.
d /run/powerdns-admin 0755 pdns pdns -Salva il file ed esci dall’editor quando hai finito.
Dopo aver aggiunto un nuovo file di servizio systemd e una nuova configurazione, esegui il seguente comando per ricaricare il gestore systemd e applicare i nuovi file di servizio su systemd.
sudo systemctl daemon-reloadOra avvia e abilita il servizio PowerDNS-Admin tramite il seguente comando systemctl. PowerDNS-Admin dovrebbe ora essere in esecuzione con gunicorn e aprire il file socket disponibile nella directory ‘ /run/powerdns-admin/ ‘.
sudo systemctl start powerdns-admin.socket powerdns-admin.service
sudo systemctl enable powerdns-admin.socket powerdns-admin.service
Infine, esegui il seguente comando per verificare il servizio PowerDNS-Admin e assicurati che il servizio sia in esecuzione.
sudo systemctl status powerdns-admin.service powerdns-admin.socketNell’output qui sotto, il powerdns-admin.service e il powerdns-admin.socket sono in esecuzione e entrambi sono abilitati. Entrambi i servizi verranno eseguiti automaticamente all’avvio del sistema.

Installazione di Nginx come reverse proxy per PowerDNS-Admin
In questo passaggio, configurerai Nginx come reverse proxy per PowerDNS-Admin.
Esegui il seguente comando dnf per installare Nginx sul tuo server Rocky Linux. Quando ti viene chiesto, inserisci y per confermare e premi INVIO per procedere.
sudo dnf install nginxSuccessivamente, crea un nuovo blocco del server Nginx ‘/ etc/nginx/conf.d/pdns.conf ‘ utilizzando il seguente editor nano.
sudo nano /etc/nginx/conf.d/pdns.confAggiungi la seguente configurazione al file e assicurati di cambiare il nome di dominio. Questo esempio utilizza il dominio ‘pdns.howtoforge.local’ per PowerDNS-Admin.
server {
listen 80;
server_name pdns.howtoforge.local;
return 301 https://$http_host$request_uri;
}
server {
listen 443 ssl http2;
server_name pdns.howtoforge.local;
index index.html index.htm;
error_log /var/log/nginx/error_powerdnsadmin.log error;
access_log off;
ssl_certificate /etc/letsencrypt/live/pdns.howtoforge.local/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/pdns.howtoforge.local/privkey.pem;
#ssl_dhparam path_to_your_dhparam.pem;
ssl_prefer_server_ciphers on;
ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';
ssl_session_cache shared:SSL:10m;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_redirect off;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffers 32 4k;
proxy_buffer_size 8k;
proxy_set_header Host $http_host;
proxy_set_header X-Scheme $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_headers_hash_bucket_size 64;
location ~ ^/static/ {
include mime.types;
root /opt/powerdns-admin/powerdnsadmin;
location ~* \\.jpg|jpeg|png|gif$ { expires 365d; }
location ~* ^.+\.(css|js)$ { expires 7d; }
}
location ~ ^/upload/ {
include mime.types;
root /opt/powerdns-admin;
location ~* \\.jpg|jpeg|png|gif$ { expires 365d; }
location ~* ^.+\.(css|js)$ { expires 7d; }
}
location / {
proxy_pass http://unix:/run/powerdns-admin/socket;
proxy_read_timeout 120;
proxy_connect_timeout 120;
proxy_redirect http:// $scheme://;
}
}Salva il file ed esci dall’editor quando hai finito.
Successivamente, esegui il seguente comando per verificare la configurazione di Nginx e assicurati che la configurazione sia corretta. Dovresti vedere il messaggio di output come ‘ syntax ok - test is successful ‘.
sudo nginx -tOra esegui il seguente comando systemctl per avviare e abilitare il servizio Nginx.
sudo systemctl start nginx
sudo systemctl enable nginx
Infine, verifica il servizio Nginx tramite il seguente comando per assicurarti che il servizio sia in esecuzione.
sudo systemctl status nginxDovresti vedere l’output che il servizio nginx è in esecuzione ed è abilitato. Con questo, il servizio Nginx verrà eseguito automaticamente all’avvio del sistema.

Accesso all’installazione di PowerDNS-Admin
Apri il browser web e visita il nome di dominio della tua installazione di PowerDNS-Admin (cioè: https://pdns.howtoforge.local), e dovresti ottenere la pagina di accesso di PowerDNS-Admin.
Clicca sul link ‘ Crea un account ‘ per impostare un nuovo utente amministratore per PowerDNS-Admin.

Ora inserisci i dettagli del nuovo utente, email e password. Quindi clicca su ‘ Registrati ‘ per confermare.

Dopo che l’utente amministratore è stato creato, verrai reindirizzato di nuovo alla pagina di accesso di PowerDNS-Admin. Accedi con il tuo nuovo utente admin e password, quindi clicca su ‘ Accedi ‘.

Ora dovresti ottenere il dashboard di PowerDNS-Admin. PowerDNS-Admin è in esecuzione, ma non è ancora connesso al server PowerDNS.
Per configurare il server PowerDNS con PowerDNS-Admin, devi aggiungere la chiave API che hai configurato tramite il server PowerDNS a PowerDNS-Admin.
Inserisci i dettagli API del server PowerDNS nella sezione ‘ Impostazioni PDNS ‘ e clicca su ‘ Aggiorna ‘.

Quando PowerDNS-Admin e il server PowerDNS sono connessi tramite API, il tuo dashboard dovrebbe apparire come nello screenshot seguente.

Da qui, puoi ora facilmente aggiungere nuovi record DNS o modificare i record DNS esistenti facilmente tramite il dashboard di PowerDNS-Admin.
Conclusione
In questa guida, hai imparato come installare un server PowerDNS con database MySQL/MariaDB su un server Rocky Linux. Hai anche appreso il deployment di base del database MariaDB su Rocky Linux. Infine, hai imparato a installare e configurare PowerDNS-Admin che sarà utilizzato come strumento di gestione basato sul web per il server PowerDNS. PowerDNS-Admin funziona con Nginx come reverse proxy e backend del database MariaDB.
Con il server PowerDNS e PowerDNS-Admin in esecuzione, ora puoi gestire il tuo server DNS tramite il dashboard di amministrazione web. Puoi aggiungere, modificare o eliminare record DNS tramite il dashboard di amministrazione di PowerDNS-Admin.
Ricevi i nuovi post nella tua casella di posta.
Nessuno spam. Disiscriviti in qualsiasi momento.