Recently, I am looking for an opensource control panel where I can manage my client. I tried VestaCP and Centos Web Panel, however, on my experience, I find the support hard to find considering you need to pay more for you to get better support from their team, which I do not find attractive at all.
So I came across with Virtualmin 5.0, which returns promising feature, so I tried to give it a go. If you wish to see more if the new feature Virtualmin 5.0 brings, visit their site virtualmin.com/virtualmin/whats-new-in-5.0
What is Virtualmin — is a powerful and flexible web hosting control panel for Linux and BSD systems. Available in an Open Source community-supported version, and a more feature-filled version with premium support. If you wish to check their documentation, visit virtualmin.com
Before you install Virtualmin on your VPS, make sure you have these details below:
- Start with a freshly installed, Grade A supported Operating System on your server. CentOS and Ubuntu LTS are very popular options for hosting and are a safe choice.
- Be sure to configure your system with a fully qualified domain name.
- Do not enable any third party software repositories, as they can introduce problems during install and configuration.
What are the “Grade A supported Operating System” in Virtualmin?
- CentOS/RHEL 6 and 7 on i386 and x86_64
- Debian 8 and 9 on i386 and amd64
- Ubuntu 16.04 LTS and 18.04 LTS on i386 and amd64 (non-LTS releases are not supported)
In this tutorial, let us use Ubuntu 16.04, and I will use $5 droplet in Digital Ocean. If you wish to try Digital Ocean platform, you may use my referral link below:
https://m.do.co/c/e3b40a8b20c9
You will get $50 in credit over 30 days. This should be enough for you to play around with Digital Ocean.
Finally, I will register a free domain in freenom.com to get a fully qualified domain name.
Create a droplet in Digital Ocean.
If you have challenges, here are the screenshots below:






After you click on Create, you will received a separate email that you have registered to Digital Ocean. This should contain your Droplet IP address and root credential.
Setup DNS records in Cloudflare.
The “panel.kurtobando.tk” DNS are hosted in Cloudflare, which is pointing to my newly created Droplet IP address. Here is a quick screenshot of my current DNS records hosted in Cloudflare below:

Just to set your expectation, any DNS changes can take 2 to 4 hours. What I suggest, you could use a VPN or wait for the propagation period for your hostname to work.
If you wish to check the propagation period, you may use the link below:
https://toolbox.googleapps.com/apps/dig/#ANY/
Make sure to enter your hostname on the input field, this should return your Droplet IP address. For example:

If all returns okay, let us install Virtualmin on your Droplet.
Virtualmin Installation.
SSH to your Droplet, using your SSH client. In my case, I will just use PuTTY, then run command below:
wget http://software.virtualmin.com/gpl/scripts/install.sh && /bin/sh install.sh
Welcome to the Virtualmin GPL installer, version 6.0.19
This script must be run on a freshly installed supported OS. It does not
perform updates or upgrades (use your system package manager) or license
changes (use the "virtualmin change-license" command).
The systems currently supported by install.sh are:
CentOS/RHEL Linux 6 and 7 on x86_64
Debian 8 and 9 on i386 and amd64
Ubuntu 16.04 LTS and 18.04 LTS on i386 and amd64
If your OS/version/arch is not listed, installation will fail. More
details about the systems supported by the script can be found here:
https://www.virtualmin.com/os-support
The selected package bundle is LAMP and the size of install is
full. It will require up to 650 MB of disk space.
Exit and re-run this script with --help flag to see available options.
Continue? (y/n) y
Press Y to proceed. If your Droplet has a Swap file this should proceed as expected. However, in our case, Virtualmin will create a Swap file for us as shown below:
[ERROR] Memory is below 1024 MB. A full installation may not be possible.
Your system has less than 1024 MB of available memory and swap.
Installation is likely to fail, especially on Debian/Ubuntu systems (apt-get
grows very large when installing large lists of packages). You could exit
and re-install with the --minimal flag to install a more compact selection
of packages, or we can try to create a swap file for you. To create a swap
file, you'll need 263MB free disk space, in addition to 200-300MB
of free space for package installation.
Would you like to continue? If you continue, you will be given the option to
create a swap file. (y/n) y
Would you like for me to try to create a swap file? This will require at
least 263MB of free space, in addition to 200-300MB for the
installation. (y/n) y
Once the installation has been completed, you should have the message below:
[SUCCESS] Installation Complete!
[SUCCESS] If there were no errors above, Virtualmin should be ready
[SUCCESS] to configure at https://panel.kurtobando.tk:10000 (or https://xxxx.xxxx.xxxx.xxxx:10000).
[SUCCESS] You'll receive a security warning in your browser on your first visit.
Test your Virtualmin Access.
I usually use the hostname address. In my case, I use https://panel.kurtobando.tk:10000. If first visit your hostname address on port 10000, you will get a “Privacy Error” message by default, see the screenshot below:

To go about this, Click on Advanced > Proceed to (URL). If successful, you should have Virtualmin login page as shown below:

From here, use your root credential to get access on your Virtualmin Dashboard. If you wish to browse Virtualmin Documentation, visit their site at virtualmin.com/download.html
If you wish to take a quick tour to Virtualmin Post Installation, see the article below:
Post-Installation Wizard in Virtualmin
You might be interested with these articles below:
Setup own name server in Virtualmin
Change swap file size in Virtualmin
Add SSL and change port to your Virtualmin Hostname
Multiple PHP version on Virtualmin in Ubuntu 16.04
Add HTTP2 Support on Virtualmin in Ubuntu 16.04