powerdns-admin/docs/wiki/install/Running-PowerDNS-Admin-on-Ubuntu-or-Debian.md
2022-12-09 07:03:07 -04:00

2.3 KiB

Installing PowerDNS-Admin on Ubuntu or Debian based systems

First setup your database accordingly: Database Setup

Install required packages:

Install required packages for building python libraries from requirements.txt file

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

Install NodeJs

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

Install yarn to build asset files

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

Checkout source code and create virtualenv

Note: Please adjust /opt/web/powerdns-admin to your local web application directory

git clone https://github.com/PowerDNS-Admin/PowerDNS-Admin.git /opt/web/powerdns-admin
cd /opt/web/powerdns-admin
python3 -mvenv ./venv

Activate your python3 environment and install libraries:

source ./venv/bin/activate
pip install --upgrade pip
pip install -r requirements.txt

Running PowerDNS-Admin

Create PowerDNS-Admin config file and make the changes necessary for your use case. Make sure to change SECRET_KEY to a long random string that you generated yourself (see Flask docs), do not use the pre-defined one. E.g.:

cp /opt/web/powerdns-admin/configs/development.py /opt/web/powerdns-admin/configs/production.py
vim /opt/web/powerdns-admin/configs/production.py
export FLASK_CONF=../configs/production.py

Do the DB migration

export FLASK_APP=powerdnsadmin/__init__.py
flask db upgrade

Then generate asset files

yarn install --pure-lockfile
flask assets build

Now you can run PowerDNS-Admin by command

./run.py

This is good for testing, but for production usage, you should use gunicorn or uwsgi. See Running PowerDNS Admin with Systemd, Gunicorn and Nginx for instructions.

From here you can now follow the Getting started guide.