Instalação PowerDNS · 16 min read · Sep 08, 2025
Como Instalar PowerDNS e PowerAdmin no Rocky Linux

PowerDNS é um software de servidor DNS gratuito e de código aberto. Pode ser usado como um servidor de nomes autoritativo e recursivo DNS. O PowerDNS é escrito em C++ e suporta vários sistemas operacionais, incluindo BSD, Linux e macOS.
PowerDNS é um servidor DNS de alto desempenho que suporta vários tipos de backends, como BIND e backends RDBMS, como MySQL/MariaDB, PostgreSQL e Oracle database.
O servidor PowerDNS é de alto desempenho e pode lidar com dezenas de milhares de conexões simultâneas, suporta DNSSEC e oferece alta capacidade de script com Lua.
Neste guia, mostraremos como instalar o PowerDNS e o PowerDNS-Admin em um sistema Rocky Linux. Executaremos o PowerDNS com o backend de banco de dados MySQL/MariaDB e configuraremos o PowerDNS-Admin, que será usado como a ferramenta de gerenciamento baseada na web para o servidor PowerDNS.
Este guia também mostra a instalação de pacotes Python para projetos baseados em Flask e a configuração do Nginx e Gunicorn, que serão usados como um proxy reverso para a aplicação web PowerDNS-Admin.
Pré-requisitos
Para começar com este guia, você precisará dos seguintes requisitos:
- Um servidor Rocky Linux - Você pode usar o Rocky Linux v8 ou v9.
- Um usuário não-root com privilégios de administrador sudo/root.
Instalando e Configurando o Servidor de Banco de Dados MariaDB
O PowerDNS é um software de servidor DNS escalável que suporta vários backends, como PostgreSQL, MariaDB/MySQL e SQLite. Para grandes implantações, você deve considerar usar PostgreSQL ou MySQL/MariaDB como backend de banco de dados.
Agora você começará instalando e configurando o banco de dados MariaDB no servidor Rocky Linux. Você configurará o PowerDNS com o MariaDB como backend de banco de dados.
O repositório padrão do Rocky Linux fornece várias versões dos pacotes do servidor MariaDB. Execute o comando dnf abaixo para instalar o servidor de banco de dados MariaDB.
sudo dnf install mariadb-serverQuando solicitado para confirmação, digite y para confirmar e pressione ENTER para prosseguir.

Após a instalação do servidor MariaDB, execute o comando systemctl abaixo para iniciar e habilitar o serviço MariaDB.
sudo systemctl start mariadb
sudo systemctl enable mariadbAgora o servidor MariaDB deve estar em execução e deve estar habilitado. Execute o comando abaixo para verificar o serviço MariaDB e garantir que o serviço esteja em execução.
sudo systemctl status mariadbVocê verá a seguinte saída - O serviço MariaDB está em execução e está habilitado, o que significa que o serviço será executado automaticamente na inicialização.

Agora que o servidor MariaDB está em execução, você configurará e protegerá a instalação do MariaDB através da ferramenta de linha de comando ‘mysql_secure_installation’.
Execute o seguinte comando para começar a proteger a implantação do servidor MariaDB.
sudo mysql_secure_installationVocê será solicitado a fazer algumas configurações do servidor MariaDB.
- Configurar a senha root do MariaDB? Digite y para confirmar e digite a nova senha para seu servidor MariaDB, depois repita a senha.
- Desativar login remoto para o usuário root do MariaDB? Digite y para confirmar e desativá-lo.
- Remover o usuário anônimo padrão do MariaDB? Digite y para confirmar.
- Remover o banco de dados de teste padrão do MariaDB? Digite y novamente para confirmar.
- Por fim, recarregar as permissões das tabelas para aplicar novas alterações? Digite y para confirmar e o MariaDB recarregará todas as permissões e aplicará novas configurações.
Agora que você protegeu a implantação do MariaDB, você configurará um novo banco de dados MariaDB e um usuário para o PowerDNS.
Para começar, execute o comando mysql abaixo para fazer login no shell do MariaDB como usuário root do MariaDB.
sudo mysql -u root -pQuando solicitado pela senha, digite a senha do seu usuário root do MariaDB.
Em seguida, execute as seguintes consultas para criar um novo banco de dados MariaDB e um usuário. Neste exemplo, você criará um novo banco de dados pdns com o usuário pdnsadmin e a senha é ‘ password ‘.
CREATE DATABASE pdns;
GRANT ALL ON pdns.* TO pdnsadmin@localhost IDENTIFIED BY 'password';
FLUSH PRIVILEGES;
Agora execute as seguintes consultas para verificar as permissões do usuário MariaDB pdnsadmin@localhost. Isso mostrará a lista de permissões para o usuário MariaDB pdnsadmin@localhost.
SHOW GRANTS FOR pdnsadmin@localhost;Você verá a seguinte saída - O usuário MariaDB pdnsadmin@localhost tem permissões para o banco de dados PowerDNS pdns.

