PowerDNS-Admin (Ubuntu)

Aus Tutorials
Zur Navigation springen Zur Suche springen

Voraussetzungen

Git-Client siehe hier: Git


Sonstige benötigte Pakete:

Ob das Package ibmariadbclient-dev oder libmysqlclient-dev hängt von der verwendetetn Datenbank ab.

sudo apt-get install -y python3-dev libmariadbclient-dev libsasl2-dev libldap2-dev libssl-dev \
libxml2-dev libxslt1-dev libxmlsec1-dev libffi-dev pkg-config apt-transport-https virtualenv \
build-essential


NodeJs:

sudo curl -sL https://deb.nodesource.com/setup_10.x | sudo bash -
sudo apt-get install -y nodejs


Yarn:

curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
sudo apt-get update -y
sudo apt-get install -y yarn

Installation

Datenbank

mysql -u root -p
create database if not exists powerdns_admin;
grant all on powerdns_admin.* to 'powerdns'@'localhost'; 

Repository klonen

Um git nicht als root ausführen zu müssen, das Installationsverzeichnis vorab erstellen und dem eigenen Benutzer zuweisen:

sudo mkdir -p /opt/web/powerdns-admin	
sudo chown <user>:<user> /opt/web/powerdns-admin
git clone https://github.com/ngoduykhanh/PowerDNS-Admin.git /opt/web/powerdns-admin

Installieren

cd /opt/web/powerdns-admin/
virtualenv -p python3 flask
source ./flask/bin/activate
pip install -r requirements.txt


vi /opt/web/powerdns-admin/powerdnsadmin/default_config.py
SQLA_DB_USER = 'powerdns'
SQLA_DB_PASSWORD = '<password>'
SQLA_DB_HOST = '127.0.0.1'
SQLA_DB_NAME = 'powerdns_admin'
export FLASK_APP=powerdnsadmin/__init__.py
flask db upgrade
yarn install --pure-lockfile
flask assets build


./run.py

API-Key

Siehe dazu PowerDNS Authoritative Server (Ubuntu)#API für PowerDNS-Admin.

Konfiguration

Apache

/etc/apache2/mods-available/wsgi.load

sudo touch /etc/apache2/mods-available/wsgi.load
sudo chown pdnsadmin:pdnsadmin /etc/apache2/mods-available/wsgi.load
sudo chown pdnsadmin:pdnsadmin /usr/lib/apache2/modules/mod_wsgi-py37.cpython-37m-arm-linux-gnueabihf.so
sudo apt install apache2-dev
cd /opt/web/powerdns-admin/
virtualenv -p python3 flask
source ./flask/bin/activate  552  
pip3 install mod-wsgi
mod_wsgi-express install-module > /etc/apache2/mods-available/wsgi.load
sudo a2enmod wsgi
sudo systemctl restart apache2

/etc/apache2/mods-available/wsgi.load

sudo addgroup pdnsadmin
sudo adduser pdnsadmin --ingroup pdnsadmin


sudo chown root:root /usr/lib/apache2/modules/mod_wsgi-py37.cpython-37m-arm-linux-gnueabihf.so

/etc/apache2/sites-available/powerdns.conf

sudo vi /etc/apache2/sites-available/powerdns.conf
<VirtualHost *:80>
        ServerName powerdns1.kirner.or.at
        ServerAlias powerdns1.kirner.or.at
        Redirect / https://powerdns1.kirner.or.at
</VirtualHost>

/etc/apache2/sites-available/powerdns-ssl.conf

sudo vi /etc/apache2/sites-available/powerdns-ssl.conf
<VirtualHost *:443>
        ServerName powerdns1.kirner.or.at
        ServerAlias [fe80::1]
        ServerAdmin admin@kirner.or.at

        SSLEngine On
        SSLCertificateFile /etc/ssl/certs/powerdns.crt
        SSLCertificateKeyFile /etc/ssl/private/apache.key

        ErrorLog /var/log/apache2/error-powerdns1.kirner.or.at.log
        CustomLog /var/log/apache2/access-powerdns1.kirner.or.at.log combined

        DocumentRoot /opt/web/powerdns-admin/

        WSGIDaemonProcess pdnsadmin user=pdnsadmin group=pdnsadmin threads=5
        WSGIScriptAlias / /opt/web/powerdns-admin/powerdnsadmin.wsgi

        # pass BasicAuth on to the WSGI process
        WSGIPassAuthorization On

        <Directory "/opt/web/powerdns-admin/">
                WSGIProcessGroup pdnsadmin
                WSGIApplicationGroup %{GLOBAL}

                AllowOverride None
                Options +ExecCGI +FollowSymLinks
                SSLRequireSSL
                AllowOverride None
                Require all granted
        </Directory>
</VirtualHost>

/opt/web/powerdns-admin/powerdnsadmin.wsgi

sudo -u pdnsadmin vi /opt/web/powerdns-admin/powerdnsadmin.wsgi
#!/usr/bin/env python3
import sys
sys.path.insert(0, '/opt/web/powerdns-admin')

from powerdnsadmin import create_app
application = create_app()

Konfigurationen neu laden

cd /etc/apache2/sites-available
sudo a2ensite powerdns.conf
sudo a2ensite powerdns-ssl.conf
sudo service apache2 reload

Links

https://github.com/ngoduykhanh/PowerDNS-Admin/wiki/WSGI-Apache-example

Links

https://github.com/ngoduykhanh/PowerDNS-Admin/wiki/Running-PowerDNS-Admin-on-Ubuntu-or-Debian

https://computingforgeeks.com/install-powerdns-and-powerdns-admin-on-ubuntu-18-04-debian-9-mariadb-backend/

https://blog.jonaharagon.com/installing-powerdns-admin-on-ubuntu-18-04/

https://github.com/ngoduykhanh/PowerDNS-Admin


Zurück zu PowerDNS