在Debian 11/Debian 10 上轻松安装 PowerDNS Admin

在本教程中,您将学习如何在 Debian 11/Debian 10 上轻松安装 PowerDNS  Admin。PowerDNS Admin 是PowerDNS的 Web 管理界面。它使您能够从 Web 浏览器轻松创建和管理 DNS 区域。

PowerDNS Admin 提供用于管理 PowerDNS 的高级功能。这些包括;

  • 多域管理
  • 域模板
  • 用户管理
  • 基于域的用户访问管理
  • 用户活动记录
  • 支持本地 DB / SAML / LDAP / Active Directory 用户认证
  • 支持 Google / Github / Azure / OpenID OAuth
  • 支持双因素认证(TOTP)
  • 仪表板和 pdns 服务统计信息
  • DynDNS 2 协议支持
  • 直接使用 IPv6 地址编辑 IPv6 PTR(不再编辑文字地址!)
  • 用于操作区域和记录的有限 API

在 Debian 11/Debian 10 上轻松安装 PowerDNS Admin

在 Debian 11/Debian 10 上安装和设置 PowerDNS

按照以下链接在 Debian 11/Debain 10 上安装 PowerDNS:

在 Debian 11/Debian 10 上轻松安装和设置 PowerDNS

注意:我们在已安装 PowerDNS 的同一台服务器上安装了 PowerDNS Admin。

安装所需的软件包依赖项

安装 Python 3 库和开发工具

apt install python3-dev

安装各种必需的构建工具和包依赖项。

apt install libsasl2-dev libldap2-dev libssl-dev libxml2-dev libxslt1-dev libxmlsec1-dev libffi-dev pkg-config apt-transport-https virtualenv build-essential libmariadb-dev git python3-flask -y

在 Debian 10/Debian 11 上安装 NodeJS;

apt install curl sudo git -y
curl -sL https://deb.nodesource.com/setup_17.x | sudo -E bash -
apt install -y nodejs

在 Debian 11/Debian 10 上安装 Yarn

curl -sL https://dl.yarnpkg.com/debian/pubkey.gpg | gpg --dearmor | sudo tee /usr/share/keyrings/yarnkey.gpg >/dev/null
echo "deb [signed-by=/usr/share/keyrings/yarnkey.gpg] https://dl.yarnpkg.com/debian stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
apt update
apt install yarn -y

安装 Nginx HTTP 服务器 Debian 10/Debian 11

apt install nginx -y

将 PowerDNS 管理源代码克隆到 Web 根目录

将 PowerDNS Admin git 源代码克隆到您的 Nginx Web 根目录。

在此设置中,我们使用 , /var/www/html/pdns作为我们的 PowerDNS Admin Web 根目录。您的情况可能有所不同。

git clone https://github.com/ngoduykhanh/PowerDNS-Admin.git /var/www/html/pdns

创建 PowerDNS 管理 Virtualenv

导航到 PowerDNS Admin Web 根目录并创建一个 virtualenv。

cd /var/www/html/pdns/
virtualenv -p python3 flask

接下来,激活您的 Python 3 虚拟环境并安装所需的 Python 3 库

source ./flask/bin/activate
pip install -r requirements.txt

配置 PowerDNS 管理数据库连接

退出虚拟环境。

deactivate

编辑默认的 PowerDNS 管理配置文件$WEB_ROOT/powerdnsadmin/default_config.py,以定义数据库连接详细信息。

将 $WEB_ROOT 替换为您的 Web 根目录的路径。

vim /var/www/html/pdns/powerdnsadmin/default_config.py

在基本的App configs上,您可以替换SALT和SECRET_KEY键,设置绑定地址和端口;

### BASIC APP CONFIG
SALT = 'xohDoozee8Zuneekooch9ohrieghei'
SECRET_KEY = 'hohru1aethaeyahpheH7Gaathaikah'
BIND_ADDRESS = '192.168.58.22'
PORT = 9191
HSTS_ENABLED = False
OFFLINE_MODE = False

在数据库配置上,配置您的 PowerDNS 数据库连接详细信息。请注意,我们正在使用在设置 PowerDNS 时已创建的详细信息 ,如我们的指南中所定义

### DATABASE CONFIG
SQLA_DB_USER = 'pdnsadmin'
SQLA_DB_PASSWORD = 'PdnSPassW0rd'
SQLA_DB_HOST = '127.0.0.1'
SQLA_DB_NAME = 'kifarunixdemopdns'
SQLALCHEMY_TRACK_MODIFICATIONS = True

