We present step-by-step instructions for setting up a testing environment using the Incus script.
This script is prepared to work on a Debian system. (It may work on other apt based systems.)
It can be run on a bare-metal installation or on a virtual machine. (If running a VM, be sure to enable nested virtualization.)
In this example, we will use Debian 13.3.0 installed from an ISO. We used this image: https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-13.3.0-amd64-netinst.iso
This guide was last tested on 17th February 2026.
Warning:
Incus script uses these networks internally, and they may conflict with your host:
- 192.168.100.0/24
- 192.168.50.0/24
- 192.168.51.0/24
- 2001:db0::0/32
Install Debian from ISO.
- Select SSH Server if you need to connect remotely.
- GUI is not required.
- Set up a mirror server for the package repository.
Debian does not come preinstalled with some packages required by the incus script. We need to install:
sudogitpython3
To install packages, we need to switch the user to root by entering the command and then the root password when asked:
su -Now we update the repository and install packages:
apt-get update
apt-get install sudo git python3We need to make sudo commands run without a password, so the script can execute commands without asking for a password.
visudoAdd a line at the end, replacing <username> with your username.
%<username> ALL=(ALL) NOPASSWD: ALL
Now you won’t be asked for a password when using sudo.
Exit superuser so we can proceed using sudo:
exitReturn to the home directory.
cd ~You can use git clone to download Forge from the repository.
git clone https://gitlab.isc.org/isc-projects/forge.gitEnter the Forge directory and run the install script:
cd forge
sudo ./incus_install.shIncus script allows preparing various OSes for testing. We will start with Ubuntu 24.04 with 2 kea containers and 2 networks:
sudo ./incus.sh prepare-env ubuntu/24.04 2 2 masterWe should now have 3 containers: kea-forge, kea-1, and kea-2 connected by two internal networks.
Incus script supports installing Kea from a tarball or packages.
Kea can be obtained from the git repository or extracted from a tarball.
To download the latest master to the home directory:
git clone https://gitlab.isc.org/isc-projects/kea.git ~/keaYou can also download a premium tarball into the kea directory.
Install Kea on the containers:
sudo ./incus.sh install-kea-tarball 2 ~/keaThis method supports only our internal repository (not publicly available)
Example command:
sudo ./incus.sh install-kea-pkgs ubuntu/24.04 2 2.7.3-isc20240903092214Running a full set of tests requires additional RADIUS and Windows installations.
More useful would be running a specific file:
sudo ./incus.sh run-pytest tests/dhcp/protocol/test_v6_basic.pyOr even a specific test:
sudo ./incus.sh run-pytest tests/dhcp/protocol/test_v6_basic.py::test_v6_basic_message_request_replyWhen you modify Forge files on the host machine, you can upload them to the Forge container using:
sudo ./incus.sh update-pytestOr adding --upload-pytest option to run-pytest. For example:
sudo ./incus.sh run-pytest tests/dhcp/protocol/test_v6_basic.py --upload-pytestThere is no automatic way of reinstalling Kea at this time. You need to delete containers and rebuild them.
To remove containers and networks, run:
sudo ./incus.sh clear-all 2 2You can also log in to containers and update Kea manually. To log in to the first container run:
sudo incus exec kea-1 -- bashYou can change logFile="/dev/null" line in incus.sh to log to file.