...
πŸš€ deploy zonemaster on debian vps
Learn how to deploy zonemaster on debian vps!

This article provides a guide demonstrating how to deploy Zonemaster on Debian VPS.

What is Zonemaster?

Zonemaster is an open-source DNS testing and validation framework designed to thoroughly analyze the health, correctness, and performance of a domain’s DNS configuration. It is jointly developed and maintained by AFNIC (registry for .fr) and IIS/Internetstiftelsen (registry for .se).

Think of it as a β€œDNS diagnostics engine” that performs deep, standards-compliant checks to help domain owners, hosting providers, and DNS administrators ensure their DNS is configured correctly.

⭐ What Zonemaster Does

Zonemaster performs comprehensive DNS tests that verify:

  1. 1. DNS Configuration Health
    • NS (nameserver) consistency
    • Glue records
    • SOA records
    • DNSSEC chain of trust
    • IPv4/IPv6 support
    • Delegation correctness
  2. 2. DNS Performance
    • Nameserver responsiveness
    • Packet loss
    • Latency and timeouts
    • TCP vs UDP responsiveness
  3. 3. Standards Compliance

    Zonemaster’s tests are based on:

    • IETF RFCs
    • Best practices from major TLD registries
    • DNSSEC technical norms
  4. 4. Error Detection

    Zonemaster identifies:

    • Misconfigured DNS records
    • Missing or incorrect glue
    • DNSSEC failures
    • Serial number mismatches
    • Recursion issues
    • Parent/child zone inconsistencies
    • Nameservers not authoritative
    • Email DNS issues (MX, SPF, etc., indirectly)

πŸ” Three Major Components

Zonemaster is composed of:

  1. 1. Zonemaster Engine

    The core module that runs all tests and produces results.
    Used by the CLI and the web interface.

  2. 2. Zonemaster CLI

    A command-line tool for running tests directly on a server:

    zonemaster-cli example.com
    
  3. 3. Zonemaster Backend + GUI

    A web-based interface that allows anyone to run DNS tests in a browser.
    Your VPS can host a public Zonemaster instance.

πŸ§ͺ Why People Use Zonemaster

βœ” Hosting providers

Ensure domains hosted on their nameservers are working correctly.

βœ” Domain registrars

Validate domains at time of registration or DNS change.

βœ” DNS operators and sysadmins

Periodically audit DNS health and detect errors early.

βœ” Security-conscious organizations

Validate DNSSEC configuration and trust chain.

βœ” Developers and researchers

Automate DNS testing with API endpoints.

πŸ“¦ Key Features

  • Deep DNS analysis comparable to DNSInspect, DNSViz, and IntoDNS
  • DNSSEC validation and chain-of-trust testing
  • Public API for integrations
  • Web-based user interface
  • Highly detailed test reports
  • Compatible with all TLDs
  • Actively maintained by major domain registries

🏁 In Short

Zonemaster is a professional-grade DNS testing suite that helps ensure domain configurations are correct, secure, and fully compliant with DNS standards.

This guide covers installations on Debian 12 (Bookworm).

βœ… Overview: What You Will Install

Component Purpose
Zonemaster Engine Core DNS testing logic
Zonemaster CLI Command-line test runner
Zonemaster Backend RPC/REST API for web UI
Zonemaster Web GUI Browser-based interface for DNS testing

Launch 100% ssd debian vps from $2. 49/mo!

How to Deploy Zonemaster on Debian VPS

