{"id":7105,"date":"2020-10-10T21:26:38","date_gmt":"2020-10-10T18:26:38","guid":{"rendered":"https:\/\/kifarunix.com\/?p=7105"},"modified":"2024-03-14T23:29:49","modified_gmt":"2024-03-14T20:29:49","slug":"easily-install-and-setup-powerdns-admin-on-ubuntu-20-04","status":"publish","type":"post","link":"https:\/\/kifarunix.com\/easily-install-and-setup-powerdns-admin-on-ubuntu-20-04\/","title":{"rendered":"Easily Install and Setup PowerDNS Admin on Ubuntu 20.04"},"content":{"rendered":"<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"976\" height=\"489\" src=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2020\/10\/install-pdns-admin.png\" alt=\"Easily Install and Setup PowerDNS Admin on Ubuntu 20.04\" class=\"wp-image-7115\" title=\"\" srcset=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2020\/10\/install-pdns-admin.png?v=1602353915 976w, https:\/\/kifarunix.com\/wp-content\/uploads\/2020\/10\/install-pdns-admin-768x385.png?v=1602353915 768w\" sizes=\"(max-width: 976px) 100vw, 976px\" \/><\/figure><\/div>\n\n\n<p>In this tutorial, you will learn how to easily install and setup PowerDNS Admin on Ubuntu 20.04. <a aria-label=\"PowerDNS Admin (opens in a new tab)\" class=\"rank-math-link\" href=\"https:\/\/github.com\/ngoduykhanh\/PowerDNS-Admin\" target=\"_blank\" rel=\"noreferrer noopener\">PowerDNS Admin<\/a> is a web administrative interface for PowerDNS. It enables you to easily create and manage DNS zones from a web browser.<\/p>\n\n\n\n<div class=\"wp-block-rank-math-toc-block\" id=\"rank-math-toc\"><h2>Table of Contents<\/h2><nav><ul><li><a href=\"#features-of-power-dns-admin\">Features of PowerDNS Admin<\/a><\/li><li><a href=\"#installing-power-dns-admin-on-ubuntu-20-04\">Installing PowerDNS Admin on Ubuntu 20.04<\/a><ul><li><a href=\"#install-and-setup-power-dns-on-ubuntu-20-04\">Install and Setup PowerDNS on Ubuntu 20.04<\/a><\/li><li><a href=\"#install-required-package-dependencies\">Install Required Package Dependencies<\/a><\/li><li><a href=\"#clone-power-dns-admin-source-code-to-web-root-directory\">Clone PowerDNS Admin Source Code to Web Root Directory<\/a><\/li><li><a href=\"#create-power-dns-admin-virtualenv\">Create PowerDNS Admin Virtualenv<\/a><\/li><li><a href=\"#configure-power-dns-admin-database-connection\">Configure PowerDNS Admin Database Connection<\/a><\/li><li><a href=\"#running-power-dns-admin\">Running PowerDNS Admin<\/a><ul><li><a href=\"#enable-power-dns-api-access\">Enable PowerDNS API access<\/a><\/li><li><a href=\"#create-power-dns-admin-nginx-site\">Create PowerDNS Admin Nginx Site<\/a><\/li><\/ul><\/li><li><a href=\"#create-power-dns-admin-systemd-service-unit\">Create PowerDNS Admin Systemd Service Unit<\/a><\/li><li><a href=\"#accessing-power-dns-admin-web-interface\">Accessing PowerDNS Admin Web Interface<\/a><ul><li><a href=\"#create-power-dns-admin-administrative-user-account\">Create PowerDNS Admin administrative user account<\/a><\/li><\/ul><\/li><li><a href=\"#reference\">Reference<\/a><\/li><li><a href=\"#other-related-tutorials\">Other Related Tutorials<\/a><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"features-of-power-dns-admin\">Features of PowerDNS Admin<\/h2>\n\n\n\n<p>PowerDNS Admin provides advanced features for managing PowerDNS. These include;<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Multiple domain management<\/li>\n\n\n\n<li>Domain template<\/li>\n\n\n\n<li>User management<\/li>\n\n\n\n<li>User access management based on domain<\/li>\n\n\n\n<li>User activity logging<\/li>\n\n\n\n<li>Support Local DB \/ SAML \/ LDAP \/ Active Directory user authentication<\/li>\n\n\n\n<li>Support Google \/ Github \/ Azure \/ OpenID OAuth<\/li>\n\n\n\n<li>Support Two-factor authentication (TOTP)<\/li>\n\n\n\n<li>Dashboard and pdns service statistics<\/li>\n\n\n\n<li>DynDNS 2 protocol support<\/li>\n\n\n\n<li>Edit IPv6 PTRs using IPv6 addresses directly (no more editing of literal addresses!)<\/li>\n\n\n\n<li>Limited API for manipulating zones and records<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"installing-power-dns-admin-on-ubuntu-20-04\">Installing PowerDNS Admin on Ubuntu 20.04<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"install-and-setup-power-dns-on-ubuntu-20-04\">Install and Setup PowerDNS on Ubuntu 20.04<\/h3>\n\n\n\n<p>To easily install PowerDNS Admin, you need to have already installed PowerDNS nameserver.<\/p>\n\n\n\n<p>In our previous guide, we discussed how to configure PowerDNS nameserver with MariaDB on Ubuntu 20.04. Follow the link below to set it up.<\/p>\n\n\n\n<p><a aria-label=\" (opens in a new tab)\" href=\"https:\/\/kifarunix.com\/easily-install-and-setup-powerdns-on-ubuntu-20-04\/\" target=\"_blank\" rel=\"noreferrer noopener\" class=\"rank-math-link\">Easily Install and Setup PowerDNS on Ubuntu 20.04<\/a><\/p>\n\n\n\n<p>NOTE: We are installing PowerDNS Admin on the same server with PowerDNS already installed.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"install-required-package-dependencies\">Install Required Package Dependencies<\/h3>\n\n\n\n<p>Install Python 3 library and development tools<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">apt install python3-dev<\/pre>\n\n\n\n<p>Install various required build tools and package dependencies.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">apt install libsasl2-dev libldap2-dev libssl-dev \\\nlibxml2-dev libxslt1-dev libxmlsec1-dev libffi-dev \\\npkg-config apt-transport-https virtualenv build-essential \\\nlibmariadb-dev git python3-flask libpq-dev -y<\/pre>\n\n\n\n<p>Install NodeJS<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">curl -sL https:\/\/deb.nodesource.com\/setup_18.x | sudo -E bash - <\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt install -y nodejs<\/code><\/pre>\n\n\n\n<p>Install Yarn<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">curl -sS https:\/\/dl.yarnpkg.com\/debian\/pubkey.gpg | sudo gpg --dearmor -o \/etc\/apt\/trusted.gpg.d\/yarn.gpg<\/pre>\n\n\n\n<pre id=\"block-3fdcc6fc-276f-49b5-b2ab-2f7aab7bbd27\" class=\"wp-block-code\"><code>echo \"deb https:\/\/dl.yarnpkg.com\/debian\/ stable main\" | sudo tee \/etc\/apt\/sources.list.d\/yarn.list<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">apt update<\/pre>\n\n\n\n<pre id=\"block-a5e74ec0-6632-4bb2-b4b4-a32b3b4b369c\" class=\"wp-block-code\"><code>apt install yarn<\/code><\/pre>\n\n\n\n<p>Install Nginx HTTP Server<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">apt install nginx<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"clone-power-dns-admin-source-code-to-web-root-directory\">Clone PowerDNS Admin Source Code to Web Root Directory<\/h3>\n\n\n\n<p>Clone PowerDNS Admin git source code to your Nginx web root directory. In this setup, we use, <code><strong>\/var\/www\/html\/pdns<\/strong><\/code>, as our PowerDNS Admin web root directory. It can be different for your case.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">git clone https:\/\/github.com\/ngoduykhanh\/PowerDNS-Admin.git \/var\/www\/html\/pdns<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"create-power-dns-admin-virtualenv\">Create PowerDNS Admin Virtualenv<\/h3>\n\n\n\n<p>Navigate to the PowerDNS Admin web root directory and create a virtualenv.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">cd \/var\/www\/html\/pdns\/<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">virtualenv -p python3 flask<\/pre>\n\n\n\n<p>Next, active  your Python 3 Virtual environment and install required Python 3 libraries<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">source .\/flask\/bin\/activate<\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>pip install --upgrade pip<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">pip install -r requirements.txt<\/pre>\n\n\n\n<p>Similarly, the textsize function is deprecated in Pillow 10. Thus Pillow 9.5.0 is required:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>pip3 install Pillow==9.5.0<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"configure-power-dns-admin-database-connection\">Configure PowerDNS Admin Database Connection<\/h3>\n\n\n\n<p>Exit the virtualenv and edit the default PowerDNS admin configuration file, $WEB_ROOT\/powerdnsadmin\/default_config.py, to define the database connection details. Replace the $WEB_ROOT with the path to your web root directory.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">deactivate<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">vim \/var\/www\/html\/pdns\/powerdnsadmin\/default_config.py<\/pre>\n\n\n\n<p>On the basic App configs, you can replace the SALT and SECRET_KEY keys, set the bind address and port;<\/p>\n\n\n\n<pre class=\"scroll-box\"><code>\n### BASIC APP CONFIG\n<strong>SALT = 'xohDoozee8Zuneekooch9ohrieghei'\nSECRET_KEY = 'hohru1aethaeyahpheH7Gaathaikah'\nBIND_ADDRESS = '192.168.57.3'<\/strong>\nPORT = 9191\nHSTS_ENABLED = False\nOFFLINE_MODE = False\n<\/code><\/pre>\n\n\n\n<p>On the database configs, configure your PowerDNS database connection details. Note that we are using the details <a href=\"https:\/\/kifarunix.com\/easily-install-and-setup-powerdns-on-ubuntu-20-04\/#create-power-dns-database-on-ubuntu-20-04\" target=\"_blank\" rel=\"noreferrer noopener\">already created while setting up PowerDNS as defined in our guide<\/a>.<\/p>\n\n\n\n<pre class=\"scroll-box\"><code>\n### DATABASE CONFIG\nSQLA_DB_USER = 'pdnsadmin'\nSQLA_DB_PASSWORD = 'PdnSPassW0rd'\nSQLA_DB_HOST = '127.0.0.1'\nSQLA_DB_NAME = 'kifarunixdemopdns'\nSQLALCHEMY_TRACK_MODIFICATIONS = True\n<\/code><\/pre>\n\n\n\n<p>Save and exit the configuration.<\/p>\n\n\n\n<p>Next, reactivate the virtualenv run the DB migration;<\/p>\n\n\n\n<pre id=\"block-c1311cf7-0742-4aee-a999-ac497ba676f4\" class=\"wp-block-preformatted\">cd \/var\/www\/html\/pdns\/<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">source .\/flask\/bin\/activate<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">export FLASK_APP=powerdnsadmin\/__init__.py<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">flask db upgrade<\/pre>\n\n\n\n<p>Once the command above completes, generate asset files with yarn;<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">yarn install --pure-lockfile<\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>flask assets build<\/code><\/pre>\n\n\n\n<p>Exit the virtualenv;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>deactivate<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"running-power-dns-admin\">Running PowerDNS Admin<\/h3>\n\n\n\n<p>PowerDNS Admin is now setup and ready. It can be run in standalone mode, by executing the <code><strong>run.py<\/strong><\/code> in the web root directory.<\/p>\n\n\n\n<p>In this setup, we will be using Nginx web server to access the PowerDNS Admin.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"enable-power-dns-api-access\">Enable PowerDNS API access<\/h4>\n\n\n\n<p>&#8220;<em>The PowerDNS Authoritative Server features a built-in webserver that exposes a JSON\/REST API. This API allows for controlling several functions, reading statistics and modifying zone content, metadata and DNSSEC key material<\/em>&#8220;.<\/p>\n\n\n\n<p>Open PowerDNS configuration file and enable API and set the API Key;<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">vim \/etc\/powerdns\/pdns.conf<\/pre>\n\n\n\n<pre class=\"scroll-box\"><code>\n#################################\n# api   Enable\/disable the REST API (including HTTP listener)\n#\n# api=no\n<strong>api=yes\n<\/strong>\n#################################\n# api-key       Static pre-shared authentication key for access to the REST API\n#\n# api-key=\n<strong>api-key=ahqu4eiv2vaideep8AQu9nav5Aing0<\/strong>\n<\/code><\/pre>\n\n\n\n<p>Save and exit the file and restart PowerDNS;<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">systemctl restart pdns<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"create-power-dns-admin-nginx-site\">Create PowerDNS Admin Nginx Site<\/h4>\n\n\n\n<p>Create PowerDNS Admin Nginx site with the contents below. Replace web root directory accordingly.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">vim \/etc\/nginx\/conf.d\/pdns-admin.conf<\/pre>\n\n\n\n<pre class=\"scroll-box\"><code>\nserver {\n  listen\t*:80;\n  server_name               pdnsadmin.kifarunix-demo.com;\n\n  index                     index.html index.htm index.php;\n  root                      \/var\/www\/html\/pdns;\n  access_log                \/var\/log\/nginx\/pdnsadmin_access.log combined;\n  error_log                 \/var\/log\/nginx\/pdnsadmin_error.log;\n\n  client_max_body_size              10m;\n  client_body_buffer_size           128k;\n  proxy_redirect                    off;\n  proxy_connect_timeout             90;\n  proxy_send_timeout                90;\n  proxy_read_timeout                90;\n  proxy_buffers                     32 4k;\n  proxy_buffer_size                 8k;\n  proxy_set_header                  Host $host;\n  proxy_set_header                  X-Real-IP $remote_addr;\n  proxy_set_header                  X-Forwarded-For $proxy_add_x_forwarded_for;\n  proxy_headers_hash_bucket_size    64;\n\n  location ~ ^\/static\/  {\n    include  \/etc\/nginx\/mime.types;\n    root \/var\/www\/html\/pdns\/powerdnsadmin;\n\n    location ~*  \\.(jpg|jpeg|png|gif)$ {\n      expires 365d;\n    }\n\n    location ~* ^.+.(css|js)$ {\n      expires 7d;\n    }\n  }\n\n  location \/ {\n    proxy_pass            http:\/\/unix:\/run\/pdnsadmin\/socket;\n    proxy_read_timeout    120;\n    proxy_connect_timeout 120;\n    proxy_redirect        off;\n  }\n\n}\n<\/code><\/pre>\n\n\n\n<p>Save and exit the file.<\/p>\n\n\n\n<p>Remove the default Nginx default site and run config syntax check.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">mv \/etc\/nginx\/sites-enabled\/default{,.old}<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">nginx -t<\/pre>\n\n\n\n<p>Sample syntax check output.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>nginx: the configuration file \/etc\/nginx\/nginx.conf syntax is ok\nnginx: configuration file \/etc\/nginx\/nginx.conf test is successful<\/code><\/pre>\n\n\n\n<p>Update ownership of the PDNS Admin root directory<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">chown -R www-data: \/var\/www\/html\/pdns<\/pre>\n\n\n\n<p>Restart Nginx;<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">systemctl restart nginx<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"create-power-dns-admin-systemd-service-unit\">Create PowerDNS Admin Systemd Service Unit<\/h3>\n\n\n\n<p>To be able to run PowerDNS Admin as a systemd service, create a unit file as shown below;<\/p>\n\n\n\n<pre class=\"scroll-box\"><code>\ncat &gt; \/etc\/systemd\/system\/pdnsadmin.service &lt;&lt; 'EOL'           \n[Unit]\nDescription=PowerDNS-Admin\nRequires=pdnsadmin.socket\nAfter=network.target\n\n[Service]\nPIDFile=\/run\/pdnsadmin\/pid\nUser=pdns\nGroup=pdns\nWorkingDirectory=\/var\/www\/html\/pdns\nExecStart=\/var\/www\/html\/pdns\/flask\/bin\/gunicorn --pid \/run\/pdnsadmin\/pid --bind unix:\/run\/pdnsadmin\/socket 'powerdnsadmin:create_app()'\nExecReload=\/bin\/kill -s HUP $MAINPID\nExecStop=\/bin\/kill -s TERM $MAINPID\nPrivateTmp=true\n\n[Install]\nWantedBy=multi-user.target\nEOL\n<\/code><\/pre>\n\n\n\n<pre class=\"scroll-box\"><code>\ncat &gt; \/etc\/systemd\/system\/pdnsadmin.socket &lt;&lt; 'EOL'\n[Unit]\nDescription=PowerDNS-Admin socket\n\n[Socket]\nListenStream=\/run\/pdnsadmin\/socket\n\n[Install]\nWantedBy=sockets.target\nEOL\n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">echo \"d \/run\/pdnsadmin 0755 pdns pdns -\" &gt;&gt; \/etc\/tmpfiles.d\/pdnsadmin.conf<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">mkdir \/run\/pdnsadmin\/<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\">chown -R pdns: \/run\/pdnsadmin\/<\/pre>\n\n\n\n<pre id=\"block-bb7dcd93-5c05-4d86-ad22-2e7c35adae9a\" class=\"wp-block-preformatted\">chown -R pdns: \/var\/www\/html\/pdns\/powerdnsadmin\/<\/pre>\n\n\n\n<p>Reload System Configurations and start and enable PowerDNS Admin service to run on system boot;<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">systemctl enable --now pdnsadmin.service pdnsadmin.socket<\/pre>\n\n\n\n<p>Check the status;<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">systemctl status pdnsadmin.service pdnsadmin.socket<\/pre>\n\n\n\n<pre class=\"scroll-box\"><code>\n\u25cf pdnsadmin.service - PowerDNS-Admin\n     Loaded: loaded (\/etc\/systemd\/system\/pdnsadmin.service; enabled; vendor preset: enabled)\n     Active: active (running) since Wed 2023-07-26 06:02:46 UTC; 8s ago\nTriggeredBy: \u25cf pdnsadmin.socket\n   Main PID: 43752 (gunicorn)\n      Tasks: 2 (limit: 2257)\n     Memory: 89.8M\n     CGroup: \/system.slice\/pdnsadmin.service\n             \u251c\u250043752 \/var\/www\/html\/pdns\/flask\/bin\/python \/var\/www\/html\/pdns\/flask\/bin\/gunicorn --pid \/run\/pdnsadmin\/pid --bind unix:\/run\/pdnsadmin\/socket powerdnsadmin:cre>\n             \u2514\u250043769 \/var\/www\/html\/pdns\/flask\/bin\/python \/var\/www\/html\/pdns\/flask\/bin\/gunicorn --pid \/run\/pdnsadmin\/pid --bind unix:\/run\/pdnsadmin\/socket powerdnsadmin:cre>\n\nJul 26 06:02:46 focal systemd[1]: Started PowerDNS-Admin.\nJul 26 06:02:46 focal gunicorn[43752]: [2023-07-26 06:02:46 +0000] [43752] [INFO] Starting gunicorn 20.1.0\nJul 26 06:02:46 focal gunicorn[43752]: [2023-07-26 06:02:46 +0000] [43752] [INFO] Listening at: unix:\/run\/pdnsadmin\/socket (43752)\nJul 26 06:02:46 focal gunicorn[43752]: [2023-07-26 06:02:46 +0000] [43752] [INFO] Using worker: sync\nJul 26 06:02:46 focal gunicorn[43769]: [2023-07-26 06:02:46 +0000] [43769] [INFO] Booting worker with pid: 43769\n\n\u25cf pdnsadmin.socket - PowerDNS-Admin socket\n     Loaded: loaded (\/etc\/systemd\/system\/pdnsadmin.socket; enabled; vendor preset: enabled)\n     Active: active (running) since Wed 2023-07-26 06:02:46 UTC; 8s ago\n   Triggers: \u25cf pdnsadmin.service\n     Listen: \/run\/pdnsadmin\/socket (Stream)\n     CGroup: \/system.slice\/pdnsadmin.socket\n\nJul 26 06:02:46 focal systemd[1]: Listening on PowerDNS-Admin socket.\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"accessing-power-dns-admin-web-interface\">Accessing PowerDNS Admin Web Interface<\/h3>\n\n\n\n<p>Open Nginx on firewall to allow external access;<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">ufw allow \"Nginx Full\"<\/pre>\n\n\n\n<p>As per our configuration above, you can access PowerDNS Admin web interface via the address <code><strong>http:\/\/server-hostname<\/strong><\/code>. You should be able to see the PowerDNS Admin login screen. (<strong><em>if not, check status of the PowerDNS admin service or Nginx error logs for a hint<\/em><\/strong>).<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1071\" height=\"640\" src=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2020\/10\/pdns-admin-login.png\" alt=\"\" class=\"wp-image-7108\" title=\"\" srcset=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2020\/10\/pdns-admin-login.png?v=1602353396 1071w, https:\/\/kifarunix.com\/wp-content\/uploads\/2020\/10\/pdns-admin-login-768x459.png?v=1602353396 768w\" sizes=\"(max-width: 1071px) 100vw, 1071px\" \/><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"create-power-dns-admin-administrative-user-account\">Create PowerDNS Admin administrative user account<\/h4>\n\n\n\n<p>Click <strong>Create an account<\/strong> to create the very first PowerDNS Admin admin user. Enter the user details.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"765\" height=\"681\" src=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2020\/10\/create-account.png\" alt=\"PowerDNS Admin create user account\" class=\"wp-image-7109\" title=\"\"><\/figure><\/div>\n\n\n<p>Click <strong>Register<\/strong> to create an account.<\/p>\n\n\n\n<p>After that, login using the user details you provided. Upon successful login, you should land on PowerDNS Admin interface.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1910\" height=\"947\" src=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2020\/10\/pdns-web-ui.png\" alt=\"\" class=\"wp-image-7110\" title=\"\" srcset=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2020\/10\/pdns-web-ui.png?v=1602353509 1910w, https:\/\/kifarunix.com\/wp-content\/uploads\/2020\/10\/pdns-web-ui-768x381.png?v=1602353509 768w, https:\/\/kifarunix.com\/wp-content\/uploads\/2020\/10\/pdns-web-ui-1536x762.png?v=1602353509 1536w\" sizes=\"(max-width: 1910px) 100vw, 1910px\" \/><\/figure>\n\n\n\n<p>For PowerDNS Admin to be able to connect to PowerDNS and manage it, you need to provide;<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>the API Key URL, usually, http:\/\/127.0.0.1:8081 by default,<\/li>\n\n\n\n<li>the API Key you defined in the PowerDNS configuration file.<\/li>\n\n\n\n<li>Exact version of your PowerDNS (get the version using the command, <strong><code>pdns_control version<\/code><\/strong>).<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1462\" height=\"706\" src=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2023\/07\/powerdns-admin-api-key-and-version.png\" alt=\"\" class=\"wp-image-18126\" title=\"\" srcset=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2023\/07\/powerdns-admin-api-key-and-version.png?v=1690573453 1462w, https:\/\/kifarunix.com\/wp-content\/uploads\/2023\/07\/powerdns-admin-api-key-and-version-768x371.png?v=1690573453 768w\" sizes=\"(max-width: 1462px) 100vw, 1462px\" \/><\/figure>\n\n\n\n<p>Click <strong>Save Settings<\/strong> and the error should just disappear.<\/p>\n\n\n\n<p>Click on the <strong>Dashboard<\/strong> to go to PowerDNS Admin dashboard and you should be able to see your zones.<\/p>\n\n\n\n<p>Forward Zone and Records;<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1466\" height=\"748\" src=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2023\/07\/powerdns-zones.png\" alt=\"\" class=\"wp-image-18127\" title=\"\" srcset=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2023\/07\/powerdns-zones.png?v=1690573883 1466w, https:\/\/kifarunix.com\/wp-content\/uploads\/2023\/07\/powerdns-zones-768x392.png?v=1690573883 768w\" sizes=\"(max-width: 1466px) 100vw, 1466px\" \/><\/figure>\n\n\n\n<p>As you can see, we already added the DNS records in our previous guide. If you click on the domain name, you should the records we already added;<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1470\" height=\"759\" src=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2023\/07\/powerdns-forward-zones-records.png\" alt=\"\" class=\"wp-image-18128\" title=\"\" srcset=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2023\/07\/powerdns-forward-zones-records.png?v=1690573911 1470w, https:\/\/kifarunix.com\/wp-content\/uploads\/2023\/07\/powerdns-forward-zones-records-768x397.png?v=1690573911 768w\" sizes=\"(max-width: 1470px) 100vw, 1470px\" \/><\/figure>\n\n\n\n<p>That is the forward zone records.<\/p>\n\n\n\n<p>Reverse Zones;<\/p>\n\n\n\n<p>If you click on the reverse zone under the <strong>Dashboard &gt; Zones in-addr<\/strong>, you should see the reverse zone records.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1470\" height=\"768\" src=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2023\/07\/reverse-zone.png\" alt=\"\" class=\"wp-image-18129\" title=\"\" srcset=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2023\/07\/reverse-zone.png?v=1690574028 1470w, https:\/\/kifarunix.com\/wp-content\/uploads\/2023\/07\/reverse-zone-768x401.png?v=1690574028 768w\" sizes=\"(max-width: 1470px) 100vw, 1470px\" \/><\/figure>\n\n\n\n<p>Reverse zone Records;<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1473\" height=\"761\" src=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2023\/07\/reverse-zone-records.png\" alt=\"\" class=\"wp-image-18130\" title=\"\" srcset=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2023\/07\/reverse-zone-records.png?v=1690574048 1473w, https:\/\/kifarunix.com\/wp-content\/uploads\/2023\/07\/reverse-zone-records-768x397.png?v=1690574048 768w\" sizes=\"(max-width: 1473px) 100vw, 1473px\" \/><\/figure>\n\n\n\n<p>And that marks the end of our tutorial on how to easily install PowerDNS Admin on Ubuntu 20.04.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"reference\">Reference<\/h3>\n\n\n\n<p><a href=\"https:\/\/github.com\/ngoduykhanh\/PowerDNS-Admin\/wiki\/Running-PowerDNS-Admin-on-Ubuntu-or-Debian\" class=\"rank-math-link\" target=\"_blank\" rel=\"noopener\">Running PowerDNS Admin on Ubuntu or Debian<\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"other-related-tutorials\">Other Related Tutorials<\/h3>\n\n\n\n<p><a href=\"https:\/\/kifarunix.com\/configure-local-dns-server-using-dnsmasq-on-ubuntu-20-04\/\" target=\"_blank\" rel=\"noreferrer noopener\">Configure Local DNS Server using Dnsmasq on Ubuntu 20.04<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/kifarunix.com\/setup-caching-only-dns-server-using-bind9-on-ubuntu-20-04\/\" target=\"_blank\" rel=\"noreferrer noopener\">Setup Caching-Only DNS Server using BIND9 on Ubuntu 20.04<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/kifarunix.com\/configure-bind-dns-server-using-webmin-on-centos-8\/\" target=\"_blank\" rel=\"noreferrer noopener\">Configure BIND DNS Server using Webmin on CentOS 8<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/kifarunix.com\/setup-bind-dns-using-webmin-on-debian-10\/\" target=\"_blank\" rel=\"noreferrer noopener\">Setup Bind DNS Using Webmin on Debian 10<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/kifarunix.com\/configure-bind-as-slave-dns-server-on-ubuntu-18-04\/\" target=\"_blank\" rel=\"noreferrer noopener\">Configure BIND as Slave DNS Server on Ubuntu 18.04<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/kifarunix.com\/how-to-setup-master-slave-dns-server-using-bind-on-centos-7\/\" target=\"_blank\" rel=\"noreferrer noopener\">Setup Master-Slave DNS Server using BIND on CentOS 7<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In this tutorial, you will learn how to easily install and setup PowerDNS Admin on Ubuntu 20.04. PowerDNS Admin is a web administrative interface for<\/p>\n","protected":false},"author":1,"featured_media":9314,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"rank_math_lock_modified_date":false,"footnotes":""},"categories":[971,121,972],"tags":[2784,2782,2787,2786,2785,2783,1200],"class_list":["post-7105","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dns","category-howtos","category-powerdns","tag-configure-powerdns-admin-on-ubuntu","tag-install-powerdns-admin-on-ubuntu-20-04","tag-powerdns-admin","tag-powerdns-admin-with-nginx","tag-powerdns-systemd-service-unit-file","tag-setup-powerdns-admin-on-ubuntu-20-04","tag-ubuntu-20-04","generate-columns","tablet-grid-50","mobile-grid-100","grid-parent","grid-50","resize-featured-image"],"_links":{"self":[{"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/posts\/7105"}],"collection":[{"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/comments?post=7105"}],"version-history":[{"count":12,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/posts\/7105\/revisions"}],"predecessor-version":[{"id":21537,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/posts\/7105\/revisions\/21537"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/media\/9314"}],"wp:attachment":[{"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/media?parent=7105"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/categories?post=7105"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/tags?post=7105"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}