sudo apt install nginx python3-dev python3-venv git libmysqlclient-dev libsasl2-dev libldap2-dev libssl-dev libxml2-dev libxslt1-dev libxmlsec1-dev libffi-dev pkg-config apt-transport-https build-essential curl
nodejs
curl -sL https://deb.nodesource.com/setup_14.x | sudo bash -
sudo apt install -y nodejs
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
sudo apt-get update && sudo apt-get install -y yarn
git clone https://github.com/ngoduykhanh/PowerDNS-Admin.git powerdns-admin
cd powerdns-admin
python3 -m venv venv
source ./venv/bin/activate
python -m pip install -U pip wheel setuptools
python -m pip install -r requirements.txt
perl -pe "s/#import urllib.parse/import urllib.parse/;s/SQLA_DB_USER = 'pda'/SQLA_DB_USER = 'pdns'/;s/SQLA_DB_PASSWORD = 'changeme'/SQLA_DB_PASSWORD = 'pdns'/;s/SQLA_DB_NAME = 'pda'/SQLA_DB_NAME = 'pdns'/;" configs/development.py > configs/production.py
diff configs/development.py configs/production.py
SECRET_KEYをURLエンコードに変えないといけないらしい。エラーが出る。なぜ?
SECRET_KEY = '\x19\xc7\xd8\xa7$\xb6P*\xc6\xb8\xa1E\x90P\x12\x95'
export FLASK_CONF=../configs/production.py
export FLASK_APP=powerdnsadmin/__init__.py
flask db upgrade
yarn install --pure-lockfile
flask assets build
./run.py
createで最初に作成したアカウントが管理者アカウントになる
sudo mv powerdns-admin /opt/web/.
cat << 'EOF' | sudo tee /etc/systemd/system/powerdns-admin.service
[Unit]
Description=PowerDNS-Admin
Requires=powerdns-admin.socket
After=network.target
[Service]
User=root
Group=root
PIDFile=/run/powerdns-admin/pid
WorkingDirectory=/opt/web/powerdns-admin
ExecStartPre=/bin/bash -c '$$(mkdir -p /run/powerdns-admin/)'
ExecStart=/opt/web/powerdns-admin/venv/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.target
EOF
sudo systemctl edit --force powerdns-admin.service
Edit画面で以下2行を追加
[Service]
Environment="FLASK_CONF=../configs/production.py"
こんな感じ
### Editing /etc/systemd/system/powerdns-admin.service.d/override.conf
### Anything between here and the comment below will become the new contents of the file
[Service]
Environment="FLASK_CONF=../configs/production.py"
socket
cat << EOF | sudo tee /etc/systemd/system/powerdns-admin.socket
[Unit]
Description=PowerDNS-Admin socket
[Socket]
ListenStream=/run/powerdns-admin/socket
[Install]
WantedBy=sockets.target
EOF
cat << EOF | sudo tee /etc/tmpfiles.d/powerdns-admin.conf
d /run/powerdns-admin 0755 pdns pdns -
EOF
sudo systemctl daemon-reload
sudo systemctl start powerdns-admin.service powerdns-admin.socket
cat << 'EOF' | sudo tee /etc/nginx/sites-available/powerdns
server {
listen *:80;
server_name localhost;
index index.html index.htm index.php;
root /opt/web/powerdns-admin;
access_log /var/log/nginx/powerdns-admin.local.access.log combined;
error_log /var/log/nginx/powerdns-admin.local.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 /opt/web/powerdns-admin/powerdnsadmin;
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 off;
}
}
EOF
sudo nginx -t
sudo rm /etc/nginx/sites-enabled/default
sudo ln -s /etc/nginx/sites-available/powerdns /etc/nginx/sites-enabled/.
sudo chown -R www-data. /opt/web/powerdns-admin
sudo systemctl restart powerdns-admin.service powerdns-admin.socket
sudo systemctl restart nginx
目次
Outline
API
login web
API Keys > Add Key+
– Role: Administrator > Crate Key
* Copy API Key from Pop up [Your API Key] and confirm
– bWFJZzl4TDgzd1NCMnhn
sudo vi /etc/powerdns/pdns.conf
api=yes
api-key=bWFJZzl4TDgzd1NCMnhn
webserver=yes
sudo systemctl restart pdns pdns-recursor