What is Ajenti Hosting?
Ajenti is a suite of modern UI-based tools for running web servers and web hosting accounts, comprising a web hosting control panel, a server administration control panel, and a web application development framework.
You are probably familiar with web hosting control panels. Apps like cPanel and Plesk provide access to a website’s hosting account and bring tools like one-click installs and email management into one UI, letting non-technical web masters (and technical ones with limited patience) take care of most basic and advanced web site management tasks.
But what about the server behind the server? How do you interact with a remote server?
Traditionally, this is done via a command-line interface (CLI), but this requires both a high degree of technical skills and quite a bit of patience.
So why can’t a server administrator just connect to the server through a typical desktop UI, like those presented in a normal Windows, Mac, or even Linux environment?
Well — that’s a bit more difficult than it seems. On your own computer the desktop UI has (essentially) direct access to the state of your computer. The part of your computer running the view and the part you are trying to get information about (items in a menu, files in a directory, etc) or interact with (config settings, running operations) are all on the same machine.
This is not the case when accessing a server remotely, especially if doing so through a browser.
Browser-based internet viewing continues to take documents and requests as its fundamental paradigm. Thus any action related to a server would have to be done via a request issued from the browser, which then receives a response which updates the view.
This makes browser-based server administration somewhat tedious, as well as not a conceptually accurate representation of what is actually going on at the level of the server.
(Desktop emulation apps can bridge this gap, but then server administration tasks can only be performed by the computer where the emulator has been installed. They also carry a host of other problems which are best left for another discussion.)
Ajenti: Browser-based server administration
Ajenti is an Open Source server administration control panel for managing a Linux environment remotely, via a browser.
It is written in Python and runs its own web server (on port :8000), which gives remote parties (you) access to it on the internet. It interacts directly with the operating system environment of the computer it sits on, giving a remote user full ability to manage all aspects of the computer (server), including operating system, configuration, installed programs, language support, file system, and so forth.
In essence, it is a desktop GUI for your server’s operating system, running in the browser.
Ajenti as a stateful machine
The way that Ajenti solved the browser-based server UI problem is fairly interesting.
Rather than treating the HTML view as a document, with variable bits inside a static HTML structure, Ajenti assembles the UI from serialized JSON data.
The details of this are somewhat involved (read the Ajenti UI docs for actionable information), but essentially the UI is a DOM tree descended from a single Ajenti UI object. During each update, the entire DOM is sent to the browser as JSON and then assembled using Coffescript, based on one of several XML layout definitions.
If this is a bit too technical, here’s the what you need to know about it: Ajenti doesn’t work like a typical “stateless” web application that sends requests and receives responses as if from a black box. Rather it is a stateful machine in which the UI on the browser and the server-side application are integrated together in a way similar to desktop applications.
Control Panel Features
Built from this stateful architecture, Ajenti provides a number of features that essentially turn it into a GUI for the operating system. You can manage files, install applications, and adjust configuration settings. Ajenti provides complete UI support for the entire operating system environment. It also includes built-in terminal windows, allowing you to run more traditional text-based commands.
Ajenti Web Hosting Control Panel
The stateful machine architecture that connects browser UI to server-side scripting can be used for building other types of applications besides the server control panel. The Ajenti development team has released this underlying architecture as a standalone web application development platform. This can be used for writing highly interactive Python apps.
Ajenti can be installed on several Linux distributions, including Debian, Fedora, CentOS, Red Hat, and Ubuntu. It currently supports on the nginx web server (not the more common Apache web server).
Some hosting companies support it as part of their hosting package.
Here's What Your Ajenti Hosting Needs To Offer
Ajenti is a user interface for server computers. So just as cPanel allows website owners to change the workings of their sites, Ajenti allows web server owners to change the workings of their servers using a simple administrative portal, rather than using a command line interface. It is limited, however, to Unix operating systems. We recommend BlueHost for Ajenti hosting.