Open-source project
webmin/webmin avatar
webmin/webmin

Webmin: one repository directory per Unix service

Powerful and flexible web-based server management control panel

6,137 stars805 forksHTMLBSD-3-Clause

At a glance

What is it?
Webmin is a browser based administration panel for Unix-like servers whose source tree is arranged one directory per subject, with 116 standard modules and a Perl 5.10 floor. Its install steps, ports, and credentials live on webmin.com, not in the repository.
Who is it for?
Webmin fits an administrator who wants to change users, disk quotas, services, or the settings of Apache, BIND, PHP, and MySQL from a browser on a Unix-like box, and the module system is the reason its coverage is as broad as it is. Three checks first.
Can I use it commercially?
Yes. BSD-3-Clause is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 1 day ago.
What is it written in?
Mainly HTML, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on November 13, 2026, and from our analysis. They are not legal advice.

From daily snapshots

Star history

  • webmin/webmin6,137 ★ · +69
Star history
Repository2026-09-232026-11-13
webmin/webmin6.1k6.1k

69 Stars in the last 51 days, measured from the daily GitHub snapshot. Compare with other projects

Editorial analysis

The tree is a directory per service, not one application

Webmin is a web-based system administration tool for Unix-like servers, and the repository is laid out the way that role implies: the source tree is organised by subject rather than gathered into one application. The listed top-level entries include apache/, bind8/, at/, bacula-backup/, bandwidth/, backup-config/, bsdexports/, and change-user/, so each managed area has its own place, with the entry scripts under bin/ and the access control code under acl/. Two Perl modules sit at the root, WebminCore.pm and OsChooser.pm, with chooser.cgi and acl_security.pl beside them.

text
WebminCore.pm
OsChooser.pm
chooser.cgi
acl_security.pl
bin/

The practical effect of that layout is that a change to one service area stays inside one directory, and a module can be read on its own terms instead of being traced through a central dispatcher.

config- directories carry one setting set per operating system

Platform handling shows up in the same tree. Beside the per service directories sit config-aix, config-cobalt-linux, config-debian-linux, config-generic-linux, config-gentoo-linux, config-freebsd, config-hpux, config-irix, config-macos, config-msc-linux, config-netbsd, config-openbsd, config-open-linux, config-openSUSE-Linux-15.0-ALL, and config-osf1, which is a per operating system set of settings rather than one portable default. OsChooser.pm sits at the root next to them.

text
config-aix
config-debian-linux
config-freebsd
config-macos
config-netbsd
config-openbsd
config-openSUSE-Linux-15.0-ALL

The same root also carries eight cluster- prefixed directories: cluster-copy, cluster-cron, cluster-passwd, cluster-shell, cluster-software, cluster-useradmin, cluster-usermin, and cluster-webmin. Their names repeat the existing tasks, which is the clearest sign in the tree that running the same operation across several machines is part of the design.

Perl 5.10 is the entire dependency statement

The Requirements section is one line: Perl 5.10 or higher. That is the whole dependency list, and the installation procedure is not kept in the repository at all, it is handed off to the webmin.com/download page, which is where the README sends you. So the version floor is public and the install steps are not, and anyone sizing up the project from a checkout learns the shape of the code but not how to start it. Licensing is equally short: Webmin is released under the BSD License, and the root carries LICENCE next to a Japanese translation in LICENCE.ja, plus SECURITY.md and CHANGELOG.md.

Usermin holds back admin tasks, Virtualmin adds hosting

Two sibling projects cover the work Webmin itself steps away from. Usermin presents and controls a subset of user-centred features rather than administrator-level tasks, which is the split that lets an account have a web panel without owning the machine. Virtualmin is the hosting layer: a web-hosting control panel for Linux and BSD systems with over 150,000 installations worldwide, shipped as a community-supported open-source version and as a more feature-filled version with premium support. The difference between the three is scope rather than size, so picking between them is a scope decision: Usermin is not Webmin with features removed, and Virtualmin is not a Webmin theme. The About section puts Webmin's own reach at about 1,000,000 yearly installations worldwide.

