For about 6 years I’ve pondered the nature of web hosting control panels.
When I ran a web host, I played with CPanel, Plesk, and DirectAdmin. I’ve since dabbled in the open source waters of Webmin and Usermin, and of late I’ve even poked at VHCS and OpenPanel. I have, to date, not seen a single control panel that is precisely what I want (with DirectAdmin coming closest, and almost being a winner if not for its tiered reseller model aaaaannnd price tag). The real sticking points come down to the fact that I want:
The control panel to write human-readable, reasonable configuration files: This is where Webmin falls down on the job. The config files are valid, but god are they awful to read.
No mention or hint of reseller anything: I just want administrative accounts running the show and hosted accounts with domains linked to them. Maybe some way for the hosted to monkey with the non-essentials of their own accounts. So on the grounds of overkill, pretty much every commercial panel fails my simple needs.
Email support for something that’s not antiquated: some panels use qmail (or some version therein, which hasn’t had a proper update in years), some use sendmail (which is older than dirt and half as secure), and some use whatever the flavor of the month is (read: whatever ships on the supported OS distro). Me? I’m a postfix guy. I’m not wedded to it per se, but it’s updated, feature packed, works well and its configuration is only modestly arcane (qmail, by the way, fails due to having an arcane configuration file structure that doesn’t plug into antivirus or spam very easily).
Regarding IMAP and POP support, I find that these panels often use their own “questionable” clients, or rely on courier. There isn’t really anything wrong with that, I just like dovecot more (to be fair, DirectAdmin supports dovecot last I checked).
I don’t want to even get started with authorized SMTP support from these packages. God, the horror.
No byzantine dependencies: Don’t tell me that I need some god awful fossilized encryption library or ldap to make this system work.
“Listen here, Mr. Control Panel, I don’t use LDAP, and unless that is what you’re using as a backing store for your hosting information, neither should you.”
To that end, I’ve begun playing with Ruby and Thor to whip up some simple add/delete scripts (with initial success!), and the biggest stumbling block I’ve encountered so far is just parsing out the accounts that exist.
The Apache configuration file format is… archaic in its own right, being neither XML nor attribute: value pairs. It’s readable, but there is a reason that an entire perl package (HTTPD::Config, which may or may not exist anymore) was produced just to scrape httpd.conf files.
I fear that without stepping back a little and engineering a proper solution I’m just going to wind up reimplementing what I encountered when I did overnight support for Reality Check Networks (no link provided, because, well, you know. Those dudes…).