保存并退出配置。

接下来,重新激活 virtualenv 运行数据库迁移;

cd /var/www/html/pdns/
source ./flask/bin/activate
export FLASK_APP=powerdnsadmin/__init__.py
flask db upgrade

上述命令完成后,使用yarn生成资产文件;

yarn install --pure-lockfile
flask assets build

退出虚拟环境。

deactivate

运行 PowerDNS 管理员

设置完成后,您可以在独立模式下运行 PowerDNS admin,方法是run.py 在 Web 根目录中执行 。

在此设置中,我们将使用 Nginx Web 服务器访问 PowerDNS Admin。

启用 PowerDNS API 访问

“ PowerDNS 权威服务器具有一个公开 JSON/REST API 的内置网络服务器。该 API 允许控制多个功能、读取统计数据和修改区域内容、元数据和 DNSSEC 密钥材料“。

  • 打开 PowerDNS 配置文件
  • 启用 API
  • 生成并设置API Key;
vim /etc/powerdns/pdns.conf
#################################
# api   Enable/disable the REST API (including HTTP listener)
#
# api=no
api=yes

#################################
# api-key       Static pre-shared authentication key for access to the REST API
#
# api-key=
api-key=ahqu4eiv2vaideep8AQu9nav5Aing0

保存退出文件,重启PowerDNS;

systemctl restart pdns

创建 PowerDNS 管理 Nginx 站点

使用以下内容创建 PowerDNS Admin Nginx 站点。相应地替换 web 根目录。

vim /etc/nginx/conf.d/pdns-admin.conf
server {
  listen	*:80;
  server_name               pdnsadmin.kifarunix-demo.com;

  index                     index.html index.htm index.php;
  root                      /var/www/html/pdns;
  access_log                /var/log/nginx/pdnsadmin_access.log combined;
  error_log                 /var/log/nginx/pdnsadmin_error.log;

  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 $host;
  proxy_set_header                  X-Real-IP $remote_addr;
  proxy_set_header                  X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_headers_hash_bucket_size    64;

  location ~ ^/static/  {
    include  /etc/nginx/mime.types;
    root /var/www/html/pdns/powerdnsadmin;

    location ~*  \.(jpg|jpeg|png|gif)$ {
      expires 365d;
    }

    location ~* ^.+.(css|js)$ {
      expires 7d;
    }
  }

  location / {
    proxy_pass            http://unix:/run/pdnsadmin/socket;
    proxy_read_timeout    120;
    proxy_connect_timeout 120;
    proxy_redirect        off;
  }

}

保存并退出文件。

删除默认的 Nginx 默认站点。

mv /etc/nginx/sites-enabled/default{,.old}

运行配置语法检查。

nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

将 Pdns Admin web 根目录的所有权设置为 web 用户;

chown -R www-data: /var/www/html/pdns

重启Nginx;

systemctl restart nginx

创建 PowerDNS Admin Systemd 服务单元

为了能够将 PowerDNS Admin 作为 systemd 服务运行,请通过运行以下命令创建一个单元文件;

cat > /etc/systemd/system/pdnsadmin.service << 'EOL'           
[Unit]
Description=PowerDNS-Admin
Requires=pdnsadmin.socket
After=network.target

[Service]
PIDFile=/run/pdnsadmin/pid
User=pdns
Group=pdns
WorkingDirectory=/var/www/html/pdns
ExecStart=/var/www/html/pdns/flask/bin/gunicorn --pid /run/pdnsadmin/pid --bind unix:/run/pdnsadmin/socket 'powerdnsadmin:create_app()'
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s TERM $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target
EOL
cat > /etc/systemd/system/pdnsadmin.socket << 'EOL'
[Unit]
Description=PowerDNS-Admin socket

[Socket]
ListenStream=/run/pdnsadmin/socket

[Install]
WantedBy=sockets.target
EOL
echo "d /run/pdnsadmin 0755 pdns pdns -" >> /etc/tmpfiles.d/pdnsadmin.conf
mkdir /run/pdnsadmin/
chown -R pdns: /run/pdnsadmin/
chown -R pdns: /var/www/html/pdns/powerdnsadmin/

重新加载系统配置并启动并启用 PowerDNS Admin 服务以在系统启动时运行;

systemctl enable --now pdnsadmin.service pdnsadmin.socket

检查状态;

