{"id":18124,"date":"2023-07-28T23:03:25","date_gmt":"2023-07-28T20:03:25","guid":{"rendered":"https:\/\/kifarunix.com\/?p=18124"},"modified":"2024-03-10T10:10:26","modified_gmt":"2024-03-10T07:10:26","slug":"install-and-setup-powerdns-admin-on-ubuntu-22-04","status":"publish","type":"post","link":"https:\/\/kifarunix.com\/install-and-setup-powerdns-admin-on-ubuntu-22-04\/","title":{"rendered":"Install and Setup PowerDNS Admin on Ubuntu 22.04"},"content":{"rendered":"\n<p>In this tutorial, you will learn how to easily install and setup PowerDNS Admin on Ubuntu 22.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-22-04\">Installing PowerDNS Admin on Ubuntu 22.04<\/a><ul><li><a href=\"#install-and-setup-power-dns\">Install and Setup PowerDNS<\/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-22-04\">Installing PowerDNS Admin on Ubuntu 22.04<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"install-and-setup-power-dns\">Install and Setup PowerDNS<\/h3>\n\n\n\n<p>To easily install and setup PowerDNS Admin, you need to have already install and setup PowerDNS nameserver using some relational database.<\/p>\n\n\n\n<p>In our previous guide, we discussed how to configure PowerDNS nameserver with MariaDB on Ubuntu 22.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-22-04\/\" target=\"_blank\" rel=\"noreferrer noopener\" class=\"rank-math-link\">Easily Install and Setup PowerDNS on Ubuntu 22.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>pip3 install --upgrade pip<\/code><\/pre>\n\n\n\n<p>Update the PyYAML version in the requirements.txt file. The current version, v5.4 gives this error;<\/p>\n\n\n\n<pre class=\"scroll-box\"><code>\nCollecting PyYAML==5.4 (from -r requirements.txt (line 12))\n  Using cached PyYAML-5.4.tar.gz (174 kB)\n  Installing build dependencies ... done\n  Getting requirements to build wheel ... error\n  error: subprocess-exited-with-error\n  \n  \u00d7 Getting requirements to build wheel did not run successfully.\n  \u2502 exit code: 1\n  \u2570\u2500> [62 lines of output]\n      \/tmp\/pip-build-env-un4ax31x\/overlay\/lib\/python3.10\/site-packages\/setuptools\/config\/setupcfg.py:293: _DeprecatedConfig: Deprecated config in `setup.cfg`\n      !!\n      \n              ********************************************************************************\n              The license_file parameter is deprecated, use license_files instead.\n      \n              By 2023-Oct-30, you need to update your project and remove deprecated calls\n              or your builds will no longer be supported.\n      \n              See https:\/\/setuptools.pypa.io\/en\/latest\/userguide\/declarative_config.html for details.\n              ********************************************************************************\n<\/code><\/pre>\n\n\n\n<p>Thus, let&#8217;s downgrade the version from v5.4 to v5.3;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sed -i '\/PyYAML\/s\/5.4\/5.3.1\/' requirements.txt<\/code><\/pre>\n\n\n\n<p>The install the requirements<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">pip3 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-22-04\/#create-power-dns-database-on-ubuntu-22-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\">nginx: the configuration file \/etc\/nginx\/nginx.conf syntax is ok\nnginx: configuration file \/etc\/nginx\/nginx.conf test is successful<\/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 Fri 2023-07-28 18:59:39 UTC; 6s ago\nTriggeredBy: \u25cf pdnsadmin.socket\n   Main PID: 37722 (gunicorn)\n      Tasks: 2 (limit: 2219)\n     Memory: 88.6M\n        CPU: 952ms\n     CGroup: \/system.slice\/pdnsadmin.service\n             \u251c\u250037722 \/var\/www\/html\/pdns\/flask\/bin\/python \/var\/www\/html\/pdns\/flask\/bin\/gunicorn --pid \/run\/pdnsadmin\/pid --bind unix:\/run\/pdnsadmin\/socket \"powerdnsadmin:cr>\n             \u2514\u250037723 \/var\/www\/html\/pdns\/flask\/bin\/python \/var\/www\/html\/pdns\/flask\/bin\/gunicorn --pid \/run\/pdnsadmin\/pid --bind unix:\/run\/pdnsadmin\/socket \"powerdnsadmin:cr>\n\nJul 28 18:59:39 jammy systemd[1]: Started PowerDNS-Admin.\nJul 28 18:59:39 jammy gunicorn[37722]: [2023-07-28 18:59:39 +0000] [37722] [INFO] Starting gunicorn 20.1.0\nJul 28 18:59:39 jammy gunicorn[37722]: [2023-07-28 18:59:39 +0000] [37722] [INFO] Listening at: unix:\/run\/pdnsadmin\/socket (37722)\nJul 28 18:59:39 jammy gunicorn[37722]: [2023-07-28 18:59:39 +0000] [37722] [INFO] Using worker: sync\nJul 28 18:59:39 jammy gunicorn[37723]: [2023-07-28 18:59:39 +0000] [37723] [INFO] Booting worker with pid: 37723\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 Fri 2023-07-28 18:59:39 UTC; 6s ago\n   Triggers: \u25cf pdnsadmin.service\n     Listen: \/run\/pdnsadmin\/socket (Stream)\n     CGroup: \/system.slice\/pdnsadmin.socket\n\nJul 28 18:59:39 jammy 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=\"Install and Setup PowerDNS Admin on Ubuntu 22.04\" 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 22.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-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","protected":false},"excerpt":{"rendered":"<p>In this tutorial, you will learn how to easily install and setup PowerDNS Admin on Ubuntu 22.04. PowerDNS Admin is a web administrative interface for<\/p>\n","protected":false},"author":10,"featured_media":18128,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"rank_math_lock_modified_date":false,"footnotes":""},"categories":[121,971,972],"tags":[7121,7125,2787,7123,7124,7122],"class_list":["post-18124","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-howtos","category-dns","category-powerdns","tag-install-powerdns-admin-on-ubuntu-22-04","tag-pdns_control-version","tag-powerdns-admin","tag-powerdns-admin-ubuntu-22-04-install","tag-powerdns-version","tag-ubuntu-22-04-powerdns-admin","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\/18124"}],"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\/10"}],"replies":[{"embeddable":true,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/comments?post=18124"}],"version-history":[{"count":4,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/posts\/18124\/revisions"}],"predecessor-version":[{"id":20795,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/posts\/18124\/revisions\/20795"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/media\/18128"}],"wp:attachment":[{"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/media?parent=18124"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/categories?post=18124"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/tags?post=18124"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}