DEV Community

Cover image for Installing Webmin on Ubuntu 24.04
Sanskriti Harmukh for Vultr

Posted on with Aashish Chaurasiya Originally published at docs.vultr.com

Installing Webmin on Ubuntu 24.04

Webmin is an open-source, web-based control panel for Linux server administration — user accounts, disk quotas, networking, packages, and more, all without touching the command line. This guide installs it on Ubuntu 24.04, secures it with a real TLS certificate, locks down the firewall, and tours the dashboard.

Prerequisites: an Ubuntu 24.04 instance, non-root sudo user, a domain A record (e.g. webmin.example.com).


Install Webmin

Not in the default repos — use the official setup script:

$ sudo curl -o setup-repos.sh https://raw.githubusercontent.com/webmin/webmin/master/setup-repos.sh
$ sudo bash setup-repos.sh
$ sudo apt install --install-recommends webmin -y
$ sudo systemctl status webmin
Enter fullscreen mode Exit fullscreen mode

Webmin listens on port 10000 by default.


Secure with Let's Encrypt

Webmin serves plain HTTP on 10000 out of the box — fix that first.

$ sudo ufw allow 80/tcp
$ sudo apt install certbot -y
$ sudo certbot certonly --standalone -d webmin.example.com -m webmin@example.com --agree-tos
Enter fullscreen mode Exit fullscreen mode

Merge cert + key into the format Webmin expects, and install it:

$ sudo cat /etc/letsencrypt/live/webmin.example.com/fullchain.pem /etc/letsencrypt/live/webmin.example.com/privkey.pem > webmin.pem
$ sudo mv webmin.pem /etc/webmin/
$ sudo nano /etc/webmin/miniserv.conf
Enter fullscreen mode Exit fullscreen mode

Find and replace the keyfile value:

keyfile=/etc/webmin/webmin.pem
Enter fullscreen mode Exit fullscreen mode
$ sudo systemctl restart webmin
Enter fullscreen mode Exit fullscreen mode

Lock Down the Firewall

$ sudo ufw allow 10000
$ sudo ufw allow https
$ sudo ufw deny http
$ sudo ufw reload
$ sudo ufw status
Enter fullscreen mode Exit fullscreen mode

Denying plain HTTP after the cert is issued closes the unencrypted path — the cert renewal process doesn't need port 80 open long-term the way initial issuance does (Certbot's --standalone renewal reopens it briefly, or switch to a DNS challenge if you'd rather keep 80 closed permanently).


Access Webmin

  1. Visit https://webmin.example.com:10000, log in with your sudo user credentials.
  2. Dashboard shows CPU, memory, disk, and running processes at a glance.
  3. System → Software Package Updates — review and apply pending package updates.
  4. Tools → File Manager — browse and edit files on the server.
  5. Tools → Terminal — a full shell session in the browser.

All system users with login privileges can log in; only sudo users get administrative actions.


Next Steps

Webmin is running behind TLS with the firewall scoped to only the ports it needs. From here:

  • Explore Webmin modules for specific services you run (Apache, BIND, Postfix, etc.)
  • Set up additional restricted users for team members who only need specific modules
  • Switch Certbot to a DNS-01 challenge if you want port 80 closed permanently between renewals

For the full guide, visit the original article on Vultr Docs.

Top comments (0)