Provisioning Host Systems

Host System Requirements
-----------------------------------------

For a system to host some Cloudmin Services feature (such as MySQL databases or DNS zones), it must meet the following requirements :

1. Webmin must be installed and running, with no firewall blocking ports 10000 to 10010. If it is missing, Webmin can be installed from within Cloudmin after the system has been added under Cloudmin's control.
2. MySQL or BIND must be installed, depending on which features the system will create. They must also be fully manageable from within Webmin, with the correct paths and password set.
3. All ports needed to query or manage the servers must be accessible from the Cloudmin master system and any client systems. For MySQL, this is port 3306. For DNS, it is port 53 (both TCP and UDP).
4. Due to changes in the Webmin API, version 1.532 or later of Webmin must be installed on the host for it to be able to host DNS zones.

Because a host system may run databases or serve zones for multiple clients, it must have sufficient CPU, RAM and disk to handle the load. MySQL hosting in particular can be very resource intensive, as all the work of executing database queries is done within the database server. For this reason we recommend that capable physical systems be used.

Adding Host Systems To Cloudmin
------------------------------

Once a host system has been setup, it can be brought under Cloudmin's control as follows :

1. On the left menu, open the **Add System** category and click **Add Physical System**.
2. Enter the hostname or IP address of the system, and a description like "MySQL service host".
3. Enter SSH and Webmin authentication details.
4. Click the **Add System** button.

Assuming the IP address, login and password you entered are correct, Cloudmin will successfully add the system for management, and it will appear in the list of hosts on the left menu. If it does not have have Webmin installed, you can go to **System Operations** -> **Install Webmin** to add it now.

Registering A System For Service Hosting
------------------------------------------

Once a system has Webmin (or Virtualmin) installed and is under Cloudmin's control, you can register it for use as a services host as follows :

1. Go to **Virtualmin Settings** -> **Cloudmin Services** on the left menu.
2. Click **Add a new system for service hosting** , and select the host from the **System hostname** menu.
3. If the system will host DNS zones, enter a limit on domains to create in the **Create DNS zones?** field. You should also enter the same limit in the **Create slave DNS zones?** field, so that it can be used as a DNS slave for other host systems.
4. If the system is to be used for MySQL hosting, enter limits in the **Create MySQL logins?** and **Create MySQL databases?** fields.
5. Click the **Add System For Service Hosting** button.

Once a system has been added, it will show up on the **Cloudmin Services** page. Settings can be edited by clicking on its hostname, and you can stop a system from being used for hosting in future by checking the box next to its name and clicking **Remove Selected Systems**.

Hosting MySQL Databases
---------------------------------------

When a system is registered for MySQL hosting, Virtualmin server owners and mailboxes with MySQL access will be created in its `mysql` permissions database. Databases belonging to virtual servers will be created and granted to those users, used the same permission settings if they were created on a dedicated Virtualmin system. However, the list of allowed hosts for each user and database will include the client system, so that it can connect and manage the DBs.

Due to limitations in Webmin's support for managing a remote MySQL database, all logins and databases for a single client system must be created on the same host. However, multiple clients belonging to the same system owner can have their MySQL databases created on different host systems.

Hosting DNS Zones
-----------------------------

A system that hosts DNS zones will have them added to its BIND configuration, just like zones that were
created on the system via Webmin. NS records will be automatically set to point to the host system and any slaves setup as part of the provisioning service, but all other address records will point to the IP address of the client system that requested the zone.

If you have multiple host systems running BIND, Cloudmin can also automatically configure systems other than the one a master zone was created on as slaves for that zone. This is highly recommended, as it means the zone will still be resolvable even if one of the DNS servers is down. Any system that is hosting DNS zones can be configured to host both master and slave zones - this means that if you have two or more, each new master zone will be created on one of them, and the others will be setup as slaves for it.

Unlike the MySQL feature, every DNS zone created by a Cloudmin services client can potentially be hosted on a different services host.

Hosting Clamd
----------------------

Clamd is a ClamAV's virus scanning server, which accepts email messages from remote systems and returns information about what viruses they contain, if any. Because it is fairly RAM and CPU intensive, running a single central install of Clamd that serves multiple Virtualmin systems can save significant resources on those machines.

The simplest way to setup a system to host Clamd is to install Virtualmin GPL or Pro on it and then use Virtualmin's built-in support for configuring and starting Clamd. This can be found at *Email Messages* -> *Spam and Virus Scanning* , or can be enabled using the command `virtualmin set-spam --enable-clamd`

Hosting Spamd
-----------------------
Spamd is SpamAssassin's spam filtering server, which accepts email messages from remote systems and computes a spam score for them. It is also fairly RAM and CPU intensive, so running a central spamd server can reduce the load on Virtualmin client systems - although not as much as you would gain by offloading virus scanning.

The simplest way to setup a system to host Clamd is to install Virtualmin GPL or Pro on it and then use Virtualmin's built-in support for configuring and starting Clamd. This can be found at *Email Messages* -> *Spam and Virus Scanning* , or can be enabled using the command `virtualmin set-spam --enable-spamd`

Managing Cloudmin Services Features
--------------------------

Once clients start to create features, you will be able to see what has been created on each host
by clicking on a hostname on the **Cloudmin Services** page, and opening the **Services history** section. Each feature that is currently active will be listed - if a client removes a feature (such as by deleting a Virtualmin virtual server), it will be removed from this list.

You can manually manage a feature by clicking on the link in the **Actions** column, such as **Edit DNS Zone** or **Manage Database**. This will open Webmin on the host system via Cloudmin, and allow you to edit DNS records or tables. This ability is only available to the `root` user though.

To forcibly remove a provisioned feature, click the **Remove** link. This is not typically recommended unless the original client system has been unexpectedly shut down, as it will remove the DNS zone or MySQL database without notifying the original client.

Features can also be found by searching across host systems, using the **Search history** box on the **Cloudmin Services** page. You can search by host name, database name, zone name or owner. The same links to manage or delete features are available on the search results page.