Virtual host control panels are a major boon for anyone managing more than 2-3 hosts on the same server. And yet, I still come across a person now and then who does not appreciate the power that any server control panel gives you. These people feel that that Web control panels are useless because if you know the all of the server commands then you don’t need the help of a GUI. These people feel that you should know how to do everything by hand, not just understand the basic concepts behind virtual hosts, DNS entries, stopping and starting services, etc.
The flip side of the coin is that these control panels can add a lot of consistency to your work. They reduce the margin of error that a human can bring to the table when editing files and performing commands “by hand”.
If host control panels are so good, why would you want to write your own control panel when there are so many out there already?
Well, the answer is, there aren’t any open source ones.
[UPDATE: I have found some... VHCS, baifox, and DTC] [UPDATE AGAIN: Found two more... syscp.org and web-cp.net (thanks for the feedback!)]
Pretty much all control panels come with a limitation on the number of hosts or domain names that you can manage. That really gets my goat's dandur up. Why should I be limited to the number of domains that I purchase or manage? What business is it of the software vendor's how many domains or hosts I want to run? It harkens back to the days of per-seat or per-CPU licensing schemes. I thought the Web/Internet was going to free us of all those licensing limitations with thin clients. But.. that's another story.
The one notable exception is Webmin. While Webmin is powerful, I feel that it doesn’t have enough direction. It doesn’t guide the operator into any one path which should make it easier than editing config files by hand. An example would be the task of setting up a new host. This normally involves setting up an Apache virtual host, copying a skeleton setup, applying resource limitations, creating DNS entries, and perhaps setting up an FTP/chroot jail account for the new client. In Webmin, these tasks are distinct actions which aren’t geared towards a common end. There is no "setup a new client" button. You must do each action individually, which can result in introducing as much human error - or inconsistency - as doing the tasks by hand.
The larger issue with existing control panels is that they are all geared towards LAMP, more specifically, the A and P of LAMP. I have yet to see a control panel that would allow me to start off each new hosting client with lighthttpd intsead of Apache, or use RoR instead of PHP, or even default to PostgreSQL instead of MySQL. Where are the panels that setup Erlyweb on a per client basis, or ones that allow you to use RoundCube instead of Horde/Imp? Perhaps you want to attach MRTG output to your dashboard. Admittedly, replacing core components, like Web mail and Web servers, is a huge task, it is not simple. But, lacking an open source framework for creating support for these edge-case technologies ensures that they will remain edge-case technologies.
There are other advantages to having your own open source control panel which might not be immediately obvious. One thing that it is not possible to do with licensed, proprietary software is to have a completely separate development environment to test upgrades (unless you purchase another license). How many people have had a problem with cPanel or Plesk upgrades which you wish you could have avoided - or at least planned for - if only you could have tested the new version locally first?
Next Page: Starting Out the Right Way