{"id":11016,"date":"2021-11-28T10:27:58","date_gmt":"2021-11-28T07:27:58","guid":{"rendered":"https:\/\/kifarunix.com\/?p=11016"},"modified":"2024-03-18T08:03:43","modified_gmt":"2024-03-18T05:03:43","slug":"easily-install-powerdns-admin-on-debian-11-debian-10","status":"publish","type":"post","link":"https:\/\/kifarunix.com\/easily-install-powerdns-admin-on-debian-11-debian-10\/","title":{"rendered":"Easily Install PowerDNS Admin on Debian 11\/Debian 10"},"content":{"rendered":"\n<p>In this tutorial, you will learn how to easily install PowerDNS Admin on Debian 11\/Debian 10.&nbsp;<a href=\"https:\/\/github.com\/ngoduykhanh\/PowerDNS-Admin\" target=\"_blank\" rel=\"noreferrer noopener\">PowerDNS Admin<\/a>&nbsp;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<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\">Installing PowerDNS Admin on Debian 11\/Debian 10<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Install and Setup PowerDNS on Debian 11\/Debian 10<\/h3>\n\n\n\n<p>Follow the link below to install PowerDNS on Debian 11\/Debain 10:<\/p>\n\n\n\n<p><a href=\"https:\/\/kifarunix.com\/easily-install-and-setup-powerdns-on-debian-11-debian-10\/\" target=\"_blank\" rel=\"noreferrer noopener\">Easily Install and Setup PowerDNS on Debian 11\/Debian 10<\/a><\/p>\n\n\n\n<p>NOTE: We installed PowerDNS Admin on the same server with PowerDNS already installed.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">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-code\"><code>apt install python3-dev<\/code><\/pre>\n\n\n\n<p>Install various required build tools and package dependencies.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>apt install libsasl2-dev libldap2-dev libssl-dev libxml2-dev libxslt1-dev libxmlsec1-dev libffi-dev pkg-config apt-transport-https virtualenv build-essential libmariadb-dev git python3-flask -y<\/code><\/pre>\n\n\n\n<p>Install NodeJS on Debian 10\/Debian 11;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>apt install curl sudo git -y<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>curl -sL https:\/\/deb.nodesource.com\/setup_17.x | sudo -E bash -<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>apt install -y nodejs<\/code><\/pre>\n\n\n\n<p>Install Yarn on Debian 11\/Debian 10<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>curl -sL https:\/\/dl.yarnpkg.com\/debian\/pubkey.gpg | gpg --dearmor | sudo tee \/usr\/share\/keyrings\/yarnkey.gpg &gt;\/dev\/null<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>echo \"deb &#91;signed-by=\/usr\/share\/keyrings\/yarnkey.gpg] 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-code\"><code>apt update\napt install yarn -y<\/code><\/pre>\n\n\n\n<p>Install Nginx HTTP Server Debian 10\/Debian 11<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>apt install nginx -y<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">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.<\/p>\n\n\n\n<p>In this setup, we use,&nbsp;<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-code\"><code>git clone https:\/\/github.com\/ngoduykhanh\/PowerDNS-Admin.git \/var\/www\/html\/pdns<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">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-code\"><code>cd \/var\/www\/html\/pdns\/<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>virtualenv -p python3 flask<\/code><\/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-code\"><code>source .\/flask\/bin\/activate<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>pip install -r requirements.txt<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Configure PowerDNS Admin Database Connection<\/h3>\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<p>Edit the default PowerDNS admin configuration file, <code>$WEB_ROOT\/powerdnsadmin\/default_config.py<\/code>, to define the database connection details.<\/p>\n\n\n\n<p>Replace the $WEB_ROOT with the path to your web root directory.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>vim \/var\/www\/html\/pdns\/powerdnsadmin\/default_config.py<\/code><\/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\nSALT = 'xohDoozee8Zuneekooch9ohrieghei'\nSECRET_KEY = 'hohru1aethaeyahpheH7Gaathaikah'\nBIND_ADDRESS = '192.168.58.22'\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&nbsp;<a href=\"https:\/\/kifarunix.com\/easily-install-and-setup-powerdns-on-debian-11-debian-10\/#create-pdns-database\" 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-code\"><code>cd \/var\/www\/html\/pdns\/<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>source .\/flask\/bin\/activate<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>export FLASK_APP=powerdnsadmin\/__init__.py<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>flask db upgrade<\/code><\/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-code\"><code>yarn install --pure-lockfile<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>flask assets build<\/code><\/pre>\n\n\n\n<p>Deactivate virtual environment.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>deactivate<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Running PowerDNS Admin<\/h3>\n\n\n\n<p>Once it is setup, you can run PowerDNS admin in standalone mode, by executing the&nbsp;<code><strong>run.py<\/strong><\/code>&nbsp;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\">Enable PowerDNS API access<\/h4>\n\n\n\n<p>\u201c<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>\u201c.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Open PowerDNS configuration file<\/li>\n\n\n\n<li>Enable API<\/li>\n\n\n\n<li>Generate and set the API Key;<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>vim \/etc\/powerdns\/pdns.conf<\/code><\/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\napi=yes\n\n#################################\n# api-key       Static pre-shared authentication key for access to the REST API\n#\n# api-key=\napi-key=ahqu4eiv2vaideep8AQu9nav5Aing0\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-code\"><code>systemctl restart pdns<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">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-code\"><code>vim \/etc\/nginx\/conf.d\/pdns-admin.conf<\/code><\/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.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>mv \/etc\/nginx\/sites-enabled\/default{,.old}<\/code><\/pre>\n\n\n\n<p>Run config syntax check.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>nginx -t<\/code><\/pre>\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>Set ownership of Pdns Admin web root directory to web user;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>chown -R www-data: \/var\/www\/html\/pdns<\/code><\/pre>\n\n\n\n<p>Restart Nginx;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>systemctl restart nginx<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">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 by running the command below;<\/p>\n\n\n\n<pre class=\"scroll-box\"><code>\ncat > \/etc\/systemd\/system\/pdnsadmin.service << '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 > \/etc\/systemd\/system\/pdnsadmin.socket << '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-code\"><code>echo \"d \/run\/pdnsadmin 0755 pdns pdns -\" &gt;&gt; \/etc\/tmpfiles.d\/pdnsadmin.conf<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>mkdir \/run\/pdnsadmin\/<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>chown -R pdns: \/run\/pdnsadmin\/<\/code><\/pre>\n\n\n\n<pre id=\"block-bb7dcd93-5c05-4d86-ad22-2e7c35adae9a\" class=\"wp-block-code\"><code>chown -R pdns: \/var\/www\/html\/pdns\/powerdnsadmin\/<\/code><\/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-code\"><code>systemctl enable --now pdnsadmin.service pdnsadmin.socket<\/code><\/pre>\n\n\n\n<p>Check the status;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>systemctl status pdnsadmin.service pdnsadmin.socket<\/code><\/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 Sun 2021-11-28 02:00:51 EST; 10s ago\n Main PID: 13859 (gunicorn)\n    Tasks: 2 (limit: 2359)\n   Memory: 65.7M\n   CGroup: \/system.slice\/pdnsadmin.service\n           \u251c\u250013859 \/var\/www\/html\/pdns\/flask\/bin\/python3 \/var\/www\/html\/pdns\/flask\/bin\/gunicorn --pid \/run\/pdnsadmin\/pid --bind unix:\/run\/pdnsadmin\/socket powerdnsadmin:creat\n           \u2514\u250013862 \/var\/www\/html\/pdns\/flask\/bin\/python3 \/var\/www\/html\/pdns\/flask\/bin\/gunicorn --pid \/run\/pdnsadmin\/pid --bind unix:\/run\/pdnsadmin\/socket powerdnsadmin:creat\n\nNov 28 02:00:51 debian systemd[1]: Started PowerDNS-Admin.\nNov 28 02:00:51 debian gunicorn[13859]: [2021-11-28 02:00:51 -0500] [13859] [INFO] Starting gunicorn 20.0.4\nNov 28 02:00:51 debian gunicorn[13859]: [2021-11-28 02:00:51 -0500] [13859] [INFO] Listening at: unix:\/run\/pdnsadmin\/socket (13859)\nNov 28 02:00:51 debian gunicorn[13859]: [2021-11-28 02:00:51 -0500] [13859] [INFO] Using worker: sync\nNov 28 02:00:51 debian gunicorn[13859]: [2021-11-28 02:00:51 -0500] [13862] [INFO] Booting worker with pid: 13862\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 Sun 2021-11-28 02:00:51 EST; 10s ago\n   Listen: \/run\/pdnsadmin\/socket (Stream)\n   CGroup: \/system.slice\/pdnsadmin.socket\n\nNov 28 02:00:51 debian systemd[1]: Listening on PowerDNS-Admin socket.\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">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\"><code>ufw allow \"Nginx Full\"<\/code><\/pre>\n\n\n\n<p>As per our configuration above, you can access PowerDNS Admin web interface via the address&nbsp;<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 hints<\/em><\/strong>).<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"963\" height=\"526\" src=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2021\/11\/pdns-web-login.png\" alt=\"\" class=\"wp-image-11025\" title=\"\" srcset=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2021\/11\/pdns-web-login.png?v=1638084058 963w, https:\/\/kifarunix.com\/wp-content\/uploads\/2021\/11\/pdns-web-login-768x419.png?v=1638084058 768w\" sizes=\"(max-width: 963px) 100vw, 963px\" \/><\/figure><\/div>\n\n\n<h4 class=\"wp-block-heading\">Create PowerDNS Admin administrative user account<\/h4>\n\n\n\n<p>Click&nbsp;<strong>Create an account<\/strong>&nbsp;to create the very first PowerDNS Admin admin user. Enter the user details.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1088\" height=\"698\" src=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2021\/11\/powerdns-create-user-account.png\" alt=\"\" class=\"wp-image-11026\" title=\"\" srcset=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2021\/11\/powerdns-create-user-account.png?v=1638084114 1088w, https:\/\/kifarunix.com\/wp-content\/uploads\/2021\/11\/powerdns-create-user-account-768x493.png?v=1638084114 768w\" sizes=\"(max-width: 1088px) 100vw, 1088px\" \/><\/figure>\n\n\n\n<p>Click&nbsp;<strong>Register<\/strong>&nbsp;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<p>You will see an error asking you to complete the API setup.<\/p>\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, <strong><code>http:\/\/127.0.0.1:8081<\/code><\/strong> by default<\/li>\n\n\n\n<li>the API Key you defined in the PowerDNS configuration file.<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1900\" height=\"701\" src=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2021\/11\/powerdns-api-setup.png\" alt=\"\" class=\"wp-image-11027\" title=\"\" srcset=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2021\/11\/powerdns-api-setup.png?v=1638084177 1900w, https:\/\/kifarunix.com\/wp-content\/uploads\/2021\/11\/powerdns-api-setup-768x283.png?v=1638084177 768w, https:\/\/kifarunix.com\/wp-content\/uploads\/2021\/11\/powerdns-api-setup-1536x567.png?v=1638084177 1536w\" sizes=\"(max-width: 1900px) 100vw, 1900px\" \/><\/figure>\n\n\n\n<p>Click&nbsp;<strong>Update<\/strong>&nbsp;and the error should just disappear.<\/p>\n\n\n\n<p>Click on the&nbsp;<strong>Dashboard<\/strong>&nbsp;to go to PowerDNS Admin dashboard.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1894\" height=\"898\" src=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2021\/11\/pdns-dashboard.png\" alt=\"\" class=\"wp-image-11028\" title=\"\" srcset=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2021\/11\/pdns-dashboard.png?v=1638084209 1894w, https:\/\/kifarunix.com\/wp-content\/uploads\/2021\/11\/pdns-dashboard-768x364.png?v=1638084209 768w, https:\/\/kifarunix.com\/wp-content\/uploads\/2021\/11\/pdns-dashboard-1536x728.png?v=1638084209 1536w\" sizes=\"(max-width: 1894px) 100vw, 1894px\" \/><\/figure>\n\n\n\n<p>As you can see, we already added the DNS records in our previous guide.<\/p>\n\n\n\n<p>If you click on the domain name under&nbsp;<strong>Hosted Domains<\/strong> (highlighted on the screenshot above), 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=\"1898\" height=\"698\" src=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2021\/11\/pdns-zone-records.png\" alt=\"\" class=\"wp-image-11029\" title=\"\" srcset=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2021\/11\/pdns-zone-records.png?v=1638084251 1898w, https:\/\/kifarunix.com\/wp-content\/uploads\/2021\/11\/pdns-zone-records-768x282.png?v=1638084251 768w, https:\/\/kifarunix.com\/wp-content\/uploads\/2021\/11\/pdns-zone-records-1536x565.png?v=1638084251 1536w\" sizes=\"(max-width: 1898px) 100vw, 1898px\" \/><\/figure>\n\n\n\n<p>That is the forward zone records.<\/p>\n\n\n\n<p>If you click on the reverse zone under the <strong>Dashboard<\/strong> &gt; <strong>Hosted Domains 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=\"1897\" height=\"634\" src=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2021\/11\/pdns-reverse-zone-records.png\" alt=\"\" class=\"wp-image-11030\" title=\"\" srcset=\"https:\/\/kifarunix.com\/wp-content\/uploads\/2021\/11\/pdns-reverse-zone-records.png?v=1638084280 1897w, https:\/\/kifarunix.com\/wp-content\/uploads\/2021\/11\/pdns-reverse-zone-records-768x257.png?v=1638084280 768w, https:\/\/kifarunix.com\/wp-content\/uploads\/2021\/11\/pdns-reverse-zone-records-1536x513.png?v=1638084280 1536w\" sizes=\"(max-width: 1897px) 100vw, 1897px\" \/><\/figure>\n\n\n\n<p>You can now manage your DNS records easily.<\/p>\n\n\n\n<p>That concludes our tutorial.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Other tutorials<\/h3>\n\n\n\n<p><a href=\"https:\/\/kifarunix.com\/easily-install-and-setup-powerdns-admin-on-ubuntu-20-04\/\" target=\"_blank\" rel=\"noreferrer noopener\">Easily Install and Setup PowerDNS Admin on Ubuntu 20.04<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/kifarunix.com\/easily-install-and-setup-powerdns-on-ubuntu-20-04\/\" target=\"_blank\" rel=\"noreferrer noopener\">Easily Install and Setup PowerDNS on Ubuntu 20.04<\/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 PowerDNS Admin on Debian 11\/Debian 10.&nbsp;PowerDNS Admin&nbsp;is a web administrative interface for PowerDNS. It enables<\/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":[121,971,972],"tags":[4315,973,4313,4314,4316,974],"class_list":["post-11016","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-howtos","category-dns","category-powerdns","tag-debian-powerdns-admin","tag-dns","tag-install-powerdns-admin-debian-10","tag-install-powerdns-admin-debian-11","tag-pdnsutil","tag-powerdns","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\/11016"}],"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=11016"}],"version-history":[{"count":3,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/posts\/11016\/revisions"}],"predecessor-version":[{"id":21601,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/posts\/11016\/revisions\/21601"}],"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=11016"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/categories?post=11016"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/tags?post=11016"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}