Webmin is basically a web-based control panel which helps you in managing server of any Linux machine. It has a modern web-based interface which makes your work easier.

 

 

Prerequisites

For Installing Webmin on Ubuntu 18.04 we will require –

  • One Ubuntu 18.04 server ND sudo non-root user and a firewall.
  • Apache should be installed.
  • Also an FQDN with DNS A record pointing to the Ip address of your Ubuntu server.
  • Certbot should also be installed.

 

 

Steps to Install Webmin

Step 1:

First, add Webmin Repository as it will help us in easily installing and updating Webmin by the package manager. You can do it by simply adding the Repository to /etc/apt/sources.list file.

 

Now Open the file in your editor:

sudo nano /etc/apt/sources.list

 

Now add this line at the bottom of the file to add the new repository:
/etc/apt/sources.list

deb http://download.webmin.com/download/repository sarge contrib

Now you have to just Save the file and exit the editor.

 

Next, for letting our system to trust the new Repository, we need to add the Webmin PGP key.

wget http://www.webmin.com/jcameron-key.asc
sudo apt-key add jcameron-key.asc

 

Next, to include the Webmin Repository, update the list of packages.

sudo apt update

 

Now install Webmin:

sudo apt install webmin

 

After successfully installing it, You will see the following output,

Output
Webmin install complete. You can now login to 
https://your_server_ip:10000 as root with your 
root password, or as any user who can use `sudo`.

 

Now, let’s secure access to Webmin by putting it behind the Apache web server and adding a valid TLS/SSL certificate.

Now, to secure access to Webmin we need to put Apache web server and add an SSL certificate.

 

Step 2:

To access Webmin, you need to specify port 10000 and make sure that the port is open on your firewall.

 

First, you need to create a new Apache virtual host file in the Apache’s configuration directory:

sudo nano /etc/apache2/sites-available/your_domain.conf

 

Now add the following line but replace the email address and domain of your own:

/etc/apache2/sites-available/your_domain.conf

        ServerAdmin your_email
        ServerName your_domain
        ProxyPass / http://localhost:10000/
        ProxyPassReverse / http://localhost:10000/

Now Save the file and exit the editor.

 

Next, we need to aware Webmin to stop using SSL as Apache will provide SSL afterward:

Open the file /etc/webmin/miniserv.conf in your editor:

sudo nano /etc/webmin/miniserv.conf

 

Find the following line:
/etc/webmin/miniserv.conf

ssl=1

Change 1 to 0 and it will stop Webmin from using SSL:

 

Now, we need to add our domain in the list of allowed domain:

Open the file /etc/webmin/config in your editor:

sudo nano /etc/webmin/config

 

Now add the following line at the bottom replacing your-domain with original domain:

/etc/webmin/config

referers=your_domain

Now Save the file and exit the editor.

 

Next, you need to restart Webmin:

sudo systemctl restart webmin

 

Then enable Apache’s proxy_http module:

sudo a2enmod proxy_http

 

After enabling you’ll see the following output:

Output
Considering dependency proxy for proxy_http:
Enabling module proxy.
Enabling module proxy_http.

 

To activate the new configuration, you need to run:

systemctl restart apache2

 

The output stells to restart Apache, but at first, you need to activate the virtual host which you created:

sudo a2ensite your_domain

 

Now you’ll see the following output informing that your site is enabled:

Output
Enabling site your_domain.

 

To activate the new configuration, you need to run:

systemctl reload apache2

 

Now, it’s time to restart Apache completely:

sudo systemctl restart apache2

Visit http://domain-here in your browser, and you will see the Webmin login page in front of you.

 

Note: You should not log in to Webmin, as we haven’t enabled SSL.

 

Now you need to configure a certificate so that your connection is encrypted while using Webmin. In order to do this, use Let’s Encrypt.

Next, Tell Certbot to generate a TLS/SSL certificate for your domain and configure Apache to redirect traffic to the secured site:

sudo certbot --apache --email your_email -d your_domain --agree-tos --redirect --noninteractive

 

You’ll see the following output:

Output
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator apache, Installer apache
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for your_domain
Enabled Apache rewrite module
Waiting for verification...
Cleaning up challenges
Created an SSL vhost at /etc/apache2/sites-available/your_domain-le-ssl.conf
Enabled Apache socache_shmcb module
Enabled Apache ssl module
Deploying Certificate to VirtualHost /etc/apache2/sites-available/your_domain-le-ssl.conf
Enabling available site: /etc/apache2/sites-available/your_domain-le-ssl.conf
Enabled Apache rewrite module
Redirecting vhost in /etc/apache2/sites-enabled/your_domain.conf to ssl vhost in /etc/apache2/sites-available/your_domain-le-ssl.conf

Now you have successfully enabled https://domain-here and setup Webmin.