To deploy Zonemaster on Debian VPS, follow the steps below:

  1. πŸ› οΈ Prerequisites

    1. System Requirements

      • Debian 12 VPS (2 GB RAM minimum recommended)
      • Root or sudo access
      • Static public IP address
      • A domain name for GUI access (optional)
    2. Update System

      sudo apt update && sudo apt upgrade -y
      sudo apt install curl git build-essential unzip ufw -y
      
  2. 🧱 Install Zonemaster Engine

    The Engine is the foundational component.

    1. Install Dependencies

      sudo apt install libmodule-install-perl perl libmoose-perl libmoosex-markasmethods-perl libfile-slurp-perl libhash-merge-perl libnetaddr-ip-perl libjson-perl libjson-pp-perl liblist-moreutils-perl liblocale-maketext-perl libmoosex-getopt-perl libnet-ip-perl libplack-perl libplack-middleware-debug-perl libtest-deep-perl libtest-fatal-perl libtest-json-perl libtie-ixhash-perl libtry-tiny-perl libyaml-libyaml-perl libdevel-checklib-perl libssl-dev libextutils-pkgconfig-perl libidn2-dev gettext -y
      sudo apt update
      sudo apt install autoconf automake build-essential cpanminus libclass-accessor-perl libclone-perl libdevel-checklib-perl libemail-valid-perl libextutils-pkgconfig-perl libfile-sharedir-perl libfile-slurp-perl libidn2-dev libintl-perl libio-socket-inet6-perl liblist-compare-perl liblist-moreutils-perl liblocale-po-perl liblog-any-perl libmail-spf-perl libmime-base32-perl libmodule-find-perl libmodule-install-perl libmodule-install-xsutil-perl libnet-dns-perl libnet-ip-xs-perl libpod-coverage-perl libreadonly-perl libssl-dev libsub-override-perl libtest-differences-perl libtest-exception-perl libtest-fatal-perl libtest-nowarnings-perl libtest-pod-perl libtext-csv-perl libyaml-libyaml-perl libtool m4 -y
    2. Download Zonemaster Engine

      cd /opt
      sudo git clone https://github.com/zonemaster/zonemaster-engine.git
      cd zonemaster-engine
      
    3. Install CPAN Dependencies

      sudo cpanm --installdeps .
      sudo cpan install Zonemaster::Engine::Nameserver::Cache::RedisCache
      
    4. Install Zonemaster Engine

      sudo perl Makefile.PL
      sudo make
      sudo make test
      sudo make install
      
  3. πŸ–₯️ Install Zonemaster CLI (zonemaster-cli)

    The CLI is part of Engine but needs a small wrapper.

    Install:

    sudo apt install zonemaster-cli -y
    sudo cpanm Zonemaster::CLI
    

    Test:

    zonemaster-cli example.com
    

    You should see DNS test output.

  4. πŸ”Œ Install Zonemaster Backend (API)

    The Backend exposes an HTTP API for the GUI.

    1. Install Dependencies

      sudoΒ perlΒ -piΒ -eΒ 's/^#Β (da_DK\.UTF-8.*|en_US\.UTF-8.*|es_ES\.UTF-8.*|fi_FI\.UTF-8.*|fr_FR\.UTF-8.*|nb_NO\.UTF-8.*|sl_SI\.UTF-8.*|sv_SE\.UTF-8.*)/$1/'Β /etc/locale.gen
      sudo locale-gen
      sudo apt install jq libclass-accessor-lite-perl libconfig-inifiles-perl libdaemon-control-perl libdata-validate-domain-perl libdata-validate-ip-perl libfuture-asyncawait-perl libfuture-perl libhttp-parser-xs-perl libio-multiplex-perl libio-socket-socks-perl libjq1 libjs-bootstrap4 libjs-highlight.js libjs-popper.js libjs-sizzle libjson-rpc-perl libjson-validator-perl liblog-any-adapter-dispatch-perl libmath-base85-perl libmojo-server-fastcgi-perl libmojolicious-perl libnet-cidr-perl libnet-idn-encode-perl libnet-ipv6addr-perl libnet-netmask-perl libnet-server-perl
      libnet-server-ss-prefork-perl libonig5 libparallel-forkmanager-perl libplack-middleware-reverseproxy-perl librouter-simple-perl libsereal-encoder-perl libserver-starter-perl libsub-uplevel-perl libtest-exception-perl libtest-nowarnings-perl libxs-parse-keyword-perl libxs-parse-sublike-perl node-jquery openapi-specification perl-doc starman -y
      sudo apt install libdbi-perl libdbd-sqlite3-perl sqlite3 libdaemon-generic-perl libio-captureoutput-perl liblog-any-perl liblog-dispatch-perl libsoap-lite-perl libfile-sharedir-perl -y
      
    2. Download Backend

      cd /opt
      sudo git clone https://github.com/zonemaster/zonemaster-backend.git
      cd zonemaster-backend
      
    3. Install Perl Dependencies

      sudo cpanm --installdeps .
      
    4. Configure Backend

      Copy example config:

      sudo cpanm --notest Zonemaster::Backend
      sudo useradd -r -c "Zonemaster daemon user" zonemaster
      cd `perl -MFile::ShareDir=dist_dir -E 'say dist_dir("Zonemaster-Backend")'`
      sudo install -v -m 755 -d /etc/zonemaster
      sudo install -v -m 775 -g zonemaster -d /var/log/zonemaster
      sudo install -v -m 640 -g zonemaster ./backend_config.ini /etc/zonemaster/
      sudo install -v -m 755 ./zm-rpcapi.lsb /etc/init.d/zm-rpcapi
      sudo install -v -m 755 ./zm-testagent.lsb /etc/init.d/zm-testagent
      sudo install -v -m 644 ./tmpfiles.conf /usr/lib/tmpfiles.d/zonemaster.conf
      sudo install -v -m 755 -o zonemaster -g zonemaster -d /var/lib/zonemaster
      sudo -u zonemaster $(perl -MFile::ShareDir -le 'print File::ShareDir::dist_dir("Zonemaster-Backend")')/create_db.pl
      sudo systemd-tmpfiles --create /usr/lib/tmpfiles.d/zonemaster.conf
      sudo systemctl enable zm-rpcapi
      sudo systemctl enable zm-testagent
      sudo systemctl start zm-rpcapi
      sudo systemctl start zm-testagent
      

      Edit config:

      sudo nano /etc/zonemaster_backend_config.ini
      

      Recommended settings:

      [DB]
      engine = SQLite
      database_file = /var/lib/zonemaster/zonemaster.sqlite
      
      [LOG]
      level = INFO
      
      [RPCAPI]
      enable = yes
      listen = 127.0.0.1
      port = 5000
      
    5. Initialize Database

      sudo mkdir -p /var/lib/zonemaster/
      sudo ./script/create_db.pl
      
    6. Create Systemd Service

      Create service file:

      sudo nano /etc/systemd/system/zonemaster-backend.service
      

      Add:

      [Unit]
      Description=Zonemaster Backend API
      After=network.target
      
      [Service]
      User=root
      ExecStart=/usr/bin/plackup -R lib -s Starman --listen 127.0.0.1:5000 bin/zonemaster_backend.psgi
      WorkingDirectory=/opt/zonemaster-backend
      Restart=always
      
      [Install]
      WantedBy=multi-user.target
      

      Enable + start:

      sudo systemctl daemon-reload
      sudo systemctl enable --now zonemaster-backend
      

      Test API:

      curl http://127.0.0.1:5000/api/version
      
  5. 🌐 Install Zonemaster Web GUI

    1. Install Dependencies

      sudo apt-get update && sudo apt-get upgrade -y
      sudo apt-get install -y apache2 unzip
      
    2. Basic Apache Configuration

      sudo a2enmod proxy proxy_http rewrite
      sudo a2dissite 000-default
      sudo systemctl enable apache2
      sudo systemctl restart apache2
    3. Download GUI

      wget https://github.com/zonemaster/zonemaster-gui/releases/download/v4.4.0/zonemaster_web_gui.zip -O zonemaster_web_gui.zip
      sudo unzip -d /var/www/html/zonemaster-web-gui zonemaster_web_gui.zip
      sudo install -vd /var/log/zonemaster
      sudo install -v /var/www/html/zonemaster-web-gui/zonemaster.conf-example /etc/apache2/sites-available/zonemaster.conf
      rm -f zonemaster_web_gui.zip
      
    4. Configure Zonemaster Web GUI

      sudo a2ensite zonemaster
      

      Update the zonemaster.conf file with your own ServerName, ServerAlias and ServerAdmin:

      nano /etc/apache2/sites-available/zonemaster.conf
    5. Reload Apache

      sudo systemctl reload apache2
  6. πŸ”’ Enable SSL (Optional but Recommended)

    Using Let’s Encrypt:

    sudo apt install certbot python3-certbot-apache -y
    sudo certbot --apache -d zonemaster.example.com
    

    Auto-renews daily.

  7. πŸ§ͺ Test Zonemaster Deployment

    Visit:

    https://zonemaster.example.com
    
    Zonemaster results for radwebhosting. Com
    Zonemaster results for radwebhosting. Com

    Run a test on any domain.
    Zonemaster results for radwebhosting. Com

    Β 

    Or test via API:

    curl -X POST http://127.0.0.1:5000/api/run \
         -H "Content-Type: application/json" \
         -d '{"domain":"example.com"}'
    
  8. πŸ”§ Useful Commands

    1. Restart Backend

      sudo systemctl restart zonemaster-backend
      
    2. Check Backend logs

      journalctl -u zonemaster-backend

πŸŽ‰ You Now Have a Full Zonemaster Deployment on Debian!

This installation includes:

βœ” Zonemaster Engine
βœ” CLI tools
βœ” Backend API
βœ” Web GUI with Nginx
βœ” Optional SSL for secure access
Launch 100% ssd debian vps from $2. 49/mo!

Conclusion

You now know how to deploy Zonemaster on Debian VPS.

Avatar of editorial staff

Editorial Staff

Rad Web Hosting is a leading provider of web hosting, Cloud VPS, and Dedicated Servers in Dallas, TX.
lg