Agora digite ‘ quit ‘ para sair do shell do MariaDB.
Com o servidor MariaDB em execução, você instalará e configurará o servidor PowerDNS com o backend de banco de dados MariaDB.
Instalando e Configurando o PowerDNS
Após instalar o servidor de banco de dados MariaDB, você agora instalará o servidor PowerDNS e configurará o PowerDNS com o backend de banco de dados MariaDB.
Para sistemas operacionais baseados em RHEL, o PowerDNS está disponível no repositório EPEL. Portanto, antes de instalar o PowerDNS, você deve adicionar o repositório EPEL ao seu sistema.
Execute o seguinte comando dnf para instalar o repositório EPEL.
sudo dnf install epel-release -yApós adicionar o repositório EPEL, execute o seguinte comando dnf para instalar o PowerDNS e o backend MySQL do PowerDNS.
sudo dnf install pdns pdns-backend-mysqlQuando solicitado para confirmação, digite y para confirmar e pressione ENTER para prosseguir.

Após a instalação do PowerDNS ser concluída, execute o seguinte comando mysql para importar o esquema do banco de dados para o PowerDNS. O seguinte comando importará o esquema do banco de dados através do usuário MariaDB pdnsadmin para o banco de dados pdns.
sudo mysql -u pdnsadmin -p pdns < /usr/share/doc/pdns/schema.mysql.sqlDigite a senha para o usuário pdnsadmin e pressione ENTER para confirmar e prosseguir.
Em seguida, edite a configuração do PowerDNS ‘/etc/pdns/pdns.conf’ usando o seguinte comando do editor nano.
sudo nano /etc/pdns/pdns.confDescomente a configuração do backend MariaDB e altere os detalhes do nome do banco de dados, usuário e senha. Certifique-se de usar os detalhes corretos do banco de dados MariaDB que você criou.
#################################
# launch Quais backends lançar e a ordem para consultá-los
#
launch=gmysql
gmysql-host=localhost
gmysql-user=pdnsadmin
gmysql-password=password
gmysql-dbname=pdnsEm seguida, descomente a ‘api’ e altere o valor para ‘ yes ‘. Depois, descomente a opção ‘ api-key ‘ e altere a chave padrão. A seguinte API do PowerDNS será usada para gerenciar o servidor PowerDNS através da aplicação web PowerDNS-Admin.
#################################
# api Habilitar/desabilitar a API REST (incluindo ouvinte HTTP)
#
api=yes
#################################
# api-key Chave de autenticação pré-compartilhada estática para acesso à API REST
#
api-key=CHANGEMESalve o arquivo e saia do editor quando terminar.
Após configurar o servidor PowerDNS, execute o seguinte comando para verificar a configuração do PowerDNS.
pdns_server --daemon=no --guardian=no --loglevel=9Você verá a saída como a seguinte - A conexão do PowerDNS com o backend de banco de dados MariaDB foi bem-sucedida, agora você pode pressionar ‘Ctrl+c’ para encerrar o processo.

Agora execute o seguinte comando systemctl para iniciar e habilitar o serviço PowerDNS.
sudo systemctl start pdns
sudo systemctl enable pdnsPor fim, verifique o serviço PowerDNS para garantir que o PowerDNS esteja em execução e habilitado.
sudo systemctl status pdnsNa saída abaixo, você verá que o status atual do serviço PowerDNS está em execução e está habilitado, o que significa que será executado automaticamente durante o processo de inicialização.

