powerdns-admin/docs/wiki/database-setup/Setup-PostgreSQL.md
2022-12-12 22:50:26 -04:00

2.4 KiB

Setup Postgres database for PowerDNS-Admin

This guide will show you how to prepare a PostgreSQL database for PowerDNS-Admin.

We assume the database is installed per your platform's directions (apt, yum, etc). Directions to do this can be found below:

We assume a default configuration and only the postgres user existing.

Setup database

The below will create a database called powerdnsadmindb and a user of powerdnsadmin.

$ sudo su - postgres
$ createuser powerdnsadmin
$ createdb powerdnsadmindb
$ psql
postgres=# alter user powerdnsadmin with encrypted password 'powerdnsadmin';
postgres=# grant all privileges on database powerdnsadmindb to powerdnsadmin;

Note:

  • Please change the information above (db, user, password) to fit your setup.

Setup Remote access to database:

If your database is on a different server postgres does not allow remote connections by default.

To change this follow the below directions:

[root@host ~]$  sudo su - postgres
# Edit /var/lib/pgsql/data/postgresql.conf
# Change the following line:
listen_addresses = 'localhost'
# to:
listen_addresses = '*'
# Edit /var/lib/pgsql/data/pg_hba.conf
# Add the following lines to the end of the 
host    all             all              0.0.0.0/0                       md5
host    all             all              ::/0                            md5

[postgres@host ~]$ exit
[root@host ~]$ sudo systemctl restart postgresql

On debian based systems these files are located in:

/etc/postgresql/<version>/main/

Install required packages:

Red-hat based systems:

sudo yum install postgresql-libs

Debian based systems:

apt install libpq-dev python-dev

Install python packages:

pip3 install psycopg2

Known Issues:

** To fill in **

Docker (TODO: to move to docker docs)

TODO: Setup a local Docker postgres database ready to go (should probably move to the top).

docker run --name pdnsadmin-test -e BIND_ADDRESS=0.0.0.0 
-e SECRET_KEY='a-very-secret-key' 
-e PORT='9191' 
-e SQLA_DB_USER='powerdns_admin_user' 
-e SQLA_DB_PASSWORD='exceptionallysecure' 
-e SQLA_DB_HOST='192.168.0.100' 
-e SQLA_DB_NAME='powerdns_admin_test' 
-v /data/node_modules:/var/www/powerdns-admin/node_modules -d -p 9191:9191 ixpict/powerdns-admin-pgsql:latest