ajenti Feature

  • Easy installation : Ajenti 2 can be easy installed with pip and the provided script.

  • Existing configuration : Picks up your current configuration and works on your existing system as-is, without any preparation.

  • Caring : Does not overwrite your config files, options and comments. All changes are non-destructive.

  • Batteries included : Includes lots of plugins for system and software configuration, monitoring and management.

  • Extensible : Ajenti 2 is easily extensible using Python. Plugin development is a quick and pleasant with Ajenti APIs. Write your first plugin.

  • Modern : Pleasant to look at, satisfying to click and accessible anywhere from tablets and mobile.

  • Lightweight : Small memory footprint and CPU usage. Runs on low-end machines, wall plugs, routers and so on.


ajenti Installing


Supported operating systems:

  • Debian 9 or later
  • Ubuntu Bionic or later
  • RHEL 8 or later

Other Linux-based systems might work, but you’ll have to use manual installation method.

Automatic Installation

curl https://raw.githubusercontent.com/ajenti/ajenti/master/scripts/install.sh | sudo bash -s -

Automatic Installation in virtual environment


Please note that this install method is still under tests. Ajenti starts successfully on the previously mentioned supported operating systems, but all functionalities were not tested. Be kind to report any problem with this install method as issue here : https://github.com/ajenti/ajenti/issues

curl https://raw.githubusercontent.com/ajenti/ajenti/master/scripts/install-venv.sh | sudo bash -s -

Manual Installation

Native dependencies: Debian/Ubuntu

Enable Universe repository (Ubuntu only):

sudo add-apt-repository universe
sudo apt-get install build-essential python3-pip python3-dev python3-lxml libssl-dev python3-dbus python3-augeas python3-apt ntpdate

Native dependencies: RHEL

Enable EPEL repository:

sudo dnf install epel-release
sudo dnf install -y gcc python3-devel python3-pip python3-pillow python3-augeas python3-dbus chrony openssl-devel redhat-lsb-core

Install Ajenti 2

Upgrade PIP:

sudo pip3 install setuptools pip wheel -U

Minimal install:

sudo pip3 install ajenti-panel ajenti.plugin.core ajenti.plugin.dashboard ajenti.plugin.settings ajenti.plugin.plugins

With all plugins:

sudo pip3 install ajenti-panel ajenti.plugin.ace ajenti.plugin.augeas ajenti.plugin.auth-users ajenti.plugin.core ajenti.plugin.dashboard ajenti.plugin.datetime ajenti.plugin.filemanager ajenti.plugin.filesystem ajenti.plugin.network ajenti.plugin.notepad ajenti.plugin.packages ajenti.plugin.passwd ajenti.plugin.plugins ajenti.plugin.power ajenti.plugin.services ajenti.plugin.settings ajenti.plugin.terminal

Uninstall Ajenti 2

Ajenti is a collection of Python modules installed with pip, delivered with an init script ( systemd or sysvinit ). So it’s necessary to remove the init script, then the Python librairies, and the configurations files.


sudo systemctl stop ajenti.service
sudo systemctl disable ajenti.service
sudo systemctl daemon-reload
sudo rm -f /lib/systemd/system/ajenti.service


/etc/init.d/ajenti stop
rm -f /etc/init/ajenti.conf

Python3 modules

List all modules from Ajenti:

sudo pip3 list | grep aj

The result should be something like ( eventually more or less plugins ):

aj                         2.1.43
ajenti-panel               2.1.43
ajenti.plugin.ace          0.30
ajenti.plugin.auth-users   0.31
ajenti.plugin.core         0.99
ajenti.plugin.dashboard    0.39
ajenti.plugin.filesystem   0.47
ajenti.plugin.passwd       0.24
ajenti.plugin.plugins      0.47
ajenti.plugin.session-list 0.4
ajenti.plugin.settings     0.30

Then simply remove all these modules:

sudo pip3 uninstall -y aj ajenti-panel ajenti.plugin.ace ajenti.plugin.auth-users ajenti.plugin.core ajenti.plugin.dashboard ajenti.plugin.filesystem ajenti.plugin.passwd ajenti.plugin.plugins ajenti.plugin.session-list ajenti.plugin.settings

Configuration files

If you don’t need it for later, just delete the directory /etc/ajenti/:

sudo rm -rf /etc/ajenti/

Related articles

Writing a graph database in Python

This article is part of a series on rewriting 500 Lines or Less, with the goal of rewriting the original 500 Lines or Less project: Dagoba: an in-memory graph database.

Python task automation tool tox tutorial

Its core role is to support the creation of isolated Python environments where different versions of Python interpreters and various dependency libraries can be installed to facilitate automated testing, packaging, continuous integration, and other things

Mplfinance draws beautiful financial K-line charts

Recently, we found that many of our partners have the need to draw K-line charts, and some of them even write their own code to draw charts without using third-party modules, which is actually a completely repetitive task.

Python invoke task automation tool

Invoke is a spin-off from the well-known remote deployment tool Fabric, and together with paramiko are the two most core foundational components of the Fabric.

alive-progress example

I don't know if you have ever had the experience that you have written a program and it takes a long time to run each time. While waiting for the program to run you press enter again and again to prevent the program from getting stuck.

python fire examples

Python Fire, which can generate command-line interfaces from any Python code,Simply call the Fire function in any Python program to automatically convert that program to a CLI.

Pytype Usage and Examples

Pytype checks and infers the type of Python code:Use lint to check pure Python code, flag common errors such as misspelled property names, incorrect function calls, and much more, and it can even span files.

Encrypting files with Python

In life, sometimes we need to encrypt some important files,Python provides easy-to-use cryptographic libraries such as hashlib, base64, etc.

Quickly test your Python code with Hypothesis

Testing is important no matter which programming language or framework you use. hypothesis is an advanced testing library for Python. It allows writing test cases with parameters, and then generating easy-to-understand test data that makes the test fail.