systemctl status pdnsadmin.service pdnsadmin.socket
● pdnsadmin.service - PowerDNS-Admin
   Loaded: loaded (/etc/systemd/system/pdnsadmin.service; enabled; vendor preset: enabled)
   Active: active (running) since Sun 2021-11-28 02:00:51 EST; 10s ago
 Main PID: 13859 (gunicorn)
Tasks: 2 (limit: 2359)
   Memory: 65.7M
   CGroup: /system.slice/pdnsadmin.service
           ├─13859 /var/www/html/pdns/flask/bin/python3 /var/www/html/pdns/flask/bin/gunicorn --pid /run/pdnsadmin/pid --bind unix:/run/pdnsadmin/socket powerdnsadmin:creat
           └─13862 /var/www/html/pdns/flask/bin/python3 /var/www/html/pdns/flask/bin/gunicorn --pid /run/pdnsadmin/pid --bind unix:/run/pdnsadmin/socket powerdnsadmin:creat

Nov 28 02:00:51 debian systemd[1]: Started PowerDNS-Admin.
Nov 28 02:00:51 debian gunicorn[13859]: [2021-11-28 02:00:51 -0500] [13859] [INFO] Starting gunicorn 20.0.4
Nov 28 02:00:51 debian gunicorn[13859]: [2021-11-28 02:00:51 -0500] [13859] [INFO] Listening at: unix:/run/pdnsadmin/socket (13859)
Nov 28 02:00:51 debian gunicorn[13859]: [2021-11-28 02:00:51 -0500] [13859] [INFO] Using worker: sync
Nov 28 02:00:51 debian gunicorn[13859]: [2021-11-28 02:00:51 -0500] [13862] [INFO] Booting worker with pid: 13862

● pdnsadmin.socket - PowerDNS-Admin socket
   Loaded: loaded (/etc/systemd/system/pdnsadmin.socket; enabled; vendor preset: enabled)
   Active: active (running) since Sun 2021-11-28 02:00:51 EST; 10s ago
   Listen: /run/pdnsadmin/socket (Stream)
   CGroup: /system.slice/pdnsadmin.socket

Nov 28 02:00:51 debian systemd[1]: Listening on PowerDNS-Admin socket.

访问 PowerDNS 管理 Web 界面

在防火墙上打开 Nginx 以允许外部访问;

ufw allow "Nginx Full"

根据我们上面的配置,您可以通过地址访问 PowerDNS Admin Web 界面 http://server-hostname. 您应该能够看到 PowerDNS Admin 登录屏幕。 ( 如果没有,请检查 PowerDNS 管理服务的状态或 Nginx 错误日志以获取提示 )。

图片[1]-在Debian 11/Debian 10 上轻松安装 PowerDNS Admin-下雪啦资源网

创建 PowerDNS Admin 管理用户帐户

单击 创建帐户 以创建第一个 PowerDNS Admin 管理员用户。 输入用户详细信息。

图片[2]-在Debian 11/Debian 10 上轻松安装 PowerDNS Admin-下雪啦资源网

单击 注册 以创建一个帐户。

之后,使用您提供的用户详细信息登录。 成功登录后,您应该登陆 PowerDNS 管理界面。

您将看到一条错误消息,要求您完成 API 设置。

为了让 PowerDNS Admin 能够连接到 PowerDNS 并对其进行管理,您需要提供:

  • API 密钥 URL,通常, http://127.0.0.1:8081默认情况下
  • 您在 PowerDNS 配置文件中定义的 API 密钥。

图片[3]-在Debian 11/Debian 10 上轻松安装 PowerDNS Admin-下雪啦资源网

单击 更新 ,错误应该就会消失。

单击 仪表板 以转到 PowerDNS 管理仪表板。

图片[4]-在Debian 11/Debian 10 上轻松安装 PowerDNS Admin-下雪啦资源网

如您所见,我们已经在之前的指南中添加了 DNS 记录。

如果您单击 下的 Hosted Domains 域名 (在上面的屏幕截图中突出显示),您应该是我们已经添加的记录;

图片[5]-在Debian 11/Debian 10 上轻松安装 PowerDNS Admin-下雪啦资源网

那是前向区域记录。

如果您单击 Dashboard > Hosted Domains in-addr 下 的反向区域,您应该会看到反向区域记录。

图片[6]-在Debian 11/Debian 10 上轻松安装 PowerDNS Admin-下雪啦资源网

您现在可以轻松管理您的 DNS 记录。

我们关于如何在 Debian 11/Debian 10 上轻松安装 PowerDNS Admin 的教程到此结束。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容