Froxlor Love! ;)
The situation: I have been working with Froxlor for years (since the fork from syscp) and have even contributed at times to the code base. Over the years I have constantly re-evaluated other UI’s to ensure there wasn’t a better fit for our use pattern. Important are the following features:
1. Able to be easily adjusted to the distribution version in use.
a. Debian Squeeze
b. Debian Wheezy
c. Debian Jessie
2. Able to be easily adjusted to the needed software stack.
a. Apache 2.2/2.4 & NginX
b. PHP-FPM & PHP FCGID
c. Courier & Exim4
3. Active development.
4. Active community.
5. Readily available Debian binary (yes. not REALLY binary) and source packages.
6. Cluster Support (cmon/corosync)
7. Easily extended capabilities with 3rd party plugins/modules.
Based on the above list Froxlor comes the closest and has kept that edge for years.
The Pros: Froxlor supports –
WEB: Apache, NginX and Lighttpd
CGI: Perl, PHP (mod_php, PHP-FPM and FCGID)
FTP: ProFTPD and PureFTP
DNS: Bind9 and PowerDNS
Mail: Postfix, Exim4, Courier and Dovecot
The development team is constantly working on improvements and new releases are constant. Debian packages are released shortly after source tarballs hit the site and are very stable. The community is pretty active and helpful, which includes the developers chiming in when needed.
The Cons: As previously stated, the developers are constantly working on Froxlor. This is a great situation and should be commended. However, there are certain aspects of the project that are off putting.
1. Package dependencies are slightly incorrect (not just my opinion)
2. Missing 3rd party plugin/module support
3. Missing Cluster support (my opinion)
Points 2 and 3, the missing Cluster and 3rd party plugin/module support is not a deal killer. I have figured out a clean way to get my plugins integrated into Froxlor without having to modify any core code. This allows me to integrate Cluster and services control support in Froxlor without having to worry about the next update. Granted, my plugin support is not able to change core features but I can get new features added. I also cannot use the existing Froxlor database without running the risk of losing information or breaking the install when I perform the next Froxlor upgrade. Thus, I have extra menu entries for my plugins and use either a separate database or flat file the info for the plugin. Some plugins, of course, have no need of stored data and thus are free of the second limitation. Once I figure out how to cleanly get changes into the core without having to fear the next upgrade I will let you know.
The first point regarding the package dependencies is basically a disagreement between myself and the project developers on the basis of logic. Below I have listed the current Debian package dependencies and recommendations.
Depends: apache2 | lighttpd | nginx, php5 | php5-cgi, php5-cli, php5-mysqlnd | php5-mysql, mysql-server | mariadb-server, mysql-client | mariadb-client, mysql-common | mariadb-common, webalizer | awstats
Recommends: postfix-mysql | exim4-daemon-heavy, libsasl2-modules-sql, maildrop, courier-authlib-mysql | dovecot-common, courier-imap | dovecot-imapd, courier-pop | dovecot-pop3d, php5-gd, php5-imap, proftpd-mod-mysql | pure-ftpd-mysql, bind9 | pdns-server
As you can clearly see, they are limiting the application of froxlor due to an unneeded and illogical dependency on either mariadb-server or mysql-server installed on the local system. This is fine for small hosting companies but a nightmare for medium to large companies. A simple change to the package control file, rebuild of the package and an upload to a local debian repo solves the issue for anyone wanting to do some serious and professional web hosting with Froxlor. A simple change to have the DB server a recommendation and a change to the readme to reflect the 2 different install options would clear the matter up.
Point 4 is a bit more problematic but still one that can be fixed. As we all know, FTP should be avoided like the plague it is. FTPS, SCP and SFTP are clearly superior and therefore should be used if at all possible. Added to that should be chroot’ed jails to help ensure the security of the server.
Conclusion: After trying a lot of different options (Ajenti, DTC, ISPConfig, Syscp, Web-CP, Confixx, cPanel, Plesk and a few others) Froxlor is about the best bang for the buck. No real software lock-in due to multiple options for each service you need. Great response times on questions and problems. Rapid development and frequent build releases, coupled with competent security means your server is in good hands. However, as stated, if you are needing to do real hosting you will need to put in a bit more work to reap the rewards.
In my next piece I will be showing you how to run Froxlor on a separate Lighttpd service (Apache 2.4 being the virtual-hosting server) to guarantee Froxlor access even when problems occur. And how to add plugins without losing you work when upgrading or having to change Froxlor code to add new features. A following piece will outline how to get Froxlor working great in a corosync+pacemaker 6 tier cluster.