Linux (Alma)
Suivre ces instructions pour installer Relution 5 sur Rocky / Alma Linux 9 ou 10. Ces instructions utilisent MariaDB comme base de données et nginx comme proxy inverse.
Pour plus de sécurité et de performance, nous recommandons d’installer Relution, MariaDB et nginx sur des machines séparées. L’installation sur une seule machine ou sur une ou plusieurs machines virtuelles est également possible.
Ce guide couvre l’installation et la configuration d’une instance simple de Relution.
Prérequis
Avant de commencer, s’assurer que :
- Les machines peuvent se connecter à Internet.
- Un utilisateur
rootou les permissions nécessaires pour les commandessudosont disponibles. - Un certificat SSL valide pour le nom d’hôte externe est disponible.
Les certificats auto-signés ne fonctionnent pas, car les appareils mobiles ne leur font pas confiance. Il est possible d’installer manuellement le certificat racine sur un appareil pour qu’il fasse confiance à ce certificat. Cette procédure n’est pas recommandée.
Les certificats de Let’s Encrypt → sont testés et fonctionnent.
Préparation
S’assurer que le système est à jour et que wget est installé.
Ces instructions utilisent wget pour télécharger des scripts depuis notre dépôt
GitHub. wget peut être remplacé par curl, selon les préférences.
sudo yum -y update
sudo yum -y install wget
Au cours de cette installation, certains fichiers doivent être édités manuellement. Si vim est l’éditeur préféré, il peut être défini comme éditeur par défaut avec les commandes suivantes. Sinon, passer cette section et continuer à utiliser l’éditeur par défaut.
sudo yum -y install vim
sudo update-alternatives --install /usr/bin/editor editor /usr/bin/vim 100
Facultatif : Installer le générateur de mot de passe
Par défaut, pwgen (password generator) n’est pas disponible dans Alma Linux. Pour l’utiliser, il faut d’abord activer le dépôt epel
(Extra Packages Enterprise Linux). Puisqu’il s’agit d’un dépôt
tiers non supporté, il doit être installé manuellement. Il est possible de sauter cette étape et de générer des mots de passe sécurisés sur une autre machine
si l’installation de ces paquets sur le serveur n’est pas souhaitée.
sudo yum -y install epel-release
sudo yum -y install pwgen
Installer MariaDB
Utiliser la version LTS de MariaDB. Vérifier quelle est la dernière version stable MariaDB →
La version 10.11 est une version LTS qui peut également être utilisée.
Vérifier également quelle version peut être installée directement :
sudo dnf module list mariadb

Il est possible d’installer la version 11.1 à la place. La version 10.11 étant une version LTS, nous montrons ici comment l’installer. Exécuter la commande suivante :
sudo vi /etc/yum.repos.d/mariadb.repo
Insérer ensuite cette section et sauvegarder le fichier.
[mariadb]
name = MariaDB Server
baseurl = https://dlm.mariadb.com/repo/mariadb-server/11.4/yum/rhel/9/x86_64
gpgkey = https://mirror.mariadb.org/yum/RPM-GPG-KEY-MariaDB
gpgcheck = 1
enabled = 1
module_hotfixes = 1
Comme l’indique le lien, il s’agit de la version 10.11.
Ensuite, il faut mettre à jour le référentiel.
sudo dnf update
MariaDB peut maintenant être installé. Suivre les instructions à l’écran.
sudo dnf install mariadb-server mariadb

