Introduction
This tutorial will show you how to install Virtualmin/Webmin on an Ubuntu cloud server and how to setup a DNS Master and a DNS Slave server. The setup covers all required steps.
Please note that this setup is for the Ubuntu cloud server, however it could possibly work for other cloud server OS distress.
Overview
- Requirements
- Notes
- First steps
- Installing the primary server
- Installing the secondary server
- Configure Cluster and DNS
- Pointing the main domain to DigitalOcean's name servers
- Other options
Requirements
- Two Ubuntu 12.04 LTS (x32/x64) cloud servers
- Primary server (minimum: 1GB, 1CPU, 30SSD; optimal: up to your needs)
- Secondary server (minimum: 512MB)
- Domain name - Set its name servers to DigitalOcean's name servers. (Maybe you can do this after server install because of the technical check.)
Notes
Virtualmin is a powerful web hosting control panel. You can manage your virtual domains, mailboxes, and databases. It is based on Webmin, a powerful control panel, which you can manage your server with.
Important: You cannot manage your main domain's DNS as we use DigitalOcean's name servers, so you have to setup your DNS records on the DigitalOcean control panel. If you create a virtual server in Virtualmin, you HAVE TO disable DNS.
First Steps
Let's start. Create two droplets (cloud servers). For the first usage, I recommend the following configurations:
- Primary server
- 1GB RAM
- 1 CPU
- Ubuntu 12.04 LTS x64
- server1.example.com
- 198.199.103.8
- Virtualmin
- Secondary server
- 512MB RAM
- 1 CPU
- Ubuntu 12.04 LTS x64
- server2.example.com
- 198.199.103.178
- Webmin
If you don't know how to create cloud servers, please refer to this article.
Please note: Virtualmin only works with LTS versions. (For other OS, please check the compatibility here.)
In this tutorial I use the hostname server1.example.com with the IP address 198.199.103.8 and the hostname server2.example.com with the IP address 198.199.103.178. These settings might differ for you, so you have to replace them where appropriate.
Setting up domain DNS (optional)
Now go to the Networking tab in the Control Panel. Enter your domain name (`example.com` in this example) in the Add a domain field:
Click on the A record type. In the HOSTNAME field, enter "server1" and in the WILL DIRECT TO field, type
198.199.103.8
(our IP address in this example). Click the Create Record button when you are finished. Repeat this process again, using "server2" as the hostname the second time.
Optional: You can create Address records to have ns1.example.com and ns2.example.com keeping with the convention of naming name servers nsN.domain.tld.
You don't have to point the domain to DigitalOcean's name servers. You can use your provider's name servers for the main domain. This will be discussed later.
Other notes: This tutorial assumes that you are logged in with root user. If not, please get root permissions, because I omit the sudo:
sudo su
Installing the Primary Server
This server will be our primary DNS and Virtualmin server. The first step is to edit the hosts file:
nano /etc/hosts
Make it look like this:
127.0.0.1 localhost 198.199.103.8 server1.example.com server1 ns1.example.com 198.199.103.178 server2.example.com server2 ns2.example.com # The following lines are desirable for IPv6 capable hosts ::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters
Make sure your system has a fully-qualified domain name:
hostname -f
You should see server1.example.com
Now download the script and install Virtualmin:
wget http://software.virtualmin.com/gpl/scripts/install.sh chmod +x install.sh ./install.sh
Answer 'y' for the asked question. There sould be no more questions. After the installation you can login here:
https://server1.example.com:10000
or
https://198.199.103.8:10000
Login with root. You will see a Post-Installation Wizard. For now just click next until you see this:
Make the settings look like the picture (You can also enter server1.example.com as primary, and server2.example.com as secondary DNS). If you confirmed that DNS has refreshed correctly, you can omit checking the checkbox.
Keep clicking next until the end of wizard.
Installing the Secondary Server
This server will be our secondary DNS and Webmin server
The first step is to edit the hosts file again:
nano /etc/hosts
Make it look like this:
127.0.0.1 localhost 198.199.103.178 server2.example.com server2 ns2.example.com 198.199.103.8 server1.example.com server1 ns1.example.com # The following lines are desirable for IPv6 capable hosts ::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters
Add the Webmin repositories to sources.list and install Webmin:
echo "deb http://download.webmin.com/download/repository sarge contrib" >> /etc/apt/sources.list.d/webmin.list echo "deb http://webmin.mirror.somersettechsolutions.co.uk/repository sarge contrib" >> /etc/apt/sources.list.d/webmin.list wget -O - http://www.webmin.com/jcameron-key.asc | apt-key add - apt-get update apt-get install -y webmin
Install BIND9 DNS server:
apt-get install bind9
After the installation you can login here:
https://server2.example.com:10000
or
https://198.199.103.178:10000
Configuring Cluster and DNS
Configuring Webmin Server
Go back to the Virtualmin server. Log in with root and go to the Webmin section. Browse Webmin>Webmin Servers Index.
Click Register a new server.
Enter server2.example.com as the hostname of your slave server.
Select Ubuntu OS as OS type.
Select a Link type of Login via Webmin with username, and enter the authentication details for your root account.
Change Make fast RPC calls? to Yes.
Click Save.
Configuring Secondary DNS
Now go to Servers>BIND DNS Server and click on Cluster Slave Servers.
In the Add server drop-down menu, select your slave server (if it's the only server you've added, you won't have to select it, as it will already be selected).
Set the Create secondary on slave when creating locally? option to Yes.
If you have already created any domains on your Virtualmin server, set the Create all existing master zones on slave? option to Yes.
If you entered ns2.example.com in the Post-Installation Wizard as secondary name server, then change the Name for NS record option to textbox and enter it.
Click Add server and return to the Module Index.
Click Apply Configuration in the right corner.
Setting the Master IP Address (optional)
By default, Virtualmin will use the IP address that the master server's hostname resolves to as the IP that the slaves should contact to transfer records. However, on some systems this IP is 127.0.0.1, which will not work. If you edited the hosts file at the beginning of the tutorial this should not be a problem, but I'll show you how to solve this.
Go to Servers>BIND DNS Server, and click on Module Config.
In the Cluster slave servers section, find the Default master server IP for remote slave zones field.
Enter the IP address of your master server.
Click Save. Any DNS zones created from now on will use that IP.
Click Apply Configuration in the right corner.
Please note: that it won't update existing DNS zones.
Basic Setup of DNS server
There are some more options that you should check. Go to Servers>BIND DNS Server and click on Zone defaults
Set the Default email address to an existing email address (Some technical check requires to set an existing email address).
Set Default nameserver for master domains to ns1.example.com (optional).
Click Apply Configuration in the right corner.
Create new DNS zone
Now it's time to test our settings. Click on Create master Zone. Enter your domain name.
Check your settings (By default, the IP address for address records will be the primary server's IP address).
Click Create.
Check your master zone on primary and slave zone on the secondary server.
Pointing the Main Domain to DigitalOcean's Name Servers
The most common problem is that in some cases there is a technical check which requires an email address. That email address is set in the DNS zone file, which is hostmaster@domain.tld, postmaster@domain.tld, etc. by default. Some domain providers let you edit this email address, but most of them do not.
You can solve this problem by pointing the domain to DigitalOcean's name servers. Of course you can't do that immediately. After completing this tutorial you have to create a virtual domain in postfix module and create an alias for hostmaster@domain.tld or you can create a virtual server in Virtualmin for domain example.com, which will create these aliases for you, but remember to disable DNS zone.
Other Options
If you want only DNS management, you can install two Webmin instances instead of Virtualmin and Webmin, but this way you have to create DNS records manually. It is the same as Webmin installation above, but you have to do it twice. From Configure Cluster and DNS the steps are the same.
You can use your secondary DNS server for more than one Virtualmin server. In this case the primary DNS server is the virtualmin server, the secondary is the webmin server. This means that you have several Virtualmin servers which are primary DNS servers and you have only one secondary server.
You can use two Virtualmin server as DNS servers. In this case each virtualmin server wil conatin the master zone for the domains added to them. This means that if you create a virtual server in virtualmin1, then virtualmin1 will be the primary DNS server for that domain.
All done!
You have successfully finished this tutorial.