All Projects → pschiffe → docker-pdns

pschiffe / docker-pdns

Licence: MIT License
Docker images for PowerDNS

Programming Languages

shell
77523 projects
Dockerfile
14818 projects
Smarty
1635 projects
python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to docker-pdns

powerdns
PowerDNS dnsdist, recursor, authoritative, and admin interface. Supports DNSCrypt, DoH, and DoT.
Stars: ✭ 35 (-76.35%)
Mutual labels:  powerdns, powerdns-admin, powerdns-authoritative, powerdns-recursor
PowerDNS-Admin
A PowerDNS web interface with advanced features
Stars: ✭ 1,612 (+989.19%)
Mutual labels:  powerdns, pdns, powerdns-admin
powerdns-php
PowerDNS API PHP Client
Stars: ✭ 67 (-54.73%)
Mutual labels:  powerdns, pdns
dnstap-receiver
Dnstap streams receiver in Python
Stars: ✭ 33 (-77.7%)
Mutual labels:  powerdns, pdns
docker-mail-server
Ansible playbooks to deploy a full featured mail server stack using Docker.
Stars: ✭ 47 (-68.24%)
Mutual labels:  powerdns-admin
balboa
server for indexing and querying passive DNS observations
Stars: ✭ 42 (-71.62%)
Mutual labels:  pdns
docker-powerdns
PowerDNS + Recursor + Admin GUI + Adblock in one single Docker
Stars: ✭ 49 (-66.89%)
Mutual labels:  powerdns
docker-powerdns-admin
PowerDNS Admin Web UI. Dockerized version of https://github.com/ngoduykhanh/PowerDNS-Admin
Stars: ✭ 18 (-87.84%)
Mutual labels:  powerdns
chef-pdns
Development repository for DNSimple Cookbook PowerDNS.
Stars: ✭ 22 (-85.14%)
Mutual labels:  powerdns
go-powerdns
Go PowerDNS 4.x API Client
Stars: ✭ 70 (-52.7%)
Mutual labels:  powerdns
fever
fast, extensible, versatile event router for Suricata's EVE-JSON format
Stars: ✭ 47 (-68.24%)
Mutual labels:  pdns
Pdns
PowerDNS Authoritative, PowerDNS Recursor, dnsdist
Stars: ✭ 2,575 (+1639.86%)
Mutual labels:  powerdns

PowerDNS Docker Images

This repository contains four Docker images - pdns-mysql, pdns-recursor, pdns-admin-static and pdns-admin-uwsgi. Image pdns-mysql contains completely configurable PowerDNS 4.x server with mysql backend (without mysql server). Image pdns-recursor contains completely configurable PowerDNS 4.x recursor. Images pdns-admin-static and pdns-admin-uwsgi contains fronted (nginx) and backend (uWSGI) for PowerDNS Admin web app, written in Flask, for managing PowerDNS servers.

The pdns-mysql and pdns-recursor images have also the alpine tag thanks to the @PoppyPop .

All images are available on Docker Hub:

https://hub.docker.com/r/pschiffe/pdns-mysql/

https://hub.docker.com/r/pschiffe/pdns-recursor/

https://hub.docker.com/r/pschiffe/pdns-admin-uwsgi/

https://hub.docker.com/r/pschiffe/pdns-admin-static/

pdns-mysql

Docker Image Size (tag) Docker Image Size (tag) Docker Pulls

https://hub.docker.com/r/pschiffe/pdns-mysql/

Docker image with PowerDNS 4.x server and mysql backend (without mysql server). For running, it needs external mysql server. Env vars for mysql configuration:

(name=default value)

PDNS_gmysql_host=mysql
PDNS_gmysql_port=3306
PDNS_gmysql_user=root
PDNS_gmysql_password=powerdns
PDNS_gmysql_dbname=powerdns

If linked with official mariadb image with alias mysql, the connection can be automatically configured, so you don't need to specify any of the above. Also, DB is automatically initialized if tables are missing.

PowerDNS server is configurable via env vars. Every variable starting with PDNS_ will be inserted into /etc/pdns/pdns.conf conf file in the following way: prefix PDNS_ will be stripped and every _ will be replaced with -. For example, from above mysql config, PDNS_gmysql_host=mysql will became gmysql-host=mysql in /etc/pdns/pdns.conf file. This way, you can configure PowerDNS server any way you need within a docker run command.

There is also a SUPERMASTER_IPS env var supported, which can be used to configure supermasters for slave dns server. Docs. Multiple ip addresses separated by space should work.

You can find here all available settings.

Examples

Master server with API enabled and with one slave server configured:

docker run -d -p 53:53 -p 53:53/udp --name pdns-master \
  --hostname ns1.example.com --link mariadb:mysql \
  -e PDNS_master=yes \
  -e PDNS_api=yes \
  -e PDNS_api_key=secret \
  -e PDNS_webserver=yes \
  -e PDNS_webserver_address=0.0.0.0 \
  -e PDNS_webserver_password=secret2 \
  -e PDNS_version_string=anonymous \
  -e PDNS_default_ttl=1500 \
  -e PDNS_allow_axfr_ips=172.5.0.21 \
  -e PDNS_only_notify=172.5.0.21 \
  pschiffe/pdns-mysql

