Webmin is a free control panel for Linux servers that runs in your web browser. Instead of typing commands, you can manage users, services, firewalls, packages, cron jobs and much more from a web page. This guide installs it the way Webmin officially recommends, which also keeps it updated with your normal system updates.
Quick answer
curl -o webmin-setup-repo.sh https://raw.githubusercontent.com/webmin/webmin/master/webmin-setup-repo.sh
sh webmin-setup-repo.sh
Then install it with apt-get install webmin --install-recommends (Debian, Ubuntu) or dnf install webmin (AlmaLinux, Rocky Linux), open port 10000 in your firewall, and go to https://your-server-ip:10000.
What you need: root access to a Debian, Ubuntu, AlmaLinux, Rocky Linux or other RHEL-based server. Webmin install guide
1. Add the Webmin repository
Download and run Webmin's official setup script:
curl -o webmin-setup-repo.sh https://raw.githubusercontent.com/webmin/webmin/master/webmin-setup-repo.sh
sh webmin-setup-repo.sh
The script adds Webmin's package repository and its signing key to your server. From then on, Webmin installs and updates like any other package. Answer y if it asks to continue.
2. Install Webmin
On Debian or Ubuntu:
apt-get install webmin --install-recommends
On AlmaLinux, Rocky Linux or other RHEL-based systems:
dnf install webmin
When it finishes, Webmin is running and starts automatically after a reboot.
3. Open port 10000
Webmin listens on port 10000. If the server has a firewall, allow that port.
With ufw (common on Ubuntu):
ufw allow 10000/tcp
With firewalld (common on AlmaLinux and Rocky Linux):
firewall-cmd --permanent --add-port=10000/tcp
firewall-cmd --reload
With CSF, add 10000 to the TCP_IN line in /etc/csf/csf.conf, then run csf -r. See How to Install CSF Firewall.
For better security, allow port 10000 only from your own IP address rather than from everyone, if your IP address does not change.
4. Log in
Open this address in your browser, using your server's IP address or hostname:
https://your-server-ip:10000
Your browser will warn that the connection is not private. That is expected: Webmin starts with a self-signed security certificate. Continue to the site, then log in with the root user and password, or with a user that has sudo rights.
To remove the warning, set up a free Let's Encrypt certificate in Webmin › Webmin Configuration › SSL Encryption. Your server needs a domain name pointing to it for this.
Updating Webmin
Webmin updates with the rest of the server:
apt update && apt upgrade # Debian, Ubuntu
dnf update # AlmaLinux, Rocky Linux
Fix: "NO_PUBKEY" or "repository is not signed"
Servers that installed Webmin with an older method can show this when running apt update:
W: GPG error: https://download.webmin.com/download/newkey/repository stable Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 2D223B918916F2A2
E: The repository 'https://download.webmin.com/download/newkey/repository stable Release' is not signed.
Webmin changed its signing key, and the old setup does not have the new one. Run the setup script from step 1 again: it replaces the old repository settings and installs the current key. Then run apt update again; the error should be gone.
Avoid the old instructions you may find elsewhere (a sarge repository line and apt-key add). apt-key is deprecated and removed from newer Debian and Ubuntu releases, and the old key no longer verifies Webmin's packages.