A simplistic Node.js based replacement for webmin (not yet alpha)
JavaScript Shell
Switch branches/tags
Nothing to show
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


Webmin.js - A Node.js replacement for Webmin

The PERL based Webmin tool provides a web-based adminsitration tool for Linux servers. It is an excellent tool but rather over-complex - the Apache admin module for example is far more complex to use than editing the raw config files even for beginners. Additionally, many of the modules don't seem to get updated regularly.

Webmin.js is my first proper experiment with Node.js. I wanted to reproduce and enhance the parts of webmin that I really want and to see how easy this might be using Node.

Note that this is very much a part-time project. I am not a "developer", I use programming to support my various roles as an IT consultant & contractor. So it will likely be a long time before this is anything more than a "garden shed" project.

What Is Currently Implemented?

  • Creates an https server assigned to a free port (starting at 8000)

  • Uses an external js file (example included as docs/.secureme.example) that can be require'd to provide certificate and http basic authentication details.

  • Uses a simple JSON variable to create a menu of links

  • Uses a JSON file to provide a grouped list of links for display on the index page. See docs/links.json.example

  • Provides a package.json file for npm installation. You can check out the github project and run npm install -d at the command prompt to get the dependencies.

  • Commands currently implemented:

    • utime - shows the output of the uptime shell command
    • top - shows the output of a single top (top -b -n 1) shell command
    • ports - shows the output of lsof and netstat showing open ports on the system
    • cmdexec - input any shell command and return the output to the browser
      • Currently has limited buffer capability (easily exceeded by a large aptitude search for example)
      • Has NO input checking yet! You've been warned!
    • fsedit - VERY simplistic file editor. Supply a folder/file name - it is retrieved to a textarea, edit and save.
      • Has NO input checking yet! You've been warned!

Not Yet Done

Some of the other things I want to do:

  • Service checker using a simple JSON configuration to check that multiple services are working properly (e.g. web, email, database)
  • Log viewer. Although log.io looked promissing it doesn't get kept up-to-date against Node so it's no use to me
  • File editor - possibly grouped by services so that you can see all of the relavent files for a server service, website, etc. - Probably will include live syntax highlighting (as at github).
  • Aptitude - update, search, show (details), install and uninstall Linux applications (Debian/Ubuntu)
  • npm - update, search, show (details), install and uninstall Node.js modules
  • PECL - update, search, show (details), install and uninstall PHP modules
  • Service restarter - automatically list the available services (Debian) with button(s) to restart the services - maybe also add a marker (or colour) to show if they are running
  • Change from a simple client/server interaction model to an AJAX one, possibly using socket.io

Feel free to add other suggestions by raising an "Issue" on the github project (TotallyInformation/webmin)


Creative Commons License
Webmin.js by Julian Knight (Totally Information) is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.
Based on a work at TotallyInformation@github.com.