PowerDNS is copyright © 2001-2023 by PowerDNS.COM BV and many contributors, using the GNU GPLv2 license (see NOTICE for exact license and exception used).
All documentation can be found at https://doc.powerdns.com/
This file can be delayed at times. For the latest updates, always check https://doc.powerdns.com/authoritative/changelog/
Another good place to look for information is: https://doc.powerdns.com/authoritative/appendices/compiling.html
To archive errors, go to: https://github.com/PowerDNS/pdns/issues
But check if the problem was already reported there first.
This README file is mirrored from GitHub to dockerhub. For information about our Docker images, see https://github.com/PowerDNS/pdns/blob/master/Docker-README.md
Git source/source code
is available on GitHub:
This repository contains the sources for PowerDNS Resourcer, PowerDNS Authoritative Server, and dnsdist (a powerful DNS load balancer). All three can be built from this repository. However, all three were released separately as .tar.bz2, .deb, and .rpm.
Different versions can be built with the help of pdns-builder, which uses a docker-based build process. To get started with this, run these commands at the root of this repository
This will open a USE page explaining how to build the different versions
The PowerDNS authoritative server depends on Boost, OpenSSL, and Lua, and requires a C++-2017-compliant compiler
In Debian 9
, the following is useful: When compiling from git, the following packages
are also required
Ubuntu 18.04 (Bionic Beaver), the following packages must be installed
Next, generate the configuration file
To build a very clean version, use:
This generates a PowerDNS Authoritative Server binary with no built-in modules
See https://doc.powerdns.com/authoritative/backends/index.html for a list of available modules.
When ./configure runs without -with-modules, the bind module and gmysql are integrated by default and the pipeline backend is compiled for runtime loading.
To add multiple modules, try:
Note that you will also need the development headers for PostgreSQL in this case
https://doc.powerdns.com/authoritative/appendices/compiling.html for details
If you have problems with C++11-related symbols, try passing CPPFLAGS=-D_GLIBCXX_USE_CXX11_ABI=0 (or 1) to ./configure to ensure that it supports the installed dependencies.
Compiling the recursor
See README.md in pdns/
View README-dnsdist.md in pdns/
the HTML documentation
HTML documentation (as seen on the PowerDNS document site) is created from restructured text (rst) files located in documents. They are compiled into HTML files using Sphinx, a documentation generating tool that is built in Python.
Install the dependencies in “COMPILING” and run autoreconf if you haven’t already:
Enter the docs folder and use make to compile the HTML documents
HTML documentation will now be available in html-docs
You need to compile using gmake: regular make only seems to work, but in fact it doesn’t work. Use gmake, not make.
The clang compiler installed through the FreeBSD package manager does not expose all the necessary C++17 features under the default value std=gnuc++14. Force the compiler to use std=c++17 mode instead.
PowerDNS Authoritative Server is available through
if you want to build yourself, dependencies can be installed with Homebrew. You must also tell configure where to find OpenSSL.
Also, for PostgreSQL support, run brew install postgresql and add -with-modules=”gpgsql” to ./configure. For MySQL support, run brew install mariadb and add -with-modules=”gmysql” to ./configure.