Plesk and cPanel are well known commercial control panels that provide a graphical interface to simplify the process of managing a Linux web server. But I don't want to use them because for my use they are overkill: I don't need a general purpose hosting reselling panel.
In my opinion, they are also too bloated and taking over too much control. But at the other hand, I find it convenient for example to create a domain or a database through a web interface without having to login to the shell.
There are also relatively reliable and proven Open Source alternatives like Ispconfig or Webmin. But I was searching for something more visually attractive and modern-looking.
I admit that it's maybe superficial. But the outdated interface design often reflects the archaic legacy code base behind it.
So I began to search for a fresh and elegant new control panel. Wikipedia has a nice comparison of web hosting control panels and after some searching, I had a short list of 3 potential candidates: Froxlor, Ajenti and Vesta. They all have a clean and uncluttered interface. Their code is Open Source and accessible at Github. They met the main criteria that I found important. But I had to install them and experiment a little before I could decide which one to use.
My control panel usage scenario
The most common operations that I currently (with Plesk) perform is:
- Create a virtual host for a (sub) domain name (with a limit for hard disk and traffic usage for safety)
- Duplicate or create a MySQL database and a database user - Import a SQL file
- Create a FTP account
- Make automated website backups
- Manage PHP settings like memory_limit or upload_max_filesize
- Occasionally take a look at statistics like traffic usage by domain or server hard disk usage
Ajenti
Installing Ajenti
It's really straightforward to install the Debian package. There was no problem during installation. Within 10 minutes I had it up and running. The only thing that I didn't like is that there is a default user and password (root:admin) that needs to be quickly changed after the installation. I would prefer that it's prompted during the installation.
Functionality of Ajenti
System management functionalities are very comprehensive. A lot of server utilities such as cron, firewall or users can be managed via the interface. There are also integrated tools such as a file manager and a terminal emulator. Especially the last one seems to me unnecessary.
The key functionalities that I need for my usage scenario is a separate Ajenti plugin that really disappointed me. The plugin is currently in closed beta so I couldn't quickly try it out. Therefore Ajenti was actually immediately eliminated.
User experience of Ajenti
The user interface is nice and easy to use. But on the other hand, my impression caused by the screenshots was that it was more polished. There were minor cosmetic imperfections such as misaligned buttons and it was not possible to remove a widget from the dashboard. Automatic refresh is very annoying because it causes repeatedly loading of the dashboard.
The fact that almost every click makes the screen reload takes away the feeling that things can be executed quickly. (Miller's 100 ms threshold - 100ms delay after each click is perceivable and decreases the productivity.) It's, of course, explainable that complex activities take time to execute, but there are a lot of interactions like opening a row, that shouldn't trigger a loading screen.
There were also sporadic issues such as a hanging interface or after clicking a button to install a plugin, the whole application become unresponsive. This did not provide much confidence to run the control panel someday on a mission critical system.
Performance of Ajenti
The control panel interface is a heavy client-side JavaScript app. It needs to load resources.js file which is 4,5 MB. This makes that the building of the first screen takes even at a very fast internet connection a long time. The configuration on the server-side needs more attention and should actually be tested separately.
Froxlor
Installing Froxlor
There is also for Froxlor a Debian installation package which takes care of all the dependencies. The command line installation wizard is really great. It presents a number of questions. There are installation profiles (Webserver, Nameserver, FTP-server, Mail Delivery Agent or Mail Transport Agent) for the scenario that you want to use the server for and before you know it's ready for use. The installation has to be further configured with the web interface. All in all, the installation is smooth and without difficulties.
Functionality of Froxlor
What immediately stands out is subtle difference in focus as compared to Ajenti. Froxlor is aimed more at web hosting management and less on system management. Functionality to create domains is cumbersome: it didn't create the documentroot directory. I couldn't find the cronjob that is supposed to do this. Perhaps it's a small bug or an incorrect setting, but I expected that one of the main functionalities should really work straight out of the box. Functionality to create a databases and a FTP account is decent.
There is a cronjob to create a system backup. But I didn't see it on domain or customer level. It's not possible to edit PHP settings but PHP info can be viewed in the panel (with a small iframe horizontal width problem). There is no way to view the CPU load history or system RAM usage. What I also miss is the integration of a database admin tool like phpMyAdmin.
The Wikipedia page mentions that Froxlor is a fork of SysCP and thereby raises the expectation that there would have enough functionality to accomplish primary tasks. But Froxlor lacks really basic things like restarting a service (for example Apache). It comes very quickly to simultaneously having to login to the shell which makes it a bit pointless to use a control panel.
User experience of Froxlor
The interface is lightweight and snappy. I especially liked the styling for the forms. It's easy to tab through the fields and save the input.
What also appeals me is that Froxlor doesn't entirely take over the control of the server. Almost everything is (like which user name the webserver uses) configurable and the default settings seems to be close to the default settings of the distro.
Performance of Froxlor
The control panel and the default running services are really light weight and seems like they aren't creating any load at all. Everything is very responsive and works as expected. The interface uses conventional HTML pages and jQuery with only a footprint around 150 KB.
Vesta
Installing Vesta
There is a Bash script that can be executed which first checks which OS the server runs and after that, it runs a Bash script to install the needed packages and configures the server. Installer categorizes servers into groups depending on the available RAM. The installer prompts for an e-mail address and informs that the installation will take about 15 minutes. It does install a lot of packages like Roundcube and SpamAssassin that I don't need. (Selecting a setup profile like Floxor would be preferable.)
Functionality of Vesta
It seems like Vesta is exactly focused on my usage scenario. I can easily create a domain with the possibility to choose a plan to set the quotas. I can create a database and phpMyAdmin is integrated. It's possible to create a user with a separate FTP account. Backups are provided and are great with even a restore option.
It's not possible to edit PHP config but that is non-essential. DNS and mail disabling would be also a nice to have.
RRDtool is integrated with great graphs for load average, memory, bandwidth, Apache, Nginx, MySQL, FTP and SSH usage. This is almost like a dream coming true. Another cool things is that Nginx is configured as a proxy and you can check on or off. It's also possible to create and edit templates for services like Apache and Nginx to further configure to the needs.
User experience of Vesta
The user interface is really simple and great. Page transitions are blazing fast. The information architecture is also great. Everything is intuitively placed. All the needed information can be viewed immediately. One minor improvement would be to link the Vesta logo to the main dashboard.
Performance of Vesta
The control panel is on the client-side lightweight with a page footprint around 120KB. Server-side needs to be further evaluated, but I expect that it can handle also high stress situations and that it's configured properly. But these are only assumptions after a brief glimpse.
Overview of the control panels
Froxlor | Ajenti | Vesta | |
---|---|---|---|
License | GPLv2 | LGPLv3 - Commercial | GPLv3 |
Contributors | 27 | 24 | 12 |
Language | PHP | Python | PHP |
Files size | 6,5 MB | 3,7 MB | 2,8 MB |
First commit date | January 17th 2010 | February 28th 2010 | June 12th 2011 |
Lead Developer | Michael Kaufmann | Eugene Pankov | Serghey Rodin |
Github URL | Froxlor Repository | Ajenti Repository | Vesta Repository |
Website | http://www.froxlor.org | http://ajenti.org | http://vestacp.com |
Conclusion
I'm still not entirely convinced for the choice. Of these three control panels, Vesta clearly is the most appropriate for my needs. But the relatively small development capacity without a large community worries me. The documentation is not very extensive. Some issues are on the forum discussed in Russian. I do not know to what extent it already runs on production servers and how often security updates are released. Maybe it's just as easy to prepare a few Bash scripts for what I need. I have to think again about it.
I certainly see all the blood, sweat, and tears that people have put to develop these applications. And I want definitely that one of them will be the Next-gen control panel beating Plesk and cPanel and replacing Webmin/Virtualmin. But maybe they need to join the forces, especially since they have the same goal in mind.