在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 错误日志以获取提示 )。

创建 PowerDNS Admin 管理用户帐户

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

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

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

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

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

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

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

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

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

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

那是前向区域记录。

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

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

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

 收藏 (0) 打赏

您可以选择一种方式赞助本站

支付宝扫一扫赞助

微信钱包扫描赞助

未经允许不得转载:番茄网 » 在Debian 11/Debian 10 上轻松安装 PowerDNS Admin

分享到: 生成海报

评论 抢沙发

  • QQ号
  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

像番茄一样 表里如一

表里如一表里如一
切换注册

登录

忘记密码 ?

切换登录

注册

我们将发送一封验证邮件至你的邮箱, 请正确填写以完成账号注册和激活