How to install Webmin on CentOS 8
This post will cover the procedure on how to install Webmin on CentOS 8. This method can also be applied on earlier versions of CentOS( like 7 and 6). Webmin is a web based system configuration and management tool for Unix based systems. Meaning, that with it you can do the management on all your Linux servers. It’s robust, powerful and with a lot of features. It also became a quite good open source alternative for cPanel, since not only it can do user administration, package management, networking configuration and performance monitoring but also it can manage web servers. Because of all that, it’s a powerful tool for system administrators and web masters.
We also covered the process of install Webmin on Debian 10 and Debian 11, which you check out here - LINK
Some Webmin use case scenarios
If you plan to have a cloud server(whether that be on AWS, Digital Ocean, Google Cloud or Upcloud) on which you intend to host multiple websites, then Webmin could be a good solution for you. You can also do the same on your local network. Another great Webmin feature - if you have multiple different machines(physical and VM) and they are all on the same network, you can register multiple servers on the Webmin and manage all of them from a single Webmin dashboard.
Install Webmin on CentOS 8
There are two ways to install Webmin on your server. One is installing it with a .rpm package(which you can download) and the other way is from YUM(which you need to add additionally). We are going to cover both of those methods.
Installing Webmin with a .rpm package
Follow the commands from bellow how to download and install the Webmin .rpm package:
sudo wget http://prdownloads.sourceforge.net/webadmin/webmin-1.941-1.noarch.rpm sudo yum -y install perl perl-Net-SSLeay openssl perl-IO-Tty perl-Encode-Detect sudo rpm -U webmin-1.941-1.noarch.rpm
If you’re missing wget, install it with the command:
sudo yum -y install wget
When installing the .rpm package, check first the Webmin website for the version number. In the package name, they write the version number of Webmin and they post the latest stable release to download, meaning that overtime the package version stated above in the post, could change.
Installing Webmin from YUM repo
If you want to install and update Webmin via the repositories, first we need to create a new Webmin .repo file with a text editor in the repos folder:
sudo vim /etc/yum.repos.d/webmin.repo
and then add the lines from bellow in the text file, save and exit.
[Webmin] name=Webmin Distribution Neutral #baseurl=https://download.webmin.com/download/yum mirrorlist=https://download.webmin.com/download/yum/mirrorlist enabled=1
The text file should look something like this:
Then add the GPG key, update the CentOS and you can install Webmin:
sudo wget https://download.webmin.com/jcameron-key.asc sudo rpm --import jcameron-key.asc sudo yum update sudo yum install webmin
CentOS comes by default with Vim text editor. If you’re not familiar with Vim, follow the steps from bellow to add lines in Vim, save the file and exit.
When you open the Vim text editor, first: Press letter i on keyboard(for insert or edit mode), Paste the lines, Press Esc on the keyboard, Then type in on the keyboard: :wq! In order to save the file and exit.
Or install nano text editor:
sudo yum -y install nano
Webmin is configured by default to listen port 10000, so on your server, if you have a firewall running, you must allow http and https traffic for port 10000. In the next paragraph we’ll cover the steps for the ufw and iptables firewalls on your server. Also, for the cloud server, you need to configure a firewall rule to allow traffic on the same port in your cloud provider settings(If your cloud provider has a firewall enabled for your server).
Firewall settings for Webmin
If you’re running a firewall on your server(and you should), you need to configure it to open port 10000 and allow http and https traffic on it. We’ll cover the steps for the ufw, centos firewall and iptables firewall.
CentOS firewall config:
firewall-cmd --zone=public --add-port=10000/tcp --permanent firewall-cmd --zone=public **--permanent** --add-service=http firewall-cmd --zone=public **--permanent** --add-service=https firewall-cmd --reload
Run the command:
sudo iptables -A INPUT -p tcp -m tcp --dport 10000 -j ACCEPT sudo iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT sudo iptables -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
Run the command:
sudo ufw allow http sudo ufw allow https sudo ufw allow 10000
Access the Webmin dashboard
When the installation was done, it showed in the terminal output how to access it, but that’s not the case because it shows the URL the Webmin generated from the hostname of your server.
To access the Webmin dashboard - on a cloud server, in the URL address bar, we’ll type the public IP address which the cloud provider has assigned for the server, followed with the port number. Example shown bellow:
For the local network, the process is the same - use the IP address you assigned to your server. The first time you access the dashboard, you’ll get a potential security risk prompt from the browser. That’s because the Webmin uses a self signed SSL certificate, when you install it the first time. Later on, you can install another SSL certificate. Right now, go ahead add the security exception and continue.
For the login, you use your server’s root account or any other user account you have which has sudo privileges.
What is worth mentioning when using Webmin is - access to the dashboard must be protected with strict measures. That is, when you install Webmin on a cloud server. When you open the port 10000 on the firewall and allow traffic, you’re then exposing the Webmin to the internet and probably to malicious attacks and potential threats. So, 2FA(two factor authentication) is a must - I highly suggest it.
Another thing - Webmin by default, acquires and uses root account and accounts with sudo privileges. Reason for that is it needs to run as root or have sudo privileges in order to be able to run all tasks. Same as you run sudo in terminal. Because of that, another recommended step is to either disable root login on Webmin or remove it entirely and then just use account with sudo privileges or create a new webmin account.
This was the procedure how to install Webmin on CentOS 8. We covered both methods to install Webmin on CentOS with .rpm package and also via YUM repository. We covered the procedure with the firewall configuration and how to access Webmin dashboard.
Thank you for your time.