Installation via Docker
The installation via Docker is preferable when one wants to quickly get up and running with a working development environment. It is still recommended to check out the manual installation, as some aspects are explained there in much more detail. Note that compared to the other installation methods, Elasticsearch will never be used at the moment.
Installing the dependencies
The only dependency that is needed for this type of installation is Docker, specifically the Docker Engine.
The former can be installed running the following commands:
sudo apt install apt-transport-https ca-certificates curl gnupg lsb-release # When using Debian sudo mkdir -m 0755 -p /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null # When using Ubuntu sudo mkdir -p /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt update && sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Running the application
To initially start the application as well as all necessary services, the following script included in the Kadi4Mat source code can be used, which will first build all services and then start them in the background:
There are various ways to manage and interact with the services, i.e. the running Docker
containers, after starting them. The most common commands using
docker compose are
explained below. For more detailed instructions it is recommended to check out the
official documentations of Docker <https://docs.docker.com>. Note that the
docker compose command needs access to the
docker-compose.yml file in the
project’s root directory, so it is recommended to always run it directly inside that
To attach a terminal to the live log output of all services, including timestamps, the following command can be used:
sudo docker compose logs -tf
To stop and start all services, the following commands can be used respectively:
sudo docker compose stop sudo docker compose start
To run arbitrary commands inside a container, the following command can be used:
sudo docker compose exec <service> <command>
For example, the following commands, which are run in the context of the
service, are especially useful for development:
sudo docker compose exec kadi kadi db sample-data # Setup some sample users and resources sudo docker compose exec kadi kadi celery worker -B --loglevel=INFO # Start Celery to run background tasks sudo docker compose exec kadi python -m smtpd -n -c DebuggingServer localhost:8025 # Start a local debugging SMTP server
For more information about these commands, please refer to the manual installation instructions.
Updating the application
After updating the application code via git, it should be enough to restart all services using:
sudo docker compose restart
In some cases, it may be necessary to rebuild the main
kadi image or to update
existing images of other services, which can both be done by running
again as described above.
While mainly intended for productive installations, it is also recommended to take a look at the update notes, since some of the listed changes may also be relevant for development environments.