{"id":11075,"date":"2024-12-06T13:02:21","date_gmt":"2024-12-06T13:02:21","guid":{"rendered":"https:\/\/www.ssdnodes.com\/?p=11075"},"modified":"2025-05-15T15:35:32","modified_gmt":"2025-05-15T15:35:32","slug":"install-webmin-on-almalinux","status":"publish","type":"post","link":"https:\/\/www.ssdnodes.com\/blog\/install-webmin-on-almalinux\/","title":{"rendered":"How to Install Webmin on AlmaLinux 9 and Secure it with Let&#8217;s Encrypt"},"content":{"rendered":"<p>In this guide, I\u2019ll walk you through how to install Webmin on an AlmaLinux 9 server, secure it with Let\u2019s Encrypt, and use it to manage your server remotely through a browser interface.<\/p>\n<p>Being a <a href=\"https:\/\/www.ssdnodes.com\/blog\/best-vps-hosting-for-developers\/\">developer<\/a>, I know <a href=\"https:\/\/www.ssdnodes.com\/blog\/tools-to-manage-multiple-linux-servers-free\/\">managing servers<\/a> is not an easy task. You have to have a powerful yet user-friendly control panel. Webmin, fortunately, solves this problem. It is a popular web-based system administration tool that makes managing your AlmaLinux VPS server easy and enjoyable.<\/p>\n<p>Webmin can be used for adjusting user accounts, installing and updating software, or even monitoring system logs and setting up the firewall. It gives you an intuitive interface to get it all done.<\/p>\n<p>Let\u2019s now install Webmin on AlmaLinux 9, secure it with Let\u2019s Encrypt, and then take a look at how to use it for essential sysadmin tasks.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-11130 size-full\" src=\"https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2024\/11\/How-to-Install-Webmin-on-AlmaLinux-9-and-Secure-it-with-Lets-Encrypt-Blog-2.jpg\" alt=\"Install Webmin on AlmaLinux 9\" width=\"600\" height=\"400\" srcset=\"https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2024\/11\/How-to-Install-Webmin-on-AlmaLinux-9-and-Secure-it-with-Lets-Encrypt-Blog-2.jpg 600w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2024\/11\/How-to-Install-Webmin-on-AlmaLinux-9-and-Secure-it-with-Lets-Encrypt-Blog-2-300x200.jpg 300w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/p>\n<h2><strong>Prerequisites<\/strong><\/h2>\n<ul>\n<li>An AlmaLinux 9 server with root access or a <code>sudo<\/code> user. If you haven't noticed, we offer AlmaLinux servers with high reliability and availability baked in. Take a look at our <a href=\"https:\/\/www.ssdnodes.com\/cheap-vps-hosting\/\">offerings<\/a> and prepare for your mind to be blown \ud83e\udd2f.<\/li>\n<li>Access your sever via SSH, check out <a href=\"https:\/\/www.ssdnodes.com\/blog\/tutorial-setting-up-and-securing-ssh-based-authentication\/\">How to access your server using SSH<\/a> for instructions.<\/li>\n<\/ul>\n<h3><strong>Note<\/strong><\/h3>\n<blockquote><p>To avoid the hassle, you can install Webmin in seconds with our 1-click Webmin application. Just choose a <a href=\"https:\/\/www.ssdnodes.com\/\">server<\/a>, click <strong>Customize Your Own Server<\/strong>, go to the <strong>Apps<\/strong> tab under <strong>Select Server Image<\/strong>, and select <strong>Webmin<\/strong>!<\/p><\/blockquote>\n<h2><strong>Step 1: Updating Your System Packages<\/strong><\/h2>\n<p>Start by checking for updates on your AlmaLinux 9 system:<\/p>\n<pre><code>sudo dnf check-update<\/code><\/pre>\n<p>If you see a list of packages that need to be updated, then, it's a good idea to perform a comprehensive update that installs available updates:<\/p>\n<pre><code>sudo dnf upgrade<\/code><\/pre>\n<h2><strong>Step 2: Install Webmin on<\/strong> AlmaLinux <strong>9<\/strong><\/h2>\n<p>To install Webmin on AlmaLinux 9, you'll install <code>wget<\/code> , then download the Webmin repository configuration script and use it to add the official Webmin repository. Finally, you'll use the <code>dnf install<\/code> command to install Webmin and all its necessary packages.<\/p>\n<h3>Setting up the Webmin Repository<\/h3>\n<p>Install <code>wget<\/code> :<\/p>\n<pre><code class=\"language-bash\">sudo dnf install wget<\/code><\/pre>\n<p>Output:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-11078\" src=\"https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2024\/11\/install-wget-1024x445.webp\" alt=\"install wget\" width=\"1024\" height=\"445\" srcset=\"https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2024\/11\/install-wget-1024x445.webp 1024w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2024\/11\/install-wget-300x131.webp 300w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2024\/11\/install-wget-768x334.webp 768w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2024\/11\/install-wget-1536x668.webp 1536w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2024\/11\/install-wget.webp 2000w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>Download the repository configuration script:<\/p>\n<pre><code class=\"language-python\">sudo wget https:\/\/raw.githubusercontent.com\/webmin\/webmin\/master\/setup-repos.sh<\/code><\/pre>\n<p>Run this script:<\/p>\n<pre><code class=\"language-python\">sudo sh setup-repos.sh<\/code><\/pre>\n<p>You\u2019ll receive output similar to the following:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-11079\" src=\"https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2024\/11\/Setup-Webmin-repository-1024x249.webp\" alt=\"Setup Webmin Repository\" width=\"1024\" height=\"249\" srcset=\"https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2024\/11\/Setup-Webmin-repository-1024x249.webp 1024w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2024\/11\/Setup-Webmin-repository-300x73.webp 300w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2024\/11\/Setup-Webmin-repository-768x187.webp 768w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2024\/11\/Setup-Webmin-repository-1536x373.webp 1536w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2024\/11\/Setup-Webmin-repository.webp 2000w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>We can now install Webmin using the <code>dnf<\/code> package manager.<\/p>\n<h3>Install Webmin<\/h3>\n<p>After the repositories setup, you can now install Webmin:<\/p>\n<pre><code class=\"language-yaml\">sudo dnf install webmin<\/code><\/pre>\n<p>You\u2019ll receive output like this:<\/p>\n<pre><code class=\"language-yaml\">  perl-lib-0.65-481.el9.x86_64                        perl-libnet-3.13-4.el9.noarch\r\n  perl-libs-4:5.32.1-481.el9.x86_64                   perl-mro-1.23-481.el9.x86_64\r\n  perl-open-1.12-481.el9.noarch                       perl-overload-1.31-481.el9.noarch\r\n  perl-overloading-0.02-481.el9.noarch                perl-parent-1:0.238-460.el9.noarch\r\n  perl-podlators-1:4.14-460.el9.noarch                perl-subs-1.03-481.el9.noarch\r\n  perl-vars-1.05-481.el9.noarch                       shared-mime-info-2.1-5.el9.x86_64\r\n  tar-2:1.34-6.el9_4.1.x86_64                         unzip-6.0-56.el9.x86_64\r\n  webmin-2.202-1.noarch\r\n\r\nComplete!<\/code><\/pre>\n<p>After you see that sweet <code>Complete!<\/code> message. Check Webmin\u2019s status using <code>systemctl<\/code>:<\/p>\n<pre><code class=\"language-python\">sudo systemctl status webmin<\/code><\/pre>\n<pre><code class=\"language-python\">\u25cf webmin.service - Webmin server daemon\r\n     Loaded: loaded (\/usr\/lib\/systemd\/system\/webmin.service; enabled; preset: disabled)\r\n     Active: active (running) since Thu 2024-10-17 15:15:39 UTC; 1min 17s ago\r\n    Process: 15357 ExecStart=\/usr\/libexec\/webmin\/miniserv.pl \/etc\/webmin\/miniserv.conf (code=exited, stat&gt;\r\n   Main PID: 15358 (miniserv.pl)\r\n      Tasks: 1 (limit: 48897)\r\n     Memory: 27.2M\r\n        CPU: 5.215s\r\n     CGroup: \/system.slice\/webmin.service\r\n             \u2514\u250015358 \/usr\/bin\/perl \/usr\/libexec\/webmin\/miniserv.pl \/etc\/webmin\/miniserv.conf<\/code><\/pre>\n<p>These are the most important points in this status report:<\/p>\n<ul>\n<li><strong>Loaded<\/strong>: The service is loaded from the file <code>\/usr\/lib\/systemd\/system\/webmin.service<\/code> and is enabled (it starts automatically on boot).<\/li>\n<li><strong>Active<\/strong>: The service is currently running and has been active for 1 minute and 17 seconds since it started.<\/li>\n<li><strong>Process<\/strong>: The main process running is <code>miniserv.pl<\/code> (Webmin's web server) with the PID <code>15358<\/code>.<\/li>\n<li><strong>Tasks<\/strong>: The service is running with 1 active task.<\/li>\n<\/ul>\n<p>This confirms that Webmin is running correctly on your system.<\/p>\n<h3>Setting up the Firewall<\/h3>\n<p>With Webmin installed, you\u2019ll need to configure the firewall.<\/p>\n<p>First, check whether <code>firewall-cmd<\/code> is active:<\/p>\n<pre><code class=\"language-bash\">$ sudo firewall-cmd<\/code><\/pre>\n<p>Output:<\/p>\n<pre><code class=\"language-bash\">State: running\r\n\r\nNo options specified\r\nusage: 'firewall-cmd --help' for usage information or see firewall-cmd(1) man page<\/code><\/pre>\n<p>Webmin is available on the port <code>10000<\/code> by default. To allow this port, run the following command:<\/p>\n<pre><code class=\"language-bash\">sudo firewall-cmd --add-port=10000\/tcp --permanent<\/code><\/pre>\n<p>Output:<\/p>\n<pre><code class=\"language-bash\">success<\/code><\/pre>\n<p>While you\u2019re at it, you should also allow port <code>80<\/code>. This is the default HTTP port, and you\u2019ll later use it to get a <a href=\"https:\/\/www.ssdnodes.com\/blog\/install-lets-encrypt-on-ubuntu-certbot-apache-and-nginx\/\">Let\u2019s Encrypt<\/a> certificate.<\/p>\n<pre><code class=\"language-python\">sudo firewall-cmd --add-port=80\/tcp --permanent<\/code><\/pre>\n<p>Reload the <code>firewall-cmd<\/code> to apply changes:<\/p>\n<pre><code class=\"language-yaml\">sudo firewall-cmd --reload<\/code><\/pre>\n<p>Check the firewall status:<\/p>\n<pre><code class=\"language-bash\">sudo firewall-cmd --list-all<\/code><\/pre>\n<p>Output:<\/p>\n<pre><code class=\"language-bash\">public (active)\r\n  target: default\r\n  icmp-block-inversion: no\r\n  interfaces: enp3s0\r\n  sources:\r\n  services: cockpit dhcpv6-client ssh\r\n  ports: 10000\/tcp 80\/tcp\r\n  protocols:\r\n  forward: yes\r\n  masquerade: no\r\n  forward-ports:\r\n  source-ports:\r\n  icmp-blocks:\r\n  rich rules:<\/code><\/pre>\n<p>The line <code>ports: 10000\/tcp 80\/tcp<\/code> indicates that port <code>10000<\/code> and <code>80<\/code> are now fully activated.<\/p>\n<p><strong><em>Warning:<\/em> Obviously, you must be extremely cautious with your firewall security. Allow only a few trusted IP addresses or IP ranges to access Webmin.<\/strong><\/p>\n<h3>Access Webmin<\/h3>\n<p>With Webmin installed on your AlmaLinux 9 server, use your browser to visit the following URL:<\/p>\n<pre><code class=\"language-python\">https:\/\/your_ip_address_or_domain:10000<\/code><\/pre>\n<p>At first, your browser will show a <strong>\"Not Secure\"<\/strong> warning, as the default HTTPS connection is relying on a <a href=\"https:\/\/www.ssdnodes.com\/blog\/create-a-self-signed-certificate-on-ubuntu-for-apache-and-nginx\/\">self-signed<\/a> Webmin certificate. Don\u2019t worry, we\u2019ll fix this later in the article.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-11080\" src=\"https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2024\/11\/webmin-security-warning.webp\" alt=\"webmin security warning\" width=\"900\" height=\"464\" srcset=\"https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2024\/11\/webmin-security-warning.webp 900w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2024\/11\/webmin-security-warning-300x155.webp 300w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2024\/11\/webmin-security-warning-768x396.webp 768w\" sizes=\"auto, (max-width: 900px) 100vw, 900px\" \/><\/p>\n<p>Click the <strong>Advanced<\/strong> button or <strong>More information<\/strong> depending on the browser, and choose to proceed.<\/p>\n<h3>Webmin\u2019s Default Login on AlmaLinux<\/h3>\n<p>The default login credentials of Webmin are the same as your Unix users. You can also use the root account of your server with <code>root<\/code> as a username and the root\u2019s password.<\/p>\n<h3>Webmin Dashboard<\/h3>\n<p>After you login, you\u2019ll be moved to the dashboard:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-11081\" src=\"https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2024\/11\/Webmin-Dashboard-AlmaLinux-1024x489.webp\" alt=\"Webmin Dashboard AlmaLinux\" width=\"1024\" height=\"489\" srcset=\"https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2024\/11\/Webmin-Dashboard-AlmaLinux-1024x489.webp 1024w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2024\/11\/Webmin-Dashboard-AlmaLinux-300x143.webp 300w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2024\/11\/Webmin-Dashboard-AlmaLinux-768x367.webp 768w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2024\/11\/Webmin-Dashboard-AlmaLinux-1536x734.webp 1536w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2024\/11\/Webmin-Dashboard-AlmaLinux.webp 1597w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>Webmin is now installed on your AlmaLinux 9 server and ready for use. Next, you\u2019ll need to secure it with HTTPS by installing a Let\u2019s Encrypt SSL certificate.<\/p>\n<h3><strong>Reader Alert: Side Note!<\/strong><\/h3>\n<blockquote><p>To avoid all these steps and install Webmin in minutes, you can use our tried and tested 1-click <strong>Webmin<\/strong> application. Just choose a <a href=\"https:\/\/www.ssdnodes.com\/pricing\/\">server<\/a>, click <strong>Customize Your Own Server<\/strong>, under <strong>Select Server<\/strong> <strong>Image<\/strong> go to the <strong>Apps<\/strong> tab, then choose <strong>Webmin<\/strong>. This will set up Webmin in minutes!<\/p><\/blockquote>\n<h2>Step 3: Securing Webmin with Let\u2019s Encrypt<\/h2>\n<p>As I\u2019ve already mentioned, Webmin has access to highly sensitive aspects of your server, and it is very important to secure it. To do this, you first need to set up a Let\u2019s Encrypt SSL certificate to secure connections via <a href=\"https:\/\/www.ssdnodes.com\/blog\/an-introduction-to-the-http-protocol-and-its-role-in-the-web\/\">HTTPS<\/a>.<\/p>\n<h3>Using Certbot to Get a Let\u2019s Encrypt Certificate<\/h3>\n<p>To install a Let\u2019s Encrypt certificate for your Webmin server, you\u2019ll first install the Certbot Let's Encrypt client.<\/p>\n<p>If you haven\u2019t already, enable the EPEL repository:<\/p>\n<pre><code class=\"language-bash\">sudo dnf install epel-release -y<\/code><\/pre>\n<p>Output:<\/p>\n<pre><code class=\"language-bash\">  Verifying        : epel-release-9-5.el9.noarch                                                      1\/1\r\n\r\nInstalled:\r\n  epel-release-9-5.el9.noarch\r\n\r\nComplete!<\/code><\/pre>\n<p>Install the certbot client:<\/p>\n<pre><code class=\"language-yaml\">sudo dnf install certbot -y<\/code><\/pre>\n<p>Output:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-11082\" src=\"https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2024\/11\/installed-certbot-almalinux-1024x445.webp\" alt=\"installed certbot almalinux\" width=\"1024\" height=\"445\" srcset=\"https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2024\/11\/installed-certbot-almalinux-1024x445.webp 1024w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2024\/11\/installed-certbot-almalinux-300x131.webp 300w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2024\/11\/installed-certbot-almalinux-768x334.webp 768w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2024\/11\/installed-certbot-almalinux-1536x668.webp 1536w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2024\/11\/installed-certbot-almalinux.webp 2000w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>Request a new Let's Encrypt certificate using Certbot:<\/p>\n<pre><code class=\"language-bash\">sudo certbot certonly --standalone -d webmin.your_domain.com -m your_email@example.com --agree-tos<\/code><\/pre>\n<p>Replace\u00a0<code>webmin.your_domain.com<\/code> and\u00a0<code>your_email@example.com<\/code>\u00a0with your information.<\/p>\n<p>You\u2019ll be prompted on whether you want to share your email address with the Electronic Frontier Foundation, type <code>N<\/code> and continue.<\/p>\n<p>Output:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-11083 size-large\" src=\"https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2024\/11\/almalinux-letsencrypt-info-1024x271.webp\" alt=\"let's encrypt info\" width=\"1024\" height=\"271\" srcset=\"https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2024\/11\/almalinux-letsencrypt-info-1024x271.webp 1024w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2024\/11\/almalinux-letsencrypt-info-300x80.webp 300w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2024\/11\/almalinux-letsencrypt-info-768x204.webp 768w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2024\/11\/almalinux-letsencrypt-info-1536x407.webp 1536w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2024\/11\/almalinux-letsencrypt-info.webp 2000w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>In this output, you have the following parts:<\/p>\n<ul>\n<li>Let\u2019s Encrypt Certificate file: <code>\/etc\/letsencrypt\/live\/webmin.example.com\/fullchain.pem<\/code><\/li>\n<li>Let\u2019s Encrypt Private key: <code>\/etc\/letsencrypt\/live\/webmin.example.com\/privkey.pem<\/code><\/li>\n<\/ul>\n<p>To install this certificate merge the two files into one <code>cert.pem<\/code> file inside the <code>\/etc\/webmin<\/code> directory:<\/p>\n<pre><code class=\"language-bash\">sudo cat \/etc\/letsencrypt\/live\/webmin.example.com\/fullchain.pem \/etc\/letsencrypt\/live\/webmin.example.com\/privkey.pem | sudo tee \/etc\/webmin\/cert.pem &gt; \/dev\/null<\/code><\/pre>\n<p>This command works as follows:<\/p>\n<ul>\n<li><code>cat<\/code> reads the files with <code>sudo<\/code> privileges.<\/li>\n<li><code>tee<\/code> with <code>sudo<\/code> writes the output to <code>\/etc\/webmin\/cert.pem<\/code>.<\/li>\n<li><code>&gt; \/dev\/null<\/code> discards the output of <code>tee<\/code> to avoid printing it to the console.<\/li>\n<\/ul>\n<p>Open the Webmin server configuration using <code>vi<\/code> or <code>nano<\/code>:<\/p>\n<pre><code class=\"language-bash\">sudo vi \/etc\/webmin\/miniserv.conf<\/code><\/pre>\n<p>In the key file configuration:<\/p>\n<pre><code class=\"language-bash\">keyfile=\/etc\/webmin\/miniserv.pem<\/code><\/pre>\n<p>Replace the <code>keyfile<\/code> value with <code>\/etc\/webmin\/cert.pem<\/code> :<\/p>\n<pre><code class=\"language-bash\">keyfile=\/etc\/webmin\/cert.pem<\/code><\/pre>\n<p>Restart the Webmin service:<\/p>\n<pre><code class=\"language-yaml\">sudo systemctl restart webmin<\/code><\/pre>\n<p>After a few minutes, Let's Encrypt will be enabled on your Webmin server with HTTPS protection.<\/p>\n<h2><strong>Step 4: Using Webmin to Manage your AlmaLinux Server<\/strong><\/h2>\n<p>You now have Webmin fully installed and ready to be used for server management. In this section, I\u2019ll walk you through how to harden your server security and restrict Webmin access, manage files, backup your file system, and use the terminal directly in your Webmin UI.<\/p>\n<h3>Restrict Webmin Access<\/h3>\n<p>To harden your Webmin security, you must restrict who can access it. To do this, use the following steps:<\/p>\n<ol>\n<li>Log into Webmin.<\/li>\n<li>Click <strong>Webmin<\/strong> then go to <strong>Webmin Configuration<\/strong> in the left-hand sidebar.<img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-11084\" src=\"https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2024\/11\/webmin-ip-access-1024x449.webp\" alt=\"Restrict IP access\" width=\"1024\" height=\"449\" srcset=\"https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2024\/11\/webmin-ip-access-1024x449.webp 1024w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2024\/11\/webmin-ip-access-300x132.webp 300w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2024\/11\/webmin-ip-access-768x337.webp 768w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2024\/11\/webmin-ip-access.webp 1311w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/li>\n<li>Click <strong>IP Access Control<\/strong>.<\/li>\n<li>Select <strong>Only allow from listed addresses<\/strong>, then enter the IP addresses you want to allow, one on each line.<img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-11085\" src=\"https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2024\/11\/Only-allow-from-listed-addresses-1024x332.webp\" alt=\"Only allow from listed addresses\" width=\"1024\" height=\"332\" srcset=\"https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2024\/11\/Only-allow-from-listed-addresses-1024x332.webp 1024w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2024\/11\/Only-allow-from-listed-addresses-300x97.webp 300w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2024\/11\/Only-allow-from-listed-addresses-768x249.webp 768w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2024\/11\/Only-allow-from-listed-addresses.webp 1302w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/li>\n<li>Click <strong>Save<\/strong> to apply the changes.<\/li>\n<\/ol>\n<h3>Creating a Webmin User with Limited Permissions<\/h3>\n<p>Think of managing server access like giving keys to your house. You wouldn\u2019t hand out a master key to everyone, or would you?<\/p>\n<p>By creating Webmin users with limited permissions, you make it clear that each person only has access to what they need.<\/p>\n<p>Now, let\u2019s walk through how to set up a user with just the right amount of access to keep your system secure.<\/p>\n<ol>\n<li>Go <strong>**to <\/strong>Webmin<strong> then <\/strong>Webmin Users**\n<ul>\n<li>Click on <strong>Create a new privileged user<\/strong>.<\/li>\n<\/ul>\n<\/li>\n<li><strong>Enter your User Information<\/strong>\n<ul>\n<li><strong>Username<\/strong>: Choose a unique and easy-to-remember username.<\/li>\n<li><strong>Password<\/strong>: Set a strong password to protect the account.<\/li>\n<li><strong>Force Password Change<\/strong>: For more security, check the <strong>Force change at next login<\/strong> option.<\/li>\n<li><strong>Real Name<\/strong>: Add a descriptive name like \"Logs User\" or \"Database Admin\" to make it clear what the user\u2019s role is.<\/li>\n<\/ul>\n<\/li>\n<li><strong>Set Security and Access Restrictions<\/strong>\n<ul>\n<li>Open the <strong>Security and limits options<\/strong> section.<\/li>\n<li><strong>Restrict Access by IP\/Time<\/strong>: Limit access by specific IP addresses or restrict login to certain times for more control.<\/li>\n<\/ul>\n<\/li>\n<li><strong>Assign Webmin Modules<\/strong>\n<ul>\n<li>In the <strong>Available Webmin Modules<\/strong> section, carefully select the modules the user should access. Limit access to only necessary modules. Never give more power than necessary. For example, a user that is responsible for monitoring logs could have access to system logs and monitoring tools, while more critical modules are kept off-limits.<\/li>\n<\/ul>\n<\/li>\n<li>Click <strong>Create<\/strong> to finalize the new user.<\/li>\n<\/ol>\n<p>By limiting access to only the necessary modules, you reduce the risk of accidental changes or unauthorized actions, which helps keep your system secure.<\/p>\n<h3>Uploading and Downloading Files in Webmin<\/h3>\n<p>Transferring files between your computer and server is a breeze with Webmin\u2019s built-in File Manager. Let\u2019s walk through the quick steps for both uploading and downloading files.<\/p>\n<p>First, navigate to <strong>Tools<\/strong> &gt; <strong>File Manager<\/strong>.<\/p>\n<p>Here, you can navigate through the file system and read and modify files directly on your web browser.<\/p>\n<p>To upload a file click <strong>File<\/strong> on the navigation menu.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-11086\" src=\"https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2024\/11\/Upload-and-Download-1024x442.webp\" alt=\"Upload and Download\" width=\"1024\" height=\"442\" srcset=\"https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2024\/11\/Upload-and-Download-1024x442.webp 1024w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2024\/11\/Upload-and-Download-300x130.webp 300w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2024\/11\/Upload-and-Download-768x332.webp 768w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2024\/11\/Upload-and-Download.webp 1308w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>Here you both upload files and download them to your file system from a remote URL.<\/p>\n<h3>Backing up Your File System with Webmin Backup<\/h3>\n<p>To create a Webmin backup for your file system, follow these steps:<\/p>\n<ol>\n<li>In the Webmin dashboard, navigate to <strong>System<\/strong> &gt; <strong>Filesystem Backup<\/strong>.<\/li>\n<li><strong>Create a New Backup<\/strong>\n<ul>\n<li>Type in the directory you want to back up in the <strong>Add a new backup of directory<\/strong> box.<\/li>\n<li>Select <strong>in TAR file<\/strong> if you want to compress the backup.<\/li>\n<li>Click <strong>Add a new backup of directory<\/strong> button.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-11088\" src=\"https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2024\/11\/Filesystem-Backup-1024x255.webp\" alt=\"Filesystem Backup\" width=\"1024\" height=\"255\" srcset=\"https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2024\/11\/Filesystem-Backup-1024x255.webp 1024w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2024\/11\/Filesystem-Backup-300x75.webp 300w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2024\/11\/Filesystem-Backup-768x191.webp 768w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2024\/11\/Filesystem-Backup.webp 1233w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>After you select the directory to back up. You can configure your backup settings:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-11087\" src=\"https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2024\/11\/Webmin-Filesystem-Backup-Settings-1024x538.webp\" alt=\"Filesystem Backup Settings\" width=\"1024\" height=\"538\" srcset=\"https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2024\/11\/Webmin-Filesystem-Backup-Settings-1024x538.webp 1024w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2024\/11\/Webmin-Filesystem-Backup-Settings-300x158.webp 300w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2024\/11\/Webmin-Filesystem-Backup-Settings-768x403.webp 768w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2024\/11\/Webmin-Filesystem-Backup-Settings.webp 1249w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<ol>\n<li><strong>Configure Your Webmin Backup Settings<\/strong>\n<ul>\n<li>Choose a backup destination (local file or remote server).<\/li>\n<li>Set the backup schedule by clicking <strong>Backup schedule<\/strong> if you want it to run automatically.<\/li>\n<\/ul>\n<\/li>\n<li><strong>Run the Backup<\/strong>\n<ul>\n<li>Click <strong>Create and Backup Now<\/strong> to start the process immediately or save the settings for scheduled backups.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<h3>Solve \u201cThe Perl module\u00a0IO::Pty\u00a0is missing\u201d<\/h3>\n<p>If you try to access the terminal in <strong>Tools<\/strong> &gt; <strong>Terminal<\/strong>.<\/p>\n<p>You\u2019ll likely see this error:<\/p>\n<pre><code class=\"language-bash\">The Perl module IO::Pty is missing, but can be installed automatically using Webmin's Perl Modules module. It is recommended to have EPEL repository enabled first.<\/code><\/pre>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-11089\" src=\"https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2024\/11\/The-Perl-module-IOPty-is-missing-1024x375.webp\" alt=\"The Perl module\u00a0IO::Pty\u00a0is missing error\" width=\"1024\" height=\"375\" srcset=\"https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2024\/11\/The-Perl-module-IOPty-is-missing-1024x375.webp 1024w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2024\/11\/The-Perl-module-IOPty-is-missing-300x110.webp 300w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2024\/11\/The-Perl-module-IOPty-is-missing-768x282.webp 768w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2024\/11\/The-Perl-module-IOPty-is-missing-1536x563.webp 1536w, https:\/\/www.ssdnodes.com\/wp-content\/uploads\/2024\/11\/The-Perl-module-IOPty-is-missing.webp 1541w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>This is because there are some Perl modules that are not installed on AlmaLinux by default.<\/p>\n<p>To solve this problem, first enable the CBR repository on your AlmaLinux server:<\/p>\n<pre><code class=\"language-bash\">sudo dnf config-manager --set-enabled crb<\/code><\/pre>\n<p>Next, install the <code>perl-IO-Tty<\/code> module:<\/p>\n<pre><code class=\"language-bash\">sudo dnf install perl-IO-Tty -y<\/code><\/pre>\n<p>Output:<\/p>\n<pre><code class=\"language-bash\">Running transaction check\r\nTransaction check succeeded.\r\nRunning transaction test\r\nTransaction test succeeded.\r\nRunning transaction\r\n  Preparing        :                                                                                  1\/1\r\n  Installing       : perl-IO-Tty-1.16-4.el9.x86_64                                                    1\/1\r\n  Running scriptlet: perl-IO-Tty-1.16-4.el9.x86_64                                                    1\/1\r\n  Verifying        : perl-IO-Tty-1.16-4.el9.x86_64                                                    1\/1\r\n\r\nInstalled:\r\n  perl-IO-Tty-1.16-4.el9.x86_64\r\n\r\nComplete!<\/code><\/pre>\n<p>Now if you navigate to to\u00a0<strong>Tools<\/strong>\u00a0&gt;\u00a0<strong>Terminal<\/strong>\u00a0on your Webmin Dashboard, you\u2019ll see a terminal window as follows:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/prod-files-secure.s3.us-west-2.amazonaws.com\/e67dea32-1b92-40eb-a311-8fd90c28dfaf\/64b30cfc-06fc-4f28-9765-f9a1cb197022\/Webmin_Terminal.png\" alt=\"Webmin Terminal.png\" \/><\/p>\n<p>That\u2019s it! You are now connecting to your <a href=\"https:\/\/ssdnodes.com\/\" target=\"_blank\" rel=\"noopener\">SSD Nodes VPS<\/a> through a web-based terminal with Webmin.<\/p>\n<h2>Step 5: Uninstall Webmin on AlmaLinux<\/h2>\n<p>To uninstall Webmin on AlamaLinux, run <code>sudo systemctl stop webmin<\/code> to stop it. Then <code>sudo dnf remove webmin<\/code> to remove the Webmin package.<\/p>\n<p>If you want to delete all the Webmin files and configuration, you can use the <code>rm<\/code> command to remove the Webmin directory with <code>sudo rm -rf \/etc\/webmin<\/code>.<\/p>\n<h2>Conclusion<\/h2>\n<p>You\u2019ve successfully set up, secured, and used Webmin on your AlmaLinux 9 server. From server management to backups and secure access, Webmin offers a powerful, user-friendly interface for handling your server tasks. For more, check out the official <a href=\"https:\/\/webmin.com\/docs\/\" target=\"_blank\" rel=\"noopener\">Webmin documentation<\/a>.<\/p>\n<h2>FAQ<\/h2>\n<h3>How is Webmin different from Virtualmin?<\/h3>\n<p>Webmin is a general-purpose web-based system administration tool, while Virtualmin is a module specifically for managing virtual hosts and domains within Webmin. If your focus is on server-wide management, Webmin alone is sufficient, but if you need dedicated hosting management, Virtualmin can enhance Webmin\u2019s functionality.<\/p>\n<h3>Webmin vs. Cockpit: Which is better for AlmaLinux?<\/h3>\n<p>Both Webmin and Cockpit provide web-based interfaces for managing Linux servers, but Webmin offers more comprehensive system administration features, while Cockpit focuses on system health monitoring and real-time performance tracking. For AlmaLinux, Webmin is typically preferred for detailed server configuration, while Cockpit is ideal for quick monitoring tasks.<\/p>\n<h3>Can I use Webmin and phpMyAdmin together?<\/h3>\n<p>Yes, Webmin and phpMyAdmin can be used together. Webmin handles broader system tasks, including database management, while phpMyAdmin provides a dedicated interface for managing MySQL or MariaDB databases. Using both allows for complete system and database control on AlmaLinux.<\/p>\n<h3>What\u2019s the difference between Webmin and cPanel?<\/h3>\n<p>Webmin is an open-source tool focusing on system administration across various tasks, whereas cPanel is a paid, specialized web hosting control panel. If you\u2019re managing a server without hosting multiple sites, Webmin on AlmaLinux is cost-effective and flexible, while cPanel is better suited for commercial hosting.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Learn how to install Webmin, secure it with Let\u2019s Encrypt, and manage your server effortlessly\u2014all through a user-friendly browser interface.<\/p>\n","protected":false},"author":19,"featured_media":11126,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[18,30],"tags":[],"class_list":["post-11075","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-devops","category-tutorials"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.ssdnodes.com\/wp-json\/wp\/v2\/posts\/11075","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ssdnodes.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.ssdnodes.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.ssdnodes.com\/wp-json\/wp\/v2\/users\/19"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ssdnodes.com\/wp-json\/wp\/v2\/comments?post=11075"}],"version-history":[{"count":9,"href":"https:\/\/www.ssdnodes.com\/wp-json\/wp\/v2\/posts\/11075\/revisions"}],"predecessor-version":[{"id":12925,"href":"https:\/\/www.ssdnodes.com\/wp-json\/wp\/v2\/posts\/11075\/revisions\/12925"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.ssdnodes.com\/wp-json\/wp\/v2\/media\/11126"}],"wp:attachment":[{"href":"https:\/\/www.ssdnodes.com\/wp-json\/wp\/v2\/media?parent=11075"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.ssdnodes.com\/wp-json\/wp\/v2\/categories?post=11075"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.ssdnodes.com\/wp-json\/wp\/v2\/tags?post=11075"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}