PowerDNS és un servidor DNS gratuït i de codi obert, desenvolupat en C++, que permet allotjar dominis amb suport per a DNSSEC. Funciona en la majoria de sistemes operatius basats en Unix i pot emmagatzemar els seus registres DNS en bases de dades com MariaDB, MySQL, PostgreSQL i SQLite.
A més, incorpora mecanismes de caché de paquets i consultes per optimitzar el rendiment en la resolució de noms. Per a la seva gestió, compta amb una eina web anomenada PowerDNS-Admin, que ofereix una interfície intuïtiva per administrar el servidor de forma centralitzada.
En aquest tutorial, aprendràs a instal·lar PowerDNS i PowerDNS-Admin en un servidor al núvol amb Ubuntu 24.04.
Requisits previs
- Un servidor VPS al núvol amb Ubuntu 24.04 instal·lat.
- Accés al servidor amb l’usuari root o un usuari amb privilegis sudo.
Comencem
Primer, et recomanem actualitzar els paquets del teu servidor al núvol a l’última versió. Pots fer-ho amb la següent comanda:
# apt update && apt upgrade -y
Un cop el teu sistema estigui actualitzat, reinicia’l per aplicar tots els canvis.
Instal·lar i Configurar MySQL/MariaDB
Primer, hauràs d’instal·lar la base de dades MySQL/MariaDB al teu servidor. Pots fer-ho executant la següent comanda:
# apt install pdns-backend-mysql mariadb-server -y
Un cop completada la instal·lació, hauràs de crear la base de dades i l’usuari per a PowerDNS.
Primer, inicia sessió al shell de MariaDB amb la següent comanda:
# mariadb -u root
Proporciona la teva contrasenya de root quan te la demani, després crea una base de dades i un usuari per a PowerDNS amb la següent comanda:
MariaDB [(none)]>CREATE DATABASE powerdns;
MariaDB [(none)]>GRANT ALL ON powerdns.* TO 'powerdns'@'localhost' IDENTIFIED BY 'password';
A continuació, actualitza els privilegis amb la següent comanda:
MariaDB [(none)]>FLUSH PRIVILEGES; EXIT;
Després, utilitza el SQL de pdns per crear les taules necessàries amb la següent comanda:
# mariadb -u root powerdns < /usr/share/pdns-backend-mysql/schema/schema.mysql.sql
Instal·lar PowerDNS
Primer, hauràs de deshabilitar systemd-resolved perquè PowerDNS funcioni correctament.
Pots fer-ho amb la següent comanda:
# systemctl disable systemd-resolved && systemctl stop systemd-resolved
A continuació, restableix l’arxiu resolv.conf per defecte i crea’n un de nou amb la següent comanda:
# echo "nameserver 8.8.8.8" > /etc/resolv.conf
# echo "nameserver 8.8.4.4" >> /etc/resolv.conf
Ara, instal·la PowerDNS amb la següent comanda:
# apt-get install pdns-server virtualenv -y
Durant la instal·lació, se’t preguntarà si vols configurar la base de dades PowerDNS amb dbconfig-common. Selecciona ‘No’ i prem ‘Enter’ per continuar amb la instal·lació.
A continuació, hauràs de configurar PowerDNS per utilitzar MySQL. Pots fer-ho editant l’arxiu de configuració de PowerDNS:
# nano /etc/powerdns/pdns.d/pdns.local.gmysql.conf
Fes els següents canvis:
launch+=gmysql gmysql-host=localhost gmysql-port=3306 gmysql-dbname=powerdns gmysql-user=powerdns gmysql-password=password gmysql-dnssec=yes
Desa i tanca l’arxiu. Després, reinicia el servei PowerDNS per aplicar els canvis:
# systemctl restart pdns
També pots comprovar l’estat de PowerDNS amb la següent comanda:
# systemctl status pdns
Hauries de veure el següent resultat:
pdns.service - PowerDNS Authoritative Server Loaded: loaded (/usr/lib/systemd/system/pdns.service; enabled; preset: enabled) Active: active (running) since Wed 2025-09-17 11:44:54 CEST; 4s ago Docs: man:pdns_server(1) man:pdns_control(1) https://doc.powerdns.com Main PID: 18354 (pdns_server) Tasks: 8 (limit: 9436) Memory: 46.5M (peak: 46.9M) CPU: 97ms CGroup: /system.slice/pdns.service └─18354 /usr/sbin/pdns_server --guardian=no --daemon=no --disable-syslog --log-timestamp=no --write-pid=no Sep 17 11:44:54 powerdns pdns_server[18354]: TCP server bound to [::]:53 Sep 17 11:44:54 powerdns pdns_server[18354]: PowerDNS Authoritative Server 4.8.3 (C) 2001-2022 Powe Sep 17 11:44:54 powerdns pdns_server[18354]: Using 64-bits mode. Built using gcc 13.2.0. Sep 17 11:44:54 powerdns pdns_server[18354]: PowerDNS comes with ABSOLUTELY NO WARRANTY. This is fr Sep 17 11:44:54 powerdns pdns_server[18354]: [bindbackend] Parsing 0 domain(s), will report when do Sep 17 11:44:54 powerdns pdns_server[18354]: [bindbackend] Done parsing domains, 0 rejected, 0 new, Sep 17 11:44:54 powerdns pdns_server[18354]: Creating backend connection for TCP Sep 17 11:44:54 powerdns pdns_server[18354]: About to create 3 backend threads for UDP Sep 17 11:44:54 powerdns systemd[1]: Started pdns.service - PowerDNS Authoritative Server. Sep 17 11:44:54 powerdns pdns_server[18354]: Done launching threads, ready to distribute questions
Instal·lar PowerDNS-Admin
A continuació, hauràs d’instal·lar la interfície web de PowerDNS-Admin al teu servidor. Pots administrar el domini, l’usuari, la base de dades local, LDAP, el servei PowerDNS i molt més amb PowerDNS-Admin.
Primer, hauràs d’instal·lar alguns paquets necessaris per a PowerDNS-Admin al teu servidor. Pots instal·lar-los tots amb la següent comanda:
# apt install python3-dev python3-mysqldb python3-certbot-nginx libpq-dev gcc libmysqlclient-dev libsasl2-dev libffi-dev libldap2-dev libssl-dev libxml2-dev libxslt1-dev libxmlsec1-dev pkg-config -y
A continuació, també hauràs d’instal·lar Yarn al teu servidor.
Primer, descarrega i afegeix la clau GPG amb la següent comanda:
# curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | gpg --dearmor | tee /usr/share/keyrings/yarnpkg-archive-keyring.gpg > /dev/null
Després, afegeix el repositori de Yarn amb la següent comanda:
# echo "deb [signed-by=/usr/share/keyrings/yarnpkg-archive-keyring.gpg] https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list && curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
A continuació, actualitza el repositori i instal·la Yarn amb la següent comanda:
# apt update && apt install yarn nodejs -y && yarn --version
Després, descarrega l’última versió de PowerDNS-Admin des del repositori de Git:
# git clone https://github.com/ngoduykhanh/PowerDNS-Admin.git /opt/web/powerdns-admin
A continuació, crea l’entorn virtual per a PowerDNS-Admin amb la següent comanda:
# cd /opt/web/powerdns-admin && virtualenv -p python3 flask && pip3 install --upgrade setuptools
Després, activa l’entorn python3 i instal·la tots els paquets necessaris amb la següent comanda:
# . ./flask/bin/activate && pip3 install -r requirements.txt
Després, hauràs d’editar default_config.py i definir la teva base de dades en aquest arxiu:
# nano powerdnsadmin/default_config.py
Afegeix les següents línies:
SQLA_DB_USER = 'powerdns' SQLA_DB_PASSWORD = 'password' SQLA_DB_HOST = '127.0.0.1' SQLA_DB_NAME = 'powerdns' SQLALCHEMY_TRACK_MODIFICATIONS = True
Desa i tanca l’arxiu. Després, crea l’arxiu de l’esquema de base de dades:
# export FLASK_APP=powerdnsadmin/__init__.py && flask db upgrade
A continuació, genera els arxius d’actius utilitzant la comanda yarn com es mostra a continuació:
# yarn install --pure-lockfile && flask assets build
Hauries de veure el següent resultat:
Building bundle: generated/login.js [2025-09-17 12:18:27,629] [script.py:167] INFO - Building bundle: generated/login.js Building bundle: generated/validation.js [2025-09-17 12:18:27,643] [script.py:167] INFO - Building bundle: generated/validation.js Building bundle: generated/login.css [2025-09-17 12:18:27,645] [script.py:167] INFO - Building bundle: generated/login.css Building bundle: generated/main.js [2025-09-17 12:18:27,695] [script.py:167] INFO - Building bundle: generated/main.js Building bundle: generated/main.css [2025-09-17 12:18:27,768] [script.py:167] INFO - Building bundle: generated/main.css
A continuació, pots verificar el teu PowerDNS-Admin amb la següent comanda:
# ./run.py
Advertència
No utilitzis el servidor de desenvolupament en un entorn de producció. En canvi, utilitza un servidor WSGI de producció.
* Serving Flask app 'powerdnsadmin' * Debug mode: on [2025-09-17 12:18:46,655] [_internal.py:187] INFO - WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. * Running on all addresses (0.0.0.0) * Running on http://127.0.0.1:9191 * Running on http://161.22.44.39:9191 [2025-09-17 12:18:46,655] [_internal.py:187] INFO - Press CTRL+C to quit [2025-09-17 12:18:46,656] [_internal.py:187] INFO - * Restarting with stat [2025-09-17 12:18:47,354] [_internal.py:187] WARNING - * Debugger is active! [2025-09-17 12:18:47,358] [_internal.py:187] INFO - * Debugger PIN: 863-469-169
Primer, instal·la NGINX amb la següent comanda:
# apt install nginx -y
A continuació, hauràs de crear un fitxer de host virtual Nginx per a PowerDNS-Admin. Pots fer-ho amb la següent comanda:
# nano /etc/nginx/conf.d/powerdns-admin.conf
Afegeix les següents línies:
server {
listen *:80; server_name powerdns.example.com; # Canvia-ho pel teu domini
access_log /var/log/nginx/powerdns-admin.access.log;
error_log /var/log/nginx/powerdns-admin.error.log;
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
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;
}
location /static/ {
alias /opt/web/powerdns-admin/powerdnsadmin/static/;
access_log off;
}
}Guarda i tanca el fitxer quan hagis acabat. Després, reinicia el servei NGINX per aplicar tots els canvis:
# systemctl restart nginx
A continuació, hauràs de crear un fitxer de servei systemd per a PowerDNS-Admin. Així podràs iniciar, aturar i gestionar el servei PowerDNS-Admin. Pots fer-ho amb la següent comanda:
# nano /etc/systemd/system/powerdns.service
Afegeix les següents línies:
[Unit] Description=PowerDNS-Admin After=network.target [Service] User=root Group=root WorkingDirectory=/opt/web/powerdns-admin ExecStart=/opt/web/powerdns-admin/flask/bin/gunicorn -w 4 -b 127.0.0.1:8000 "powerdnsadmin:create_app()" [Install] WantedBy=multi-user.target
Guarda i tanca el fitxer quan hagis acabat. Després, inicia el servei PowerDNS-Admin i habilita'l perquè s'iniciï en l'arrencada amb la següent comanda:
# systemctl daemon-reload && systemctl enable powerdns && systemctl start powerdns
Finalment, utilitza certbot per obtenir i configurar el certificat SSL per HTTPS:
# certbot --nginx --redirect -d powerdns.example.com
Ara ja tens PowerDNS-Admin instal·lat i configurat. Pots obrir el teu navegador web a l’URL https://powerdns.example.com i seràs redirigit a la interfície web de PowerDNS-Admin. Recorda crear l’usuari i posteriorment, deshabilitar l’opció de registre de noves comptes des de la pantalla d’inici de sessió.
Conclusió
Felicitats! Has instal·lat i configurat amb èxit PowerDNS i PowerDNS-Admin al servidor Ubuntu 24.04. Ja pots allotjar els teus registres de domini i zona DNS mitjançant la interfície web de PowerDNS-Admin.
Tens alguna pregunta sobre aquest tutorial? No dubtis a contactar amb nosaltres. Estarem encantats d’ajudar-te 🙂