Step by Step Installation

Agent CentOS / CloudLinux Instractions

Installing – Adding the repository

CentOS 6

yum localinstall nixpal-el6-1.2-2.el6.x86_64.rpm 

CentOS 7

yum localinstall nixpal-el7-1.1-1.el7.x86_64.rpm 

CentOS 8

yum localinstall nixpal-el8-1.1-1.el8.x86_64.rpm 

Now install zcloudagent

yum clean all
yum install zcloudagent 

Debian and Ubuntu Installation

Import the GPG key then get the nixpal.list file and just apt-get update. Complete command list:

wget -O /tmp/nixpal.key -q ; apt-key add /tmp/nixpal.key
wget -O /etc/apt/sources.list.d/nixpal.list
apt-get update 

Import the GPG key then get the nixpal.list file and just apt-get update. Complete command list:

apt-get update ; apt-get install zcloudagent 

FreeBSD Installation

FreeBSD comes in a single .tar.gz package. 

Also Because of its nature we need curl and gcc.

pkg install curl
pkg install gcc
tar -zxvf zcloudagent-FreeBSD.tar.gz
cd zcloudagent

You will see a script. You can run it or inspect it first. zcloudagent binary goes to /usr/local/bin . zcloudagent.conf goes to /usr/local/etc/ and service file goes to /usr/local/etc/rc.d/ .

Don’t forget to enable the service to /etc/rc.conf and make changes to conf file. After editing /usr/local/etc/zcloudagent.conf you can enable and start service

service zcloudagent start

Configuring and starting zonecloud

Edit /etc/zcloudagent.conf


Controller URL without https://
Server’s Token
License information

Should look like that in the end


If the server is Debian/Ubuntu the only different is the location of named.conf. It should be ZONES_FILE=/etc/bind/named.conf

Enabling / Starting Zonecloud Agent

CentOS 6

chkconfig zcloudagent on
service zcloudagent start 

Centos 7/8 and Debian / Ubuntu

systemctl enable zcloudagent --now 

Check service if started  with “status”
Centos 6: service zcloudagent status

CentOS 7 / 8: systemctl status zcloudagent
Also check Controller web interface if the agent sending zone information

Configuring named.conf

We now need to tell our Bind which our nodes are:

We create a ACL with our NODES IPS:

acl "nodes" {; //; //; //; //

And then we add in options:

notify explicit;
//allow-query {"nodes";}; /* You should stop answering queries once Nodes are online but needed for migration */
allow-transfer {"nodes";};
allow-notify {"nodes";};


Let’s have a look of an Agent’s Cloudlinux 7 named.conf what looks like

include "/etc/rndc.key";
/* First of all we declare ACL with our Nodes (Our own DNS Servers) IPs */
/* Let's name this acl "nodes" */
acl "nodes" {; //; //; //; //
/* Then we leave the default -or edit as you need options (stats, versions, hostname, pid-file, directory */
/* The only change we need is recursion to be NO */
controls {
        inet allow { localhost; } keys { "rndc-key"; };
options {
recursion no;
directory                "/var/named"; // the default
pid-file                 "/var/run/named/";
dump-file                "data/cache_dump.db";
statistics-file          "data/named_stats.txt";
version "";
hostname "";
notify yes;
allow-query {any;};
allow-transfer {"nodes";};
allow-notify   {"nodes";};
notify-to-soa yes;
also-notify    {;;;; };
/* That's it. We don't need something else from named.conf. Everything else stays as is */
logging {
        channel default_log {
                file "/var/log/named/named.log" versions 5 size 128M;
                print-time yes;
                print-severity yes;
                print-category yes;
                severity warning;
        category default { default_log; };
        category general { default_log; };
zone "" {
        type master;
        file "/var/named/";
The webserver now will stop answering queries if the allow-query set to nodes. That’s a node’s job. And it will notify / update the nodes and the nodes only.
Change to
allow-query {any;};
If you like also the webserver to serve / answer to DNS queries (For example when migrating from local to cluster DNS)

Questions? Issues?

Scroll to Top