Install Exegol

Installing Exegol starts with installing the entrypoint to the whole project: the Python wrapper. Once the wrapper is installed, everything else can be managed from it.

Hint

It is strongly advised to install Exegol on a Linux host, especially when planning on using Exegol for internal penetration tests. This is because Docker Desktop on Windows and macOS lacks a few features, mainly due to how these operating systems run Docker containers within an internal VM that doesn’t share the host’s network interfaces and USB accessories.

Once the wrapper is installed, the second step in setting up Exegol on a device is to install at least one Exegol image, either with exegol start (documentation here), or with exegol install (documentation here). Both actions will guide the user in installing an image if needed.

Requirements

The following elements are required before Exegol can be installed, whatever the host’s operating system is:

Additional dependencies may be required depending on the host OS.

No additional dependencies for Linux environments.

Tip

From Linux systems, Docker can be installed quickly and easily with the following command-line:

curl -fsSL "https://get.docker.com/" -o get-docker.sh
sh get-docker.sh

Warning

By default, sudo will be required when running docker, hence needed as well for Exegol. For security reasons, it should stay that way, but it’s possible to change that. In order to run exegol from the user environment without sudo, the user must have the appropriate rights. You can use the following command to grant them to the current user:

# add the sudo group to the user
sudo usermod -aG docker $(id -u -n)

# "reload" the user groups with the newly added docker group
newgrp docker

For more information, official Docker documentation shows how to manage docker as a non root user.

Warning

Docker “Rootless mode” is not supported by Exegol as of yet. Please follow the install procedure mentionned above.

Installation

The installation of Exegol on Linux, macOS and Windows are very similar. It can either be installed from pip (easiest, most user-friendly, but with a few missing features) or from sources (easy as well, fully featured).

1. Installation of exegol

Exegol’s wrapper can be installed from pip. While this is the easiest and most user-friendly technique, for more advanced users it is advised to install from sources, as it allows to switch from release to dev branches easily and the auto-update feature is supported.

python3 -m pip install exegol

Warning

You may want to disable Windows Defender during the installation, as Exegol will download pre-built remote shells (or temporarily exclude C:\Users\<username>\AppData\Local\Temp).

You should also add the folder C:\Users\<user>\.exegol\exegol-resources to the exclution list.

2. Adding Exegol to the PATH

If your pip installation is correct and functional, you have nothing more to do and you can already use the command exegol.

If not, remember that pip installs binaries in a dedicated local folder, which then must be in the PATH environment variable. Try to fix your pip installation: Linux | MacOS | Windows

3. (Optional) Using Exegol auto-completion

Exegol (wrapper) supports auto-completion in many shell environments but there is a configuration to add (on the host) for this feature to work.

Tip

If you have a source installation, make sure you have installed (or updated) the requirements.txt packages before using the completer.

Important

The following configurations must be made in your host environment.

You can enable Exegol auto-completion for your current user with your .bashrc or you can enable the auto-completion system-wide with bash-completion.

To setup the auto-completion system-wide you first need to install bash-completion on your system (if not already installed).

sudo apt update && sudo apt install bash-completion

At this point you should have a /etc/bash_completion.d/ folder. It’s in there that you can add any auto-completion module that you want.

To generate and install the exegol completion configuration you can execute the following command with register-python-argcomplete:

register-python-argcomplete --no-defaults exegol | sudo tee /etc/bash_completion.d/exegol > /dev/null

Tip

If you have multiple tools using argcomplete you can also use the global completion method (need bash >= 4.2).

4. Installation of the first Exegol image

Once the exegol wrapper is installed, you can download your first docker image with the following command:

exegol install