A typical Linux server runs in a command line interface (CLI) environment, preloaded with bare essential tools needed to install and configure various headless services. Compared to a full-blown GUI desktop image, such a minimal setup is advantageous in terms of security, resource consumption and speed.
If you are used to GUI-based environment, however, you may wonder whether there is a GUI for Linux server. A typical Linux desktop environment like GNOME, KDE, etc. will probably be too resource-heavy for what it’s worth, and not as secure simply because there will be more code subject to potential security vulnerabilities.
In this tutorial, I will describe how to manage and configure a Linux server with Webmin’s web-based GUI.
Webmin is a lightweight (~20 MB) system configuration tool written in Perl. Webmin has a built-in web server, allowing users to configure a Linux server via web interface. One of its strength is its modular architecture where you can load modules to Webmin to extend its functionality.
Install Webmin on Linux Server
To install Webmin on Ubuntu or Debian server, you can use the following commands.
$ wget http://prdownloads.sourceforge.net/webadmin/webmin_1.660_all.deb
$ sudo dpkg -i webmin_1.660_all.deb
To install Webmin on CentOS or RHEL server, use these commands.
$ sudo rpm -U webmin-1.660-1.noarch.rpm
Access Webmin Interface
Once you installed Webmin, you can access Webmin by going to https://<HOST_IP>:10000 on a web browser. If you have a firewall enabled, make sure that TCP 10000 port is not blocked.
Also, note that you should use HTTPS, not HTTP. Otherwise, you will get a redirection error. By default, Webmin runs in SSL mode with a default SSL certificate generated by Webmin.
Once you see Webmin’s login page, you can log in as root (with the root password) or as any user who can use sudo on the Linux server. After logging in, you will see the status summary of your Linux server as follows.
Webmin boasts of an extremely rich set of features that allow you to configure almost every aspect of a given Linux server. In the following, let me give you a glimpse of some of its powerful features.
Enable or disable boot-time services, and show their configuration status.
Monitor the status of server and services in real time, and configure scheduled monitoring and notification emails. Here you can monitor various server daemons such as NFS, MySQL, BIND DNS, Squid proxy, Apache Web server, etc., as well as system resources such as disk storage, memory or network traffic.
Configure iptables-based firewall rules.
Configure local routing table and gateways.
Mount and configure a filesystem.
Access and modify local file system via web-based file manager interface. This requires Java plugin for web browser.
Change Webmin configurations, where you can access-control IP addresses, add/remove Webmin modules, enable two-factor authentication for secure login, set up certificate authority, etc.