(Last Updated On: August 9, 2018)

ISPConfig is an open source hosting control panel developed by company ISPConfig UG for Linux. ISPConfig is licensed under BSD license. It is capable of managing multiple servers from one control panel. In this guide, I’ll show you how to set up and use ISPConfig to manage Bind DNS Server.

ISPConfig can manage below software packages and daemons:

  • HTTP: Apache2 and nginx
  • SMTP: Postfix
  • POP3/IMAP: Courier and Dovecot (1.2.x)
  • FTP: PureFTPd
  • DNS: BIND and MyDNS
  • Database: MySQL
  • Statistics: Webalizer and AWStats
  • Virtualization: OpenVZ

For a list of all services and features, check ISPconfig Features page.

Setup ISPConfig DNS Only

To have a functioning ISPConfig DNS only server, we will:

  • Install and configure Bind
  • Install and configure ISPConfig GUI

Step 1: Install and Configure Bind DNS Server

Start by installing epel-release then bind package

sudo yum install epel-release

Install bind:

sudo yum -y install bind bind-utils haveged

Once bind has been installed, backup configuration file and create a new one:

sudo mv /etc/named.conf /etc/named.conf.bak

Create a new configuration file with below content:

# cat /etc/named.con
options {
      listen-on port 53 { any; };
      listen-on-v6 port 53 { any; };
      directory       "/var/named";
      dump-file       "/var/named/data/cache_dump.db";
      statistics-file "/var/named/data/named_stats.txt";
      memstatistics-file "/var/named/data/named_mem_stats.txt";
      allow-query     { any; };
      allow-recursion {"none";};
      recursion no;
};
logging {
      channel default_debug {
              file "data/named.run";
              severity dynamic;
      };
};
zone "." IN {
      type hint;
      file "named.ca";
};
include "/etc/named.conf.local";

Create a named.conf.local then start named service

sudo touch /etc/named.conf.local
sudo systemctl enable named.service
sudo systemctl start named.service

Step 1: Install and Configure ISPConfig on CentOS 7

ISPConfig requires:

  • MySQL Database
  • PHP

To install MariaDB Server, use: Install MariaDB 10.x on CentOS 7

Add Remi repository for installing PHP:

We will install all PHP packages from the Remi repository. Add it like below

sudo yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
sudo yum install yum-utils
sudo yum-config-manager --disable remi-php54
sudo yum-config-manager --enable remi-php72

Install PHP and required modules

Use the following commands to install PHP and its modules

sudo yum install php php-devel php-mysql php-gd php-imap php-ldap \
php-pear php-xml php-xmlrpc php-pecl-apc php-mbstring php-mcrypt \
php-snmp php-soap php-tidy curl curl-devel perl-libwww-perl ImageMagick \
libxml2 libxml2-devel mod_fcgid php-cli wget

Install httpd:

sudo yum install ntp httpd httpd-devel mod_ssl perl-DateTime-Format-HTTP perl-DateTime-Format-Builder

Set PHP timezone:

$ sudo vim /etc/php.ini
date.timezone = Africa/Nairobi

Restart httpd:

sudo systemctl restart httpd

For Nginx:

sudo yum install nginx

Install and configure ISPConfig DNS Only

As of this writing, the latest release of ISPConfig is 3.1. Install this using commands below:

cd /tmp 
wget -O ispconfig.tar.gz https://git.ispconfig.org/ispconfig/ispconfig3/repository/archive.tar.gz?ref=stable-3.1

Extract the archive:

tar xfz ispconfig.tar.gz

Start installation:

cd ispconfig3*/install/
php -q install.php

You should get an initial screen similar to below:

--------------------------------------------------------------------------------
 _____ ___________   _____              __ _         ____