Neste ponto, você concluiu a instalação do servidor PowerDNS. Você começará a instalação do PowerDNS-Admin, que será usado como a interface de gerenciamento front-end web para o servidor PowerDNS.
Instalando o PowerDNS-Admin
Com o PowerDNS em execução, você agora instalará e configurará o PowerDNS-Admin no servidor Rocky Linux. O PowerDNS-Admin é uma aplicação web baseada em Python Flask, portanto, a instalação do PowerDNS-Admin é bastante semelhante à instalação do framework web Flask.
Abaixo estão algumas etapas que você deve seguir para instalar o PowerDNS-Admin no Rocky Linux:
- Instalando Dependências de Pacote
- Configurando o Ambiente Virtual Python
- Instalando Dependências Python
- Configurando o PowerDNS-Admin com o Banco de Dados MariaDB
- Gerando Esquema de Banco de Dados e Construindo Arquivos Estáticos
Agora vamos começar a instalação do PowerDNS-Admin.
Instalando Dependências de Pacote
A primeira etapa para instalar o PowerDNS-Admin é instalar dependências de pacote, como Python3, Pip, Node.js e Yarn.
Antes de começar, execute o comando dnf abaixo para habilitar o repositório ‘ powertools ‘ no seu sistema Rocky Linux.
sudo dnf config-manager --set-enabled powertoolsApós habilitar o repositório ‘powertools’, instale os pacotes Python via o comando dnf abaixo.
sudo dnf install python3 python3-devel python3-pip python3-xmlsec gcc git mariadb-devel openldap-devel xmlsec1-devel xmlsec1-openssl libtool-ltdl-develQuando solicitado para confirmação, digite y e pressione ENTER para prosseguir.

Em seguida, adicione os repositórios Node.js e Yarn ao seu sistema através do comando abaixo. O pacote Node.js e Yarn será usado para gerar arquivos estáticos para a aplicação web PowerAdmin. Este exemplo usa 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
Após adicionar os repositórios, execute o comando dnf abaixo para instalar o gerenciador de pacotes Node.js e Yarn.
sudo dnf install nodejs yarnDigite y e pressione ENTER quando solicitado para a instalação.

Além disso, quando solicitado para confirmar a chave GPG, digite y e pressione ENTER.

Em seguida, execute o comando pip3 abaixo para atualizar o pacote pip do Python e instalar o virtualenv no seu sistema.
pip3 install -U pip
pip3 install -U virtualenvO pip do Python e o virtualenv agora serão instalados no diretório ‘ /usr/local/bin ‘. Adicione o diretório ‘ /usr/local/bin ‘ à variável de ambiente $PATH do sistema através do comando abaixo.
echo "export PATH="/usr/local/bin:$PATH"" >> ~/.bashrcAgora aplique as novas alterações no arquivo ‘ ~/.bashrc’ usando o comando abaixo. Você deve agora executar os comandos ‘ pip ‘ e ‘ virtualenv ‘.
source ~/.bashrcConfigurando o Ambiente Virtual Python
Com as dependências de pacote instaladas, você agora baixará o código-fonte do PowerDNS-Admin e configurará o ambiente virtual Python para o PowerDNS-Admin.
Clone o código-fonte do PowerDNS-Admin para o diretório ‘/opt/powerdns-admin’ usando o seguinte comando git.
git clone https://github.com/ngoduykhanh/PowerDNS-Admin.git /opt/powerdns-adminApós o download do código-fonte, mude o diretório de trabalho para ‘ /opt/powerdns-admin ‘ e crie um novo ambiente virtual Python ‘ flask ‘.
cd /opt/powerdns-admin
virtualenv -p python3 flaskAgora ative o ambiente virtual Python ‘ flask ‘ através do comando abaixo.
source flask/bin/activateQuando ativado, você deve agora ver o prompt se tornar algo como ‘ (flask) [user@hostname /directory/path]# ‘.

A partir daqui, seu ambiente de trabalho deve sempre estar no ambiente virtual Python ‘ flask ‘.
Instalando Dependências Python
Após configurar o ambiente virtual Python e ativá-lo, você instalará as dependências Python através do comando pip.
Execute o seguinte comando pip para instalar as dependências Python para o PowerDNS-Admin.
pip install python-dotenv
pip install -r requirements.txtAgora a instalação começará - Isso instalará as dependências Python que são necessárias para o PowerDNS-Admin, que estão armazenadas no arquivo ‘ requirements.txt ‘.

