Docker (Recommended)

Relution Installation with Docker on Linux Host

Introduction

This guide was last checked on Rocky / Alma Linux 8, 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 you begin, ensure that the following requirements are met:

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

Important: Self-signed certificates do not work, as mobile devices do not trust them. You can manually install your root certificate on a device, but this procedure is not recommended due to the high effort. Certificates from Let’s Encrypt → have been tested and work.


Preparation

If you are familiar with vim, you can set it as the default editor. Please skip this section if you wish to continue using the standard editor.

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

Overview

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, you must first install Docker and docker compose.

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

Download and Edit Configuration Files

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

Edit the file:

vim /opt/relution/compose.yaml

Adapt the file to your environment. You must replace at least the following placeholder:

PlaceholderDescription
%POSTGRES_PASSWORD%The password of the Relution database user

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 your environment. You must replace the following placeholders:

PlaceholderDescription
%EXT_HOSTNAME_URL%The external address of the Relution server, e.g., https://mdm.example.com
%POSTGRES_PASSWORD%The password of the Relution database user
%SYSTEM_ADMIN_PASSWORD%The initial password of the system administrator. Change this after the first login and then remove this line.
%SYSTEM_ADMIN_EMAIL%The email address of the system administrator

Note on Passwords: The Compose file defines three services: database, relution, and traefik. Use secure random passwords for the passwords (e.g., with pwgen -snc 48 1). If you replace the password placeholder in one container (e.g., %POSTGRES_PASSWORD%), make sure to use the same password in the application.yml.

Data Persistence: The default configuration maps the PostgreSQL data directories to the host system. Relution stores all its data in the database, so no additional configuration is required. Ensure that you include PostgreSQL in your backup strategy.


Configuring Traefik (Reverse Proxy)

Traefik is used as a reverse proxy to enable access to Relution while providing SSL/TLS encryption. Without Traefik or a similar proxy, access to Relution is only possible locally via localhost.

Automatic Certificate Creation (Let’s Encrypt)

Download the Traefik configuration file and adapt it to your 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

Note: The external URL here is specified without a preceding https://, unlike in the application.yml.

Alternatively Sourced Certificates (Static)

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.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

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
...

Configuring nginx Alternative to Traefik (Reverse Proxy)

Nginx is used as a reverse proxy to enable access to Relution while providing SSL/TLS encryption. Without Nginx or a similar proxy, access to Relution is only possible locally via localhost.

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 your 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

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 you encounter startup issues with Relution, please send the complete log as a Zip file to support. Support is subject to a fee.