116 standard modules, and as many third-party ones again

The module system is where the coverage comes from. Webmin ships 116 standard modules, and the number of third-party modules is at least as large, with the canonical list hosted off the repository at doxfer.webmin.com and modules allowed to be custom made rather than restricted to what the project publishes. That count is the honest measure of what the panel touches, and it explains the application names the README picks as examples: BIND DNS Server, Apache HTTP Server, PHP, and MySQL for control, over a base layer of operating system internals such as users, disk quotas, services, and configuration files. Choosing Webmin therefore means choosing against a module list, not against a feature summary, which is worth doing before install rather than after.

One numbered series on master, shipped every few weeks

The release line is a single numbered series on the master branch: 2.670 published on 2026-09-21, 2.660 on 2026-08-21, and 2.653 on 2026-07-27. The last push to the default branch is dated 2026-11-02, so the project is still shipping, and three releases in two months is the cadence those dates show. The numbers themselves carry no scheme worth reading into, since three different third components appear across three months, so the tag is the only handle worth tracking. Repository hygiene files sit alongside them: .editorconfig, .gitattributes, and .perlcriticrc, plus a compare_lang.sh script next to README-zh.md, which points to translations being kept as files in the same tree rather than in a separate repository.

Ports, credentials, and login steps are all off the repository

Everything a new operator asks for first sits outside the code. The link bar points to Documentation, FAQ, Security, Screenshots, which takes a theme parameter for light or dark, and a forum hosted on forum.virtualmin.com. What the README does not carry is the operational detail people look for: no default port, no default credentials, no login steps, no service start commands, and no Ubuntu or Docker instructions. It also makes no comparison with Cockpit or with cPanel, so that question has to be settled by reading both projects. The download page and the documentation site are the first stop for those answers, and the repository itself is the right place only to judge how the panel is put together.

Editorial conclusion

Webmin fits an administrator who wants to change users, disk quotas, services, or the settings of Apache, BIND, PHP, and MySQL from a browser on a Unix-like box, and the module system is the reason its coverage is as broad as it is. Three checks first. Confirm Perl 5.10 or higher is on the machine, since that is the entire dependency statement. Decide whether you want Webmin, Usermin for user scoped tasks, or Virtualmin for hosting, because those three solve different problems. Then read the download page rather than the repository for ports, credentials, and service commands, none of which the README carries.

Frequently asked questions

What is Webmin used for?

It configures operating system internals such as users, disk quotas, services, and configuration files, and it modifies and controls open-source applications including BIND DNS Server, Apache HTTP Server, PHP, and MySQL.

What does Webmin require before it will run?

The stated requirement is Perl 5.10 or higher, and nothing else is listed. The README sends detailed installation instructions to the webmin.com/download page rather than keeping them in the repository.

How do I reach the Webmin interface remotely?

The README gives no port, no credentials, and no remote access steps. It links to webmin.com/docs/, webmin.com/faq/, and webmin.com/security/, and to the forum at forum.virtualmin.com.

How does Webmin compare with Cockpit?

No comparison is made in the README. The two projects it names as extensions of its own are Virtualmin, for web hosting on Linux and BSD systems, and Usermin, which limits itself to a subset of user-centred features.

Is Webmin a better fit than cPanel?

The README does not compare the two. The nearest comparison it offers is by role: Virtualmin is called a web-hosting control panel for Linux and BSD systems with over 150,000 installations worldwide, while Webmin itself targets Unix-like servers.

Official sources

  1. License: BSD-3-Clause
  2. Project website
  3. README
  4. Releases
  5. webmin/webmin on GitHub
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/webmin-webmin.svg)](https://hysenlabs.com/projects/webmin-webmin)

Star history chart for your README

markdown
[![Star history](https://hysenlabs.com/chart/webmin-webmin.svg)](https://hysenlabs.com/projects/webmin-webmin)

Was this useful?