Agora que você instalou as dependências Python, está pronto para configurar o PowerDNS-Admin com o banco de dados MariaDB.
Configurando o PowerDNS-Admin com o Banco de Dados MariaDB
Com as dependências Python instaladas, você agora configurará o PowerDNS-Admin com o banco de dados MariaDB. Os detalhes do banco de dados para o PowerDNS-Admin serão os mesmos do banco de dados do servidor PowerDNS.
Agora edite o arquivo ‘ /opt/powerdns-admin/powerdnsadmin/default_config.py ‘ usando o seguinte comando do editor nano.
nano /opt/powerdns-admin/powerdnsadmin/default_config.pyAltere a configuração como abaixo.
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 = TrueSalve o arquivo e saia do editor quando terminar.
Gerando Esquema de Banco de Dados e Construindo Arquivos Estáticos
Após configurar o banco de dados MariaDB no PowerDNS-Admin, você migrará o banco de dados e gerará arquivos estáticos para o PowerDNS-Admin.
Primeiro, execute o seguinte comando para migrar o banco de dados do PowerDNS-Admin. Isso irá inserir um novo esquema de banco de dados no banco de dados que será usado para o PowerDNS-Admin.
export FLASK_APP=powerdnsadmin/__init__.py
flask db upgradeAbaixo está a saída que você obterá quando a migração do banco de dados for concluída.

Após a migração do banco de dados ser concluída, execute o seguinte comando para gerar arquivos estáticos para o PowerDNS-Admin.
yarn install --pure-lockfile
flask assets buildAbaixo você pode ver a instalação de algumas dependências JavaScript através do gerenciador de pacotes yarn e o processo de geração de arquivos estáticos para o PowerDNS-Admin.

Quando os arquivos estáticos forem gerados, execute o seguinte comando para desativar o ambiente virtual Python.
deactivateNeste ponto, você concluiu a instalação básica do PowerDNS-Admin com o servidor de banco de dados MariaDB. Você agora pode iniciar a aplicação PowerDNS-Admin via linha de comando, mas também pode executar o PowerDNS-Admin como um serviço systemd.
Configurando o Serviço Systemd para o PowerDNS-Admin
Nesta etapa, você configurará um novo arquivo de serviço systemd para a aplicação PowerDNS-Admin. Isso permite que você gerencie e mantenha facilmente o PowerDNS-Admin através do comando systemd. Além disso, isso simplificará a configuração do PowerDNS-Admin.
Para começar, crie um novo arquivo de serviço systemd ‘/etc/systemd/system/powerdns-admin.service’ usando o seguinte comando do editor nano.
sudo nano /etc/systemd/system/powerdns-admin.serviceAdicione a configuração abaixo ao arquivo. Com esta configuração, você executará a aplicação PowerDNS-Admin via o gunicorn e executará como o usuário e grupo ‘ pdns ‘. Além disso, o PowerDNS-Admin será executado com o arquivo de 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.targetSalve o arquivo e saia do editor quando terminar.
Em seguida, crie um novo arquivo de socket systemd para o PowerDNS-Admin ‘ /etc/systemd/system/powerdns-admin.socket ‘ usando o editor nano abaixo.
sudo nano /etc/systemd/system/powerdns-admin.socketAdicione a seguinte configuração ao arquivo.
[Unit]
Description=PowerDNS-Admin socket
[Socket]
ListenStream=/run/powerdns-admin/socket
[Install]
WantedBy=sockets.targetSalve o arquivo e saia do editor quando terminar.
Agora crie um novo arquivo de configuração ‘/etc/tmpfiles.d/powerdns-admin.conf’ usando o comando do editor nano abaixo.
sudo nano /etc/tmpfiles.d/powerdns-admin.confAdicione a seguinte configuração ao arquivo.
d /run/powerdns-admin 0755 pdns pdns -Salve o arquivo e saia do editor quando terminar.
Após adicionar um novo arquivo de serviço systemd e nova configuração, execute o seguinte comando para recarregar o gerenciador systemd e aplicar novos arquivos de serviço no systemd.
sudo systemctl daemon-reloadAgora inicie e habilite o serviço PowerDNS-Admin através do seguinte comando systemctl. O PowerDNS-Admin deve agora estar em execução com gunicorn e abrir o arquivo de socket que está disponível no diretório ‘ /run/powerdns-admin/ ‘.
sudo systemctl start powerdns-admin.socket powerdns-admin.service
sudo systemctl enable powerdns-admin.socket powerdns-admin.service
Por fim, execute o seguinte comando para verificar o serviço PowerDNS-Admin e garantir que o serviço esteja em execução.
sudo systemctl status powerdns-admin.service powerdns-admin.socketNa saída abaixo, o powerdns-admin.service e o powerdns-admin.socket estão em execução e ambos estão habilitados. Ambos os serviços serão executados automaticamente na inicialização do sistema.