Configuration de MariaDB pour Relution
Télécharger le modèle relution.cnf depuis le dépôt GitHub
et le sauvegarder sous /etc/my.cnf.d/relution.cnf.
wget https://raw.githubusercontent.com/relution-io/relution-setup/master/native/Linux/etc/my.cnf.d/relution.cnf.template
sudo mv relution.cnf.template /etc/my.cnf.d/relution.cnf
sudo chmod og-w /etc/my.cnf.d/relution.cnf
Si SELinux est utilisé en Enforcing Mode (par défaut), les permissions pour le fichier après son déplacement sont incorrectes.
Exécuter la commande suivante pour les corriger. Sinon SELinux empêchera le service d’accéder au fichier pour des raisons de sécurité.
sudo restorecon -v /etc/my.cnf.d/relution.cnf
Démarrer MariaDB et s’assurer que le service démarre automatiquement après un redémarrage du système.
sudo systemctl start mariadb.service
sudo systemctl enable mariadb.service
Vérifier l’installation de MariaDB
Il devrait maintenant être possible de se connecter à cette instance de MariaDB. Pour des raisons de compatibilité descendante, les outils en ligne de commande utilisent toujours mysql. Il ne s’agit pas d’un bogue.
mysql -u root
Une sortie similaire à la suivante devrait s’afficher :
Bienvenue dans le moniteur MariaDB. Les commandes se terminent par ; ou \g.
Votre identifiant de connexion MariaDB est 2
Version du serveur : 5.5.56-MariaDB Serveur MariaDB
Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab et autres.
Tapez 'help;' ou '\h' pour obtenir de l'aide. Tapez '\c' pour effacer la déclaration d'entrée actuelle.
MariaDB [(none)]>
Entrer cette commande pour vérifier si la collation du serveur et de la base de données est configurée comme souhaité sur utf8mb4 :
SHOW VARIABLES LIKE '%collation%' ;
S’assurer que collation_database et collation_server ont été configurés sur
utf8mb4_general_ci.
Presser Ctrl+D pour se déconnecter de la base de données et revenir à l’invite de commande.
Créer la base de données de Relution
Créer ensuite la base de données relution et un utilisateur de base de données associé. Cet utilisateur sera utilisé par le service Relution pour se connecter à la base de données. Télécharger le script depuis GitHub.
wget https://raw.githubusercontent.com/relution-io/relution-setup/master/native/Linux/scripts/create_database.sh --directory-prefix=/opt
S’assurer que le fichier est exécutable par root :
chmod 700 /opt/create_database.sh
(Optionnel) Utiliser pwgen pour générer un mot de passe sécurisé :
pwgen -snc 48 1
Exécuter le script pour créer la base de données :
/opt/create_database.sh "relution" "<password>"
Ceci va créer une nouvelle base de données appelée relution et un nouvel utilisateur de base de données nommé relution qui a tous les droits sur cette base de données créée.
Cet utilisateur sera utilisé par le service Relution pour accéder à la base de données. Si un accès administratif à la base de données est nécessaire à des fins de maintenance, il est recommandé de créer un utilisateur de base de données distinct à cet effet.
Conserver le mot de passe sans les guillemets dans un endroit sûr. Ce mot de passe devra être utilisé ultérieurement pour accorder à Relution l’accès à la base de données.
S’assurer qu’il est possible de se connecter à la base de données en tant qu’utilisateur :
mysql -u relution -p relution
Entrer le mot de passe quand il est demandé. Utiliser Ctrl+D dans le prompt MariaDB comme décrit ci-dessus pour se déconnecter à nouveau.
Configuration du pare-feu
Si Relution est installé sur une autre machine, le port 3306 doit être configuré sur cette machine pour que Relution puisse communiquer avec MariaDB.
Si Relution est installé sur la même machine, ces étapes peuvent être sautées.
Remplacer ADDRESS par l’adresse IP et le masque de réseau de la machine ou du réseau auquel l’accès à cette instance de MariaDB doit être donné.
Exemples : utiliser 192.168.0.1/32 pour accorder l’accès à la machine avec l’adresse IP 192.168.0.1.
Utiliser 192.168.0.0/24 pour donner l’accès à partir de n’importe quelle machine dans la plage d’adresses IP 192.168.0.x. En cas de doute, contacter l’administrateur réseau.
sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="###ADDRESS####" port protocol="tcp" port="3306" accept'
sudo firewall-cmd --reload
JAVA
Installer les paquets suivants. Y compris Java.
sudo yum -y install java-21-openjdk unzip wget
Configurer la maison Java
echo "export JAVA_HOME=/usr" | sudo tee -a /etc/profile.d/relution_profile.sh
source /etc/profile
S’assurer que les changements ont été appliqués
echo $JAVA_HOME
Ce chemin doit être affiché (/usr).
Créer un utilisateur Relution
Créer un utilisateur sans permissions, afin que Relution puisse être exécuté avec cet utilisateur :
useradd -s /usr/bin/false -r relution
Ceci crée un utilisateur non privilégié avec le nom relution qui est utilisé pour exécuter le service Relution. Ceci est fait pour des raisons de sécurité, car il n’est pas recommandé d’exécuter des services avec les privilèges `root'.
Télécharger Relution
Télécharger et décompresser le paquet Relution :
wget https://repo.relution.io/package/latest/relution-package.zip --directory-prefix=/opt
unzip /opt/relution-package.zip -d /opt
Définir le propriétaire du répertoire relution :
sudo chown -R relution:relution /opt/relution
Configuration de base de Relution
Télécharger le fichier de configuration de Relution :
wget https://raw.githubusercontent.com/relution-io/relution-setup/master/native/Linux/opt/relution/application.yml.template
Éditer le fichier application.yml.template et l’adapter à l’environnement cible. Tous les paramètres avec des caractères de remplacement tels que %VALUE%, par exemple %MYSQL_PASSWORD%, doivent être adaptés, notamment les suivants :
| Placeholder | Description |
|---|---|
| %EXT_HOSTNAME_URL% | L’adresse externe du serveur Relution, par exemple https://mdm.example.com |
| %MYSQL_PASSWORD% | Le mot de passe de l’utilisateur de la base de données Relution |
| %SYSTEM_ADMIN_PASSWORD% | Le mot de passe initial de l’administrateur système. Modifier ce mot de passe après la première connexion, puis supprimer cette ligne. |
| %SYSTEM_ADMIN_EMAIL% | L’adresse e-mail de l’administrateur système. |
NOTE : il est recommandé d’utiliser pwgen pour générer le mot de passe initial du compte administratif, et de changer ce mot de passe après la première connexion.
Déplacer le fichier dans le répertoire d’installation du serveur Relution :
mv application.yml.template /opt/relution/application.yml
S’assurer que seul root peut éditer ce fichier et autoriser relution à le lire.
chown root:relution /opt/relution/application.yml
chmod 640 /opt/relution/application.yml
Test de l’installation
Pour vérifier que l’installation est correcte jusqu’à ce point, démarrer le service Relution au premier plan.
cd /opt/relution
sudo -u relution JAVA_HOME=/usr bin/relution-foreground.sh
Attendre que le service Relution ait démarré. Dès que la sortie du terminal a cessé de bouger, il devrait être possible de se connecter au portail avec un navigateur. Pour se connecter à partir d’un ordinateur distant, s’assurer que le port 8080 est ouvert dans le pare-feu de l’ordinateur. Pour des raisons de sécurité, ce port doit être fermé dès que Relution et Nginx sont configurés. Une connexion via le port 8080 n’est possible qu’à partir de localhost ou de 127.0.0.1.
http://<nom d'hôte>:8080
Autorisation temporaire des connexions via le port 8080 jusqu’au prochain redémarrage du serveur :
sudo firewall-cmd --zone=public --add-port=8080/tcp
Si tout fonctionne, le portail de Relution devrait s’afficher, avec la possibilité de se connecter avec le compte administratif défini dans le fichier application.yml. Pour des raisons de sécurité, le mot de passe de l’administrateur doit être changé après la première connexion.
Il est recommandé de supprimer l’organisation d’origine et la configuration de l’administrateur dans application.yml.
En cas d’erreurs, vérifier que toutes les étapes ci-dessus ont été suivies. Utiliser Ctrl+C pour arrêter le service et attendre son arrêt. Si le service ne s’arrête pas, utiliser à nouveau la combinaison de touches Ctrl+C.
Création du fichier de service systemd
Pour démarrer Relution en tant que service système, créer un fichier de service systemd pour Relution. Le fichier peut être téléchargé depuis notre dépôt GitHub.
wget https://raw.githubusercontent.com/relution-io/relution-setup/master/native/Linux/etc/systemd/system/relution.service.template
Déplacer le fichier dans le répertoire systemd.
sudo mv relution.service.template /etc/systemd/system/relution.service
Recharger le démon systemd pour qu’il prenne en charge le nouveau service.
sudo systemctl daemon-reload
Si SELinux est utilisé en Enforcing Mode (par défaut), les permissions du fichier peuvent être incorrectes après son déplacement. les permissions du fichier peuvent être incorrectes après qu’il ait été déplacé.
Exécuter la commande suivante pour les corriger. Sinon SELinux empêchera le service d’accéder au fichier pour des raisons de sécurité.
sudo restorecon -v /etc/systemd/system/relution.service
S’assurer que les répertoires de Relution sont toujours accessibles pour le service.
Si l’application a été précédemment démarrée en tant que root, Relution peut ne pas être en mesure d’écrire dans les fichiers de log.
sudo chown -R relution:relution /opt/relution
sudo chown -R relution:relution /tmp/relution.tmp
Démarrer Relution et s’assurer que le service démarre automatiquement après un redémarrage du système.
sudo systemctl start relution
sudo systemctl enable relution
Pour surveiller le démarrage du service, il est possible de suivre son fichier journal. (appuyer sur CTRL+C pour quitter).
tail -f /opt/relution/log/relution.log
Attendre que le service Relution ait démarré. Le portail Relution devrait alors pouvoir être ouvert avec un navigateur.
http://<nom d'hôte>:8080
Il est également recommandé de fermer le port du pare-feu qui a été ouvert pour le test. Sinon, le port restera ouvert jusqu’au prochain redémarrage du système. Si Nginx doit être installé sur un autre ordinateur, cette étape peut être sautée ; poursuivre alors avec la configuration du pare-feu ci-dessous.
sudo firewall-cmd --zone=public --remove-port=8080/tcp
Configuration du pare-feu
Si Nginx est installé sur un autre ordinateur, le port 8080 doit rester ouvert en permanence sur cette machine, afin que Nginx puisse communiquer avec Relution. Si Nginx doit être installé sur la même machine, ces étapes peuvent être sautées.
Remplacer ADDRESS par l’adresse IP et le masque de réseau de l’ordinateur ou du réseau à rendre accessible à cette instance de Relution. Exemples : utiliser 192.168.0.1/32 pour accéder à la machine dont l’adresse IP est 192.168.0.1, ou 192.168.0.0/24 pour accorder l’accès à toute machine dans la plage d’adresses IP 192.168.0.x. En cas de doute, contacter l’administrateur réseau
sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="###ADDRESS####" port protocol="tcp" port="8080" accept'
sudo firewall-cmd --reload
Installer Nginx
Prérequis
Un certificat SSL valide et une clé de certificat doivent avoir été reçus du fournisseur SSL (autorité de certification, CA). Pour utiliser [OCSP], un fichier pour la chaîne de certificats est également nécessaire.
agrafage →
convertir un certificat SSL →.
Copier ces fichiers sur le serveur sur lequel Nginx doit être configuré (par exemple via SSH). Déplacer ces fichiers dans les répertoires appropriés et les sauvegarder si nécessaire.
Déplacer le fichier de certificat à son emplacement par défaut :
mv server.pem /etc/pki/tls/certs
chown root:root /etc/pki/tls/certs/server.pem
chmod 644 /etc/pki/tls/certs/server.pem
Le certificat est public, il est envoyé à toute personne qui se connecte au site web. Il est acceptable de rendre ce fichier lisible par n’importe qui.
Déplacer la clé du certificat à son emplacement par défaut :
mv server.key /etc/pki/tls/private
chown root:root /etc/pki/tls/private/server.key
chmod 600 /etc/pki/tls/private/server.key
Si SELinux est en mode “enforcing” (par défaut), le contexte de sécurité des fichiers peut être erroné après le déplacement. Exécuter les commandes suivantes pour corriger cela. Sinon SELinux empêchera les services d’accéder à ces fichiers pour des raisons de sécurité.
sudo restorecon -v /etc/pki/tls/certs/server.pem
sudo restorecon -v /etc/pki/tls/private/server.key
Pour des raisons de sécurité ces fichiers sont ignorés si leurs permissions sont définies correctement. S’assurer que les permissions ont été définies comme décrit ci-dessus. La clé privée ne doit être lisible que par root. Veiller à ce que ce fichier soit sécurisé. Toute personne ayant accès à cette clé peut signer des données en usurpant l’identité du serveur et décrypter les informations privées qui lui sont destinées.
En cas d’utilisation de Let's Encrypt et de Certbot →, s’assurer que les clés sont stockées dans un endroit sûr.
Installation de Nginx
Installer les paquets nécessaires :
sudo yum -y install epel-release
sudo yum -y install nginx
Créer des paramètres Diffie-Hellman sécurisés
sudo openssl dhparam -out /etc/nginx/dhparams.pem 4096
Cela peut prendre très longtemps, en fonction des performances du serveur. Créer un répertoire de cache pour nginx. Il est utilisé pour mettre en cache les gros fichiers téléchargés.
sudo mkdir /usr/share/nginx/cache
sudo chown nginx:nginx /usr/share/nginx/cache
Télécharger les fichiers de configuration :
wget https://raw.githubusercontent.com/relution-io/relution-setup/master/native/Linux/etc/nginx/conf.d/relution-ssl.conf.template
wget https://raw.githubusercontent.com/relution-io/relution-setup/master/native/Linux/etc/nginx/conf.d/relution-location.include.template
Éditer le fichier relution-ssl.conf.template et l’adapter à l’environnement cible.
Tous les paramètres avec des espaces réservés %VALUE% doivent être configurés.
Par exemple : %EXT_HOSTNAME%. Ces paramètres sont les suivants :
| Paramètre | Description | ||
|---|---|---|---|
| Le nom de l’hôte doit correspondre au nom commun (cn) du certificat SSL. | |||
| %SSL_CERT_PATH% | Chemin d’accès au certificat SSL | %SSL_CERT_KEY_PATH% | Chemin d’accès au certificat SSL |
| %SSL_CERT_KEY_PATH% | Chemin d’accès à la clé du certificat SSL | %SSL_CERT_KEY_PATH% | Chemin d’accès à la clé du certificat SSL |
| %SSL_CERT_CHAIN_PATH% | Chemin d’accès à la chaîne du certificat SSL | %SSL_CERT_CHAIN_PATH% | Chemin d’accès à la chaîne du certificat SSL |
Si le serveur Relution se trouve sur un autre ordinateur, changer l’adresse IP dans les paramètres proxy_pass pour l’adresse IP du serveur Relution. Cette option est présente à la fois dans relution-ssl.conf.template et dans
relution-location.include.template.
- De
proxy_pass http://127.0.0.1:8080; - Vers
proxy_pass http://<relution-ip>:8080;
Pour ne pas utiliser OCSP →, commenter les options suivantes :
# ssl_stapling on ;
# ssl_stapling_verify on ;
# ssl_trusted_certificate %SSL_CERT_CHAIN_PATH% ;
En cas d’installation prévue d’applications Windows natives avec Relution sur des appareils Windows, commenter les lignes suivantes :
# location ~ /api/management/v1/system/files
# proxy_cache cache;
# proxy_cache_key $host$uri; # must NOT include query params!
# proxy_cache_revalidate on;
# proxy_cache_lock on;
# proxy_cache_lock_age 60s;
# proxy_cache_lock_timeout 60s;
# proxy_pass http://127.0.0.1:8080;
Sinon, l’installation des applications échouera.
Déplacer les fichiers dans les répertoires cibles :
sudo mv relution-ssl.conf.template /etc/nginx/conf.d/relution-ssl.conf
sudo mv relution-location.include.template /etc/nginx/conf.d/relution-location.include
/Microsoft-Server-ActiveSync dans relution-location.include doit pointer vers le service SMG et non vers Relution. Voir Secure Mail Gateway →.Si SELinux est utilisé en Enforcing Mode (par défaut), les permissions pour le fichier sont incorrectes après le déplacement. Exécuter la commande suivante pour les corriger. Sinon SELinux empêchera le service d’accéder au fichier pour des raisons de sécurité.
sudo restorecon -v /etc/nginx/conf.d/relution-ssl.conf
sudo restorecon -v /etc/nginx/conf.d/relution-location.include
Vérifier la configuration à l’aide de cette commande :
sudo nginx -t
Un message du type “la syntaxe est correcte” et “le test est réussi” devrait s’afficher. En cas d’erreurs, vérifier que la configuration Nginx ne contient pas de fautes de frappe.
Serveur par défaut
La configuration par défaut de Nginx configure un site pour son site web fictif. Si l’application web de Relution est le seul site hébergé sur ce serveur, ce “serveur par défaut” peut être désactivé pour faire de Relution le serveur par défaut. Si plusieurs sites sont hébergés (“hôtes virtuels”), sauter cette étape.
Ouvrir la configuration globale de Nginx :
sudo vi /etc/nginx/nginx.conf
Commenter la zone server { ... } :
# server {
# listen 80 default_server ;
# listen [: :]:80 default_server ;
[...]
# }
Il y a une autre zone server { ... } pour SSL (c’est-à-dire HTTPS). La commenter également :
# server {
# listen 443 ssl default_server ;
# listen [: :]:443 ssl ;
[...]
# }
Modifier la configuration de Nginx pour Relution :
sudo vi /etc/nginx/conf.d/relution-ssl.conf
Ajouter default_server à la première option de liste de chaque serveur. Cela devrait ressembler à ceci :
serveur {
listen 0.0.0.0:80 default_server ;
listen [: :]:80 ;
[...]
serveur {
listen 0.0.0.0:443 ssl default_server ;
listen [: :]:443 ssl ;
[...]
En cas d’installation prévue d’applications Windows natives avec Relution sur des appareils Windows, commenter les lignes suivantes :
# location ~ /api/management/v1/system/files
# proxy_cache cache;
# proxy_cache_key $host$uri; # must NOT include query params!
# proxy_cache_revalidate on;
# proxy_cache_lock on;
# proxy_cache_lock_age 60s;
# proxy_cache_lock_timeout 60s;
# proxy_pass http://127.0.0.1:8080;
Sinon, l’installation des applications échouera.
Vérifier que la configuration Nginx est valide :
sudo nginx -t
Si un message du type “la syntaxe est correcte” et “le test est réussi” apparaît, c’est bon signe. En cas de messages d’erreur, vérifier la configuration.
Démarrer et activer le service Nginx
Si tout est OK, démarrer et activer le service Nginx :
sudo systemctl start nginx
sudo systemctl enable nginx
En cas de messages d’erreur ou si le service ne démarre pas, consulter ce journal : (/var/log/nginx/error.log).
Pare-feu
Ouvrir les ports 80 et 443 dans le pare-feu pour que HTTP et HTTPS fonctionnent.
sudo firewall-cmd --permanent --zone=public --add-port=80/tcp
sudo firewall-cmd --permanent --zone=public --add-port=443/tcp
sudo firewall-cmd --reload
Configuration SELinux
Il se peut qu’une connexion à https://<votre-nom-d'hôte-fqdn> ne soit pas possible immédiatement. Si c’est le cas, vérifier les journaux d’erreurs de Nginx.
cat /var/log/nginx/relution_error.log | grep "13 : Permission denied"
Des messages d’erreur comme celui-ci peuvent apparaître :
2022/06/27 18:12:41 [crit] 11111#0 : *2 connect() to <relution-ip>:8080 failed (13 : Permission denied) while connecting to upstream, client : <client-ip>, server : <votre-nom-d'hôte-fqdn>, request : "GET / HTTP/1.1", upstream : "http://<relution-ip>:8080/", host : "<nginx-ip>"
Vérifier qu’il s’agit bien d’un problème SELinux :
sudo cat /var/log/audit/audit.log | grep nginx | grep denied
Un ou plusieurs messages denied similaires à celui-ci devraient apparaître :
type=AVC msg=audit(1524845545.644:365) : avc : denied { name_connect } for pid=11111 comm="nginx" dest=8080 scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:object_r:http_cache_port_t:s0 tclass=tcp_socket
Permet à nginx de se connecter à l’autre machine :
sudo setsebool -P httpd_can_network_connect 1
Il devrait maintenant être possible de se connecter à l’instance Relution via HTTPS.