Docker (Recommended)

This guide was last checked on Rocky / Alma Linux 9 and 10
(Status Dec. 2025). We recommend using Linux for the host system.

This guide covers the installation and configuration of a basic Relution instance, which runs in Docker containers.


Prerequisites

Before beginning, ensure that the following requirements are met:

  • The host machine can connect to the Internet.
  • root or sudo permissions are available.
  • Optional: A valid SSL certificate for the URL.

Preparation

vim can optionally be set as the default editor. Skip this section to continue using the standard editor.

sudo dnf install -y vim
sudo update-alternatives --install /usr/bin/editor editor /usr/bin/vim 100

The installation is divided into the following main steps:

  1. Install Docker and Docker Compose.
  2. Configure Containers.
  3. Configure Traefik or nginx.

Installing Docker and Docker Compose

To run Relution in a Docker container, Docker and docker compose must first be installed.

Install Docker

Please follow these commands for Alma / Rocky Linux:

dnf install -y dnf-utils wget
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
dnf install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin

Make sure to start and enable the Docker service after installation so that it is available after a system reboot.

systemctl enable docker
systemctl start docker

Configure Containers

Create a directory for Relution configuration files, e.g., for docker compose.

mkdir -p /opt/relution
mkdir /opt/relution/secrets

Prepare Secrets

Use secure random passwords for the secrets (e.g., with pwgen -snc 48 1).

Create the following files:

PlaceholderDescription
/opt/relution/secrets/postgres_passwordThe password of the Relution database user
/opt/relution/secrets/system_admin_passwordThe initial password of the system administrator. Change this after the first login.

compose.yaml

Download the file:

wget https://raw.githubusercontent.com/relution-io/relution-setup/master/docker/Linux/opt/relution/compose.yaml \
    --directory-prefix=/opt/relution

The Compose file defines three services: database, relution, and traefik.

application.yml

Download the file:

wget https://raw.githubusercontent.com/relution-io/relution-setup/master/docker/Linux/opt/relution/application.yml \
    --directory-prefix=/opt/relution

Edit the file:

vim /opt/relution/application.yml

Adapt the file to the environment. The following placeholders must be replaced:

PlaceholderDescription
%EXT_HOSTNAME_URL%The external address of the Relution server, e.g., https://mdm.example.com
%SYSTEM_ADMIN_EMAIL%The email address of the system administrator

Configuring Traefik (Reverse Proxy)

Automatic Certificate Creation (Let’s Encrypt)

Download the Traefik configuration file and adapt it to the environment:

wget https://raw.githubusercontent.com/relution-io/relution-setup/master/docker/Linux/opt/relution/relution.yaml \
    --directory-prefix=/opt/relution/configs/traefik

In the file /opt/relution/configs/traefik/relution.yaml, the placeholder external.url must be replaced with the actual external URL under which Relution should be made available:

vim /opt/relution/configs/traefik/relution.yaml
http:
  routers:
    relution:
      rule: Host(`external.url`) # Replace placeholder

Shutting Down

To shut down and remove the containers (the images remain):

cd /opt/relution/
docker compose down

Updating Relution

To update the services, use the following commands:

cd /opt/relution/
docker compose pull # Downloads the latest image
docker compose up -d # Stops and restarts the containers

The Relution service will be unavailable until the container restart is complete.

If startup issues with Relution occur, please send the complete log as a Zip file to support. Support is subject to a fee.


Optional

Traefik with static Certificates

Download the configuration file for static certificates:

wget https://raw.githubusercontent.com/relution-io/relution-setup/master/docker/Linux/opt/relution/relution.static_cert.yaml \
    --directory-prefix=/opt/relution/configs/traefik

In the file /opt/relution/configs/traefik/relution.static_cert.yaml, the placeholder external.url must be replaced with the actual external URL under which Relution should be made available:

vim /opt/relution/configs/traefik/relution.static_cert.yaml
http:
  routers:
    relution:
      rule: Host(`external.url`) # Replace placeholder

The certificate chain and the corresponding private key must be placed under server.pem and server.key in the directory /opt/relution/certs/static.

Furthermore, the traefik: block in the compose.yml must be adjusted:

...
  traefik:
    ...
    command:
      - --providers.file.directory=/opt/traefik/
      - --entryPoints.web.address=:80
      - --entryPoints.web.http.redirections.entryPoint.to=websecure
      - --entryPoints.web.http.redirections.entryPoint.scheme=https
      - --entryPoints.websecure.address=:443
    ...
    volumes:
      - ./configs/traefik:/opt/traefik
      - ./certs/static:/opt/certs
...

Nginx Alternative to Traefik (Reverse Proxy)

Download the nginx configuration file:

wget https://raw.githubusercontent.com/relution-io/relution-setup/master/docker/Linux/opt/relution/relution-nginx.conf \
    --directory-prefix=/opt/relution

Replace the traefik: block in the compose.yaml with this nginx: block:

  nginx:
    image: nginx:stable
    restart: unless-stopped
    container_name: nginx
    depends_on:
      - relution
    environment:
      TZ: "Europe/Berlin"
      NGINX_HOST: "%EXT_HOSTNAME%"
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - "/opt/relution/relution-nginx.conf:/etc/nginx/conf.d/relution-nginx.conf"
      - "/opt/relution/server.pem:/etc/nginx/server.pem"
      - "/opt/relution/server.key:/etc/nginx/server.key"

For increased security, the use of better DH parameters is recommended.

  1. Generate key:

    openssl dhparam -out /opt/relution/dhparams.pem 4096
    
  2. Adjust relution-nginx.conf: Add the line (and activate ssl_stapling if necessary):

    ssl_dhparam /etc/nginx/dhparams.pem;
    
  3. Extend compose.yaml Volumes: Adjust the Volumes of the nginx container to include the DH parameters:

    volumes:
      - "/opt/relution/relution-nginx.conf:/etc/nginx/conf.d/relution-nginx.conf"
      - "/opt/relution/server.pem:/etc/nginx/server.pem"
      - "/opt/relution/server.key:/etc/nginx/server.key"
      - "/opt/relution/dhparams.pem:/etc/nginx/dhparams.pem" # Added
    

The configuration expects the SSL certificate and key to be in /opt/relution/server.pem and /opt/relution/server.key. Otherwise, adjust the Volumes of the nginx container accordingly.

SSL Certificate Conversion →


Starting Relution

Navigate to the Relution directory and start the Docker containers:

cd /opt/relution/
docker compose up -d

This will download the images and start the services. It may take some time for the services to become available.

To view the log output of a specific container (e.g., Relution):

docker logs -f <container_name> # Example: docker logs -f relution
Top