Instalando o Nginx como um Proxy Reverso para o PowerDNS-Admin
Nesta etapa, você configurará o Nginx como um proxy reverso para o PowerDNS-Admin.
Execute o seguinte comando dnf para instalar o Nginx no seu servidor Rocky Linux. Quando solicitado, digite y para confirmar e pressione ENTER para prosseguir.
sudo dnf install nginxEm seguida, crie um novo bloco de servidor Nginx ‘/ etc/nginx/conf.d/pdns.conf ‘ usando o seguinte comando do editor nano.
sudo nano /etc/nginx/conf.d/pdns.confAdicione a seguinte configuração ao arquivo e certifique-se de alterar o nome do domínio. Este exemplo usa o domínio ‘pdns.howtoforge.local’ para o 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://;
}
}Salve o arquivo e saia do editor quando terminar.
Em seguida, execute o seguinte comando para verificar a configuração do Nginx e garantir que a configuração esteja correta. Você deve ver a mensagem de saída como ‘ syntax ok - test is successful ‘.
sudo nginx -tAgora execute o seguinte comando systemctl para iniciar e habilitar o serviço Nginx.
sudo systemctl start nginx
sudo systemctl enable nginx
Por fim, verifique o serviço Nginx através do seguinte comando para garantir que o serviço esteja em execução.
sudo systemctl status nginxVocê deve ver a saída que o serviço nginx está em execução e está habilitado. Com isso, o serviço Nginx será executado automaticamente na inicialização do sistema.

Acessando a Instalação do PowerDNS-Admin
Abra o navegador da web e visite o nome de domínio da sua instalação do PowerDNS-Admin (ou seja: https://pdns.howtoforge.local), e você deve obter a página de login do PowerDNS-Admin.
Clique no link ‘ Criar uma conta ‘ para configurar um novo usuário administrador para o PowerDNS-Admin.

Agora insira os detalhes do novo usuário, e-mail e senha. Em seguida, clique em ‘ Registrar ‘ para confirmar.

Após o usuário administrador ser criado, você será redirecionado novamente para a página de login do PowerDNS-Admin. Faça login com seu novo usuário administrador e senha, e clique em ‘ Entrar ‘.

Agora você deve obter o painel do PowerDNS-Admin. O PowerDNS-Admin está em execução, mas ainda não está conectado ao servidor PowerDNS.
Para configurar o servidor PowerDNS com o PowerDNS-Admin, você deve adicionar a chave da API que você configurou através do servidor PowerDNS ao PowerDNS-Admin.
Insira os detalhes da API do servidor PowerDNS na seção ‘ Configurações PDNS ‘ e clique em ‘ Atualizar ‘.

Quando o PowerDNS-Admin e o servidor PowerDNS estiverem conectados via API, seu painel deve parecer com a seguinte captura de tela.

A partir daqui, você pode agora adicionar facilmente novos registros DNS ou modificar registros DNS existentes facilmente através do painel do PowerDNS-Admin.
Conclusão
Neste guia, você aprendeu como instalar um servidor PowerDNS com banco de dados MySQL/MariaDB em um servidor Rocky Linux. Você também aprendeu a implantação básica do banco de dados MariaDB no Rocky Linux. Por fim, você aprendeu a instalar e configurar o PowerDNS-Admin, que será usado como a ferramenta de gerenciamento baseada na web para o servidor PowerDNS. O PowerDNS-Admin é executado com Nginx como o proxy reverso e backend de banco de dados MariaDB.
Com o servidor PowerDNS e o PowerDNS-Admin em execução, você agora pode gerenciar seu servidor DNS através do painel de administração web. Você pode adicionar, editar ou excluir registros DNS através do painel de administração do PowerDNS-Admin.
Receba novas postagens na sua caixa de entrada
Sem spam. Cancele a assinatura a qualquer momento.