2022-12-09 02:51:59 +00:00
# Installing PowerDNS-Admin on Ubuntu or Debian based systems
First setup your database accordingly:
[Database Setup ](../database-setup/README.md )
## Install required packages:
2022-12-08 15:52:02 +00:00
2022-12-09 11:03:07 +00:00
### Install required packages for building python libraries from requirements.txt file
2022-12-08 15:52:02 +00:00
2023-03-12 12:11:20 +00:00
For Debian 11 (bullseye) and above:
2022-12-08 15:52:02 +00:00
```bash
2023-03-12 12:11:20 +00:00
sudo apt install -y python3-dev git libsasl2-dev libldap2-dev python3-venv libmariadb-dev pkg-config build-essential curl libpq-dev
```
Older systems might also need the following:
```bash
sudo apt install -y libssl-dev libxml2-dev libxslt1-dev libxmlsec1-dev libffi-dev apt-transport-https virtualenv
2022-12-08 15:52:02 +00:00
```
2022-12-09 11:03:07 +00:00
### Install NodeJs
2022-12-08 15:52:02 +00:00
```bash
2023-03-12 12:11:20 +00:00
curl -sL https://deb.nodesource.com/setup_14.x | sudo bash -
sudo apt install -y nodejs
2022-12-08 15:52:02 +00:00
```
2022-12-09 11:03:07 +00:00
### Install yarn to build asset files
2023-03-12 12:11:20 +00:00
For Debian 11 (bullseye) and above:
```bash
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 update & & sudo apt install -y yarn
```
For older Debian systems:
2022-12-08 15:52:02 +00:00
```bash
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
```
2022-12-09 11:03:07 +00:00
### Checkout source code and create virtualenv
2022-12-08 15:52:02 +00:00
_**Note:**_ Please adjust `/opt/web/powerdns-admin` to your local web application directory
```bash
2022-12-08 17:06:00 +00:00
git clone https://github.com/PowerDNS-Admin/PowerDNS-Admin.git /opt/web/powerdns-admin
2022-12-08 15:52:02 +00:00
cd /opt/web/powerdns-admin
python3 -mvenv ./venv
```
Activate your python3 environment and install libraries:
```bash
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](https://flask.palletsprojects.com/en/1.1.x/config/#SECRET_KEY)), do not use the pre-defined one. E.g.:
```bash
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
```bash
export FLASK_APP=powerdnsadmin/__init__.py
flask db upgrade
```
Then generate asset files
```bash
yarn install --pure-lockfile
flask assets build
```
Now you can run PowerDNS-Admin by command
```bash
./run.py
```
2022-12-09 10:46:40 +00:00
This is good for testing, but for production usage, you should use gunicorn or uwsgi. See [Running PowerDNS Admin with Systemd, Gunicorn and Nginx ](../web-server/Running-PowerDNS-Admin-with-Systemd-Gunicorn-and-Nginx.md ) for instructions.
2022-12-08 15:52:02 +00:00
2022-12-09 10:46:40 +00:00
From here you can now follow the [Getting started guide ](../configuration/Getting-started.md ).