|_   _/  ___| ___ \ /  __ \            / _(_)       /__  \
  | | \ `--.| |_/ / | /  \/ ___  _ __ | |_ _  __ _    _/ /
  | |  `--. \  __/  | |    / _ \| '_ \|  _| |/ _` |  |_ |
 _| |_/\__/ / |     | \__/\ (_) | | | | | | | (_| | ___\ \
 \___/\____/\_|      \____/\___/|_| |_|_| |_|\__, | \____/
                                              __/ |
                                             |___/ 
--------------------------------------------------------------------------------


>> Initial configuration  

Operating System: CentOS 7.5

    Following will be a few questions for primary configuration so be careful.
    Default values are in [brackets] and can be accepted with <ENTER>.
    Tap in "quit" (without the quotes) to stop the installer.

Choose the expert mode of installation, and select install Web Service and DNS

Select language (en,de) [en]:

Installation mode (standard,expert) [standard]: expert

Full qualified hostname (FQDN) of the server, eg server1.domain.tld  [nms-02.eadc.]: dns-01.example.com

MySQL server hostname [localhost]:

MySQL server port [3306]:

MySQL root username [root]:

MySQL root password []: myslq-root-password

MySQL database to create [dbispconfig]:

MySQL charset [utf8]:

The next two questions are about the internal ISPConfig database user and password.
It is recommended to accept the defaults which are 'ispconfig' as username and a random password.
If you use a different password, use only numbers and chars for the password.

ISPConfig mysql database username [ispconfig]:

ISPConfig mysql database password [cf503263b8a5ca9141319b09d50d75fc]:

Shall this server join an existing ISPConfig multiserver setup (y,n) [n]:

Apache and nginx detected. Select server to use for ISPConfig: (apache,nginx) [apache]: 

Adding ISPConfig server record to database.

Configure Mail (y,n) [y]: n

[WARN] autodetect for Jailkit failed
Force configure Jailkit (y,n) [n]: n

Skipping Jailkit

[WARN] autodetect for pureftpd failed
Force configure pureftpd (y,n) [n]: n

Skipping pureftpd

Configure DNS Server (y,n) [y]: y

Configuring BIND
The Web Server option has to be enabled when you want run a web server or when this node shall host the ISPConfig interface.
Configure Web Server (y,n) [y]: y

Configuring Apache
Configuring vlogger
[WARN] autodetect for OpenVZ failed
Force configure OpenVZ (y,n) [n]: n

Skipping OpenVZ

Configure Firewall Server (y,n) [y]: n

[WARN] autodetect for Metronome XMPP Server failed
Force configure Metronome XMPP Server (y,n) [n]: n

Skipping Metronome XMPP Server

[WARN] autodetect for Fail2ban failed
Force configure Fail2ban (y,n) [n]: n

Skipping Fail2ban

Configuring Apps vhost
Install ISPConfig Web Interface (y,n) [y]: y

Installing ISPConfig
ISPConfig Port [8080]: 

Admin password [fa3cbace]: 

Do you want a secure (SSL) connection to the ISPConfig web interface (y,n) [y]: y

Generating RSA private key, 4096 bit long modulus
....................................++
....................................................................................................................................++
e is 65537 (0x10001)
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:KE
State or Province Name (full name) []: Nairobi
Locality Name (eg, city) [Default City]: Nairobi
Organization Name (eg, company) [Default Company Ltd]:Computingforgeeks Limited
Organizational Unit Name (eg, section) []:Infrastructure
Common Name (eg, your name or your server's hostname) []:dns-01.example.com
Email Address []:infrastructure@example.com

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
writing RSA key
			

Configuring DBServer
Installing ISPConfig crontab
Installing ISPConfig crontab
no crontab for root
Detect IP addresses
Restarting services ...
done..

Open ISPConfig on the firewall:

sudo firewall-cmd --add-port=8080/tcp --permanent
sudo firewall-cmd --reload

You should now be able to access ISPConfig Web Dashboard:

https://server-ip|hostname:8080

You can start creating DNS zone files and managing records.