Slave server with supermaster:

docker run -d -p 53:53 -p 53:53/udp --name pdns-slave \
  --hostname ns2.example.com --link mariadb:mysql \
  -e PDNS_gmysql_dbname=powerdnsslave \
  -e PDNS_slave=yes \
  -e PDNS_version_string=anonymous \
  -e PDNS_disable_axfr=yes \
  -e PDNS_allow_notify_from=172.5.0.20 \
  -e SUPERMASTER_IPS=172.5.0.20 \
  pschiffe/pdns-mysql

pdns-recursor

Docker Image Size (tag) Docker Image Size (tag) Docker Pulls

https://hub.docker.com/r/pschiffe/pdns-recursor/

Docker image with PowerDNS 4.x recursor.

PowerDNS recursor is configurable via env vars. Every variable starting with PDNS_ will be inserted into /etc/pdns/recursor.conf conf file in the following way: prefix PDNS_ will be stripped and every _ will be replaced with -. For example, from above mysql config, PDNS_gmysql_host=mysql will became gmysql-host=mysql in /etc/pdns/recursor.conf file. This way, you can configure PowerDNS recursor any way you need within a docker run command.

You can find here all available settings.

Examples

Recursor server with API enabled:

docker run -d -p 53:53 -p 53:53/udp --name pdns-recursor \
  -e PDNS_api_key=secret \
  -e PDNS_webserver=yes \
  -e PDNS_webserver_address=0.0.0.0 \
  -e PDNS_webserver_password=secret2 \
  pschiffe/pdns-recursor

pdns-admin-uwsgi

Docker Image Size (tag) Docker Pulls

https://hub.docker.com/r/pschiffe/pdns-admin-uwsgi/

Docker image with backend of PowerDNS Admin web app, written in Flask, for managing PowerDNS servers. This image contains the python part of the app running under uWSGI. It needs external mysql server. Env vars for mysql configuration:

(name=default value)

PDNS_ADMIN_SQLA_DB_HOST="'mysql'"
PDNS_ADMIN_SQLA_DB_PORT="'3306'"
PDNS_ADMIN_SQLA_DB_USER="'root'"
PDNS_ADMIN_SQLA_DB_PASSWORD="'powerdnsadmin'"
PDNS_ADMIN_SQLA_DB_NAME="'powerdnsadmin'"

If linked with official mariadb image with alias mysql, the connection can be automatically configured, so you don't need to specify any of the above. Also, DB is automatically initialized if tables are missing.

Similar to the pdns-mysql, pdns-admin is also completely configurable via env vars. Prefix in this case is PDNS_ADMIN_, but there is one caveat: as the config file is a python source file, every string value must be quoted, as shown above. Double quotes are consumed by Bash, so the single quotes stay for Python. (Port number in this case is treated as string, because later on it's concatenated with hostname, user, etc in the db uri). Configuration from these env vars will be written to the /opt/powerdns-admin/config.py file.

Connecting to the PowerDNS server

For the pdns-admin to make sense, it needs a PowerDNS server to manage. The PowerDNS server needs to have exposed API (example configuration for PowerDNS 4.x):

api=yes
api-key=secret
webserver=yes
webserver-address=0.0.0.0
webserver-allow-from=172.5.0.0/16

And again, PowerDNS connection is configured via env vars (it needs url of the PowerDNS server, api key and a version of PowerDNS server, for example 4.0.1):

(name=default value)

PDNS_API_URL="http://pdns:8081/"
PDNS_API_KEY=""
PDNS_VERSION=""

These values are stored in the DB and thus cannot contain double-quoting as configuration described above.

If this container is linked with pdns-mysql from this repo with alias pdns, it will be configured automatically and none of the env vars from above are needed to be specified.

Persistent data

There is a directory with user uploads which should be persistent: /opt/powerdns-admin/upload

Example

When linked with pdns-mysql from this repo and with LDAP auth:

docker run -d --name pdns-admin-uwsgi \
  --link mariadb:mysql --link pdns-master:pdns \
  -v pdns-admin-upload:/opt/powerdns-admin/upload \
  pschiffe/pdns-admin-uwsgi

pdns-admin-static

Docker Image Size (tag) Docker Pulls

https://hub.docker.com/r/pschiffe/pdns-admin-static/

Fronted image with nginx and static files for PowerDNS Admin. Exposes port 80 for connections, expects uWSGI backend image under pdns-admin-uwsgi alias.

Example

docker run -d -p 8080:80 --name pdns-admin-static \
  --link pdns-admin-uwsgi:pdns-admin-uwsgi \
  pschiffe/pdns-admin-static

ansible-playbook.yml

Included ansible playbook can be used to build and run the containers from this repo. Run it with:

ansible-playbook ansible-playbook.yml
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].