Linux (Alma)

Introduction

Suivez ces instructions pour installer Relution 5 sur AlmaLinux 8 ou 9. 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, assurez-vous que :

  • Les machines peuvent se connecter à Internet.
  • Vous êtes un utilisateur root ou avez les permissions pour les commandes sudo.
  • Vous avez un certificat SSL valide pour votre nom d’hôte externe.

Les certificats auto-signés ne fonctionnent pas, car les appareils mobiles mobiles ne leur font pas confiance. Vous pouvez installer manuellement votre certificat racine sur sur un appareil pour qu’il fasse confiance à votre certificat. Cette procédure n’est pas recommandée.

Les certificats de Let’s Encrypt → sont testés et fonctionnent.

Notez que les appareils plus anciens peuvent ne pas faire confiance à ces certificats, car Let’s Encrypt n’a été mis en place que récemment en tant qu’autorité de certification (CA).

Préparation

Assurez-vous que votre système est à jour et que wget est installé. Ces instructions utilisent wget pour télécharger des scripts depuis notre dépôt dépôt GitHub. Si vous êtes familier avec curl, vous pouvez remplacer wget par curl.

sudo yum -y update
sudo yum -y install wget

Au cours de cette installation, certains fichiers doivent être édités manuellement. Si vous êtes familier avec vim, vous pouvez en faire l’éditeur par l’éditeur par défaut avec les commandes suivantes. Si vous n’êtes pas familier avec vim veuillez sauter 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, vous devez d’abord activer le dépôt epel (Extra Packages Enterprise Linux). Puisqu’il s’agit d’un dépôt tiers non supporté, vous devrez l’installer manuellement. Si vous ne souhaitez pas installer ces paquets sur votre serveur vous pouvez sauter cette étape et générer des mots de passe sécurisés sur une autre machine.

sudo yum -y install epel-release
sudo yum -y install pwgen

Installer MariaDB

Veuillez utiliser la version LTS de MariaDB. Vérifiez quelle est la dernière version stable MariaDB →

La version 10.11 est une version LTS qui peut également être utilisée.

Vérifiez également quelle version peut être installée directement :

sudo dnf module list mariadb

Vérification de la version

Il s’agit d’une ancienne version. Pour cette raison, elle ne doit pas être utilisée.

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écutez la commande suivante :

sudo vi /etc/yum.repos.d/mariadb.repo

Insérez ensuite cette section et sauvegardez le fichier.

[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.11/rhel8-amd64
module_hotfixes=1
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

Comme vous pouvez le voir sur 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é. Suivez les instructions à l’écran.

sudo dnf install mariadb-server mariadb

Vérification de la version

Configuration de MariaDB pour Relution

Téléchargez le modèle relution.cnf depuis le dépôt GitHub et sauvegardez-le 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écutez 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émarrez MariaDB et assurez-vous que le service est démarré 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

Vous devriez maintenant pouvoir vous connecter à cette instance de MariaDB. Notez que 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

Vous devriez voir une sortie similaire à la suivante :

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)]>

Entrez cette commande pour vérifier si la collation du serveur et de la base de données est réglée sur utf8mb4. serveur et de la base de données sont configurés comme souhaité à utf8mb4 :

SHOW VARIABLES LIKE '%collation%' ;

Assurez-vous que collation_database et collation_server ont été configurés à utf8mb4_general_ci.

Pressez Ctrl+D pour vous déconnecter de la base de données et revenir à l’invite de commande.

Créer la base de données de Relution

Ensuite, nous créons 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échargez le script depuis GitHub.

wget https://raw.githubusercontent.com/relution-io/relution-setup/master/native/Linux/scripts/create_database.sh --directory-prefix=/opt

Assurez-vous que le fichier est exécutable par root :

chmod 700 /opt/create_database.sh

(Optionnel) Utilisez pwgen pour générer un mot de passe sécurisé :

pwgen -snc 48 1

Exécutez 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 vous avez besoin d’un accès administratif à la base de données à des fins de maintenance, nous vous recommandons de créer un utilisateur de base de données distinct à cet effet.

Veillez à conserver le mot de passe sans les guillemets dans un endroit sûr. Vous devrez utiliser ce mot de passe ultérieurement pour accorder à Relution l’accès à la base de données.

Assurez-vous que vous pouvez vous connecter à la base de données en tant qu’utilisateur :

mysql -u relution -p relution

Entrez le mot de passe quand on vous le demande. Vous devez utiliser Ctrl+D dans le prompt MariaDB comme décrit ci-dessus pour vous déconnecter à nouveau.

Configuration du pare-feu

Si vous installez Relution sur une autre machine, vous devez configurer le port 3306 sur cette machine pour que Relution puisse communiquer avec MariaDB. Si Relution est installé sur la même machine, vous pouvez sauter ces étapes.

Remplacez ADDRESS par l’adresse IP et le masque de réseau de la machine ou du réseau auquel vous voulez donner accès à cette instance de MariaDB. Exemples : Utilisez 192.168.0.1/32 pour accorder l’accès à la machine avec l’adresse IP 192.168.0.1. Utilisez 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, demandez à votre 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

Installer la solution

JAVA

Installer les paquets suivants. Y compris Java.

Actuellement, nous recommandons l’utilisation de OpenJDK 21 (JRE). Il s’agit d’une version LTS. Veuillez également lire notre journal des modifications pour toujours avoir les dernières informations. Changelog →

sudo yum -y install java-21-openjdk unzip wget

Configurer la maison Java

sudo echo "export JAVA_HOME=/usr" >> /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échargez et décompressez le paquet Relution :

wget http://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échargez le fichier de configuration de Relution :

wget https://raw.githubusercontent.com/relution-io/relution-setup/master/native/Linux/opt/relution/application.yml.template

Editez le fichier application.yml.template et adaptez-le à votre environnement. Tous les paramètres avec des caractères de remplacement tels que %VALUE%, par exemple %MYSQL_PASSWORD% doivent être adaptés. les paramètres suivants doivent être adaptés :

PlaceholderDescription
%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. **Le mot de passe initial de l’administrateur système doit être modifié après la première connexion, puis cette ligne doit être supprimée.
%SYSTEM_ADMIN_EMAIL%L’adresse e-mail de l’administrateur système.

NOTE : Pensez à utiliser pwgen pour générer le mot de passe initial de votre compte administratif. Nous vous recommandons de changer le mot de passe après vous être connecté pour la première fois.

Déplacez le fichier dans le répertoire d’installation du serveur Relution :

mv application.yml.template /opt/relution/application.yml

Assurez-vous que seul root peut éditer ce fichier et autorisez 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émarrez le service Relution au premier plan.

cd /opt/relution
sudo -u relution JAVA_HOME=/usr bin/relution-foreground.sh

Attendez que le service Relution ait démarré. Dès que la sortie du terminal a cessé de bouger, vous devriez pouvoir vous connecter au portail avec un navigateur. Pour vous connecter à partir d’un ordinateur distant, assurez-vous que le port 8080 est ouvert dans le pare-feu de l’ordinateur. Pour des raisons de sécurité, vous devez fermer ce port dès que Relution et Nginx sont configurés. Notez qu’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

Comment autoriser temporairement les connexions via le port 8080 jusqu’au prochain redémarrage du serveur :

sudo firewall-cmd --zone=public --add-port=8080/tcp

Si tout fonctionne, vous devriez pouvoir voir le portail de Relution et vous connecter avec le compte administratif défini dans le fichier application.yml. Pour des raisons de sécurité, vous devez changer le mot de passe de l’administrateur après vous être connecté. Envisagez de supprimer l’organisation d’origine et la configuration de l’administrateur dans application.yml.

Si vous obtenez des erreurs, vérifiez que vous avez suivi toutes les étapes ci-dessus. Utilisez Ctrl+C" pour arrêter le service et attendez que le service s’arrête. Si le service ne s’arrête pas, utilisez à 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éez un fichier de service systemd pour Relution. Vous pouvez télécharger le fichier 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éplacez le fichier dans le répertoire systemd.

sudo mv relution.service.template /etc/systemd/system/relution.service

Rechargez 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écutez 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

Assurez-vous 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émarrez Relution et assurez-vous que le service est démarré automatiquement après un redémarrage du système.

sudo systemctl start relution
sudo systemctl enable relution

Pour surveiller le démarrage du service, vous pouvez suivre son fichier journal. (appuyez sur CTRL+C pour quitter).

tail -f /opt/relution/log/relution.log

Attendez que le service Relution ait démarré. Vous devriez maintenant être en mesure d’ouvrir le portail Relution 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, vous pouvez sauter cette étape et poursuivre la configuration du pare-feu ci-dessous.

sudo firewall-cmd --zone=public --remove-port=8080/tcp

Configuration du pare-feu

Si vous installez Nginx sur un autre ordinateur, vous devez laisser le port 8080 ouvert en permanence sur cette machine, afin que Nginx puisse communiquer avec Relution. Si Nginx doit être installé sur la même machine, vous pouvez sauter ces étapes.

Remplacez ADDRESS par l’adresse IP et le masque de réseau de l’ordinateur ou du réseau que vous voulez rendre accessible à cette instance de Relution. Exemples : Utilisez 192.168.0.1/32, pour accéder à la machine dont l’adresse IP est 192.168.0.1 Utilisez 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, demandez à votre 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

Nginx (“engine x”) est utilisé comme proxy inverse pour permettre l’accès à Relution et fournir simultanément un cryptage SSL/TLS. Sans Nginx ou un proxy similaire, l’accès à Relution n’est possible que localement via localhost.

Prérequis

Vous avez reçu un certificat SSL valide et une clé de certificat de votre fournisseur SSL (autorité de certification, CA). Si vous souhaitez utiliser [OCSP], vous devez également disposer d’un fichier pour la chaîne de certificats.
agrafage →

convertir un certificat SSL →.

Copiez ces fichiers sur le serveur sur lequel vous allez configurer Nginx (par exemple via SSH). Déplacez ces fichiers dans les répertoires appropriés et sauvegardez-les si nécessaire.

Déplacez 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 à votre site web. Il est acceptable de rendre ce fichier lisible par n’importe qui.

Déplacez 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écutez 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. Assurez-vous que vous avez défini les permissions comme décrit ci-dessus. La clé privée ne doit être lisible que par root. Veillez à ce que ce fichier soit sécurisé. Toute personne ayant accès à cette clé peut signer des données en votre nom et décrypter des informations privées qui vous sont envoyées.

Si vous utilisez Let's Encrypt et Certbot →, vous devez vous assurer que les clés sont stockées dans un endroit sûr.

Installation de Nginx

Installez 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éez 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échargez 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

Editez le fichier relution-ssl.conf.template et adaptez-le à votre environnement. 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ètreDescription
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 à la clé du certificat SSL
%SSL_CERT_CHAIN_PATH%Chemin d’accès à la chaîne du certificat SSL

Si votre serveur Relution se trouve sur un autre ordinateur, changez l’adresse IP dans les paramètres proxy_pass pour l’adresse IP du serveur Relution. Notez que 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;

Si vous ne voulez pas utiliser OCSP, commentez les options suivantes :

# ssl_stapling on ;
# ssl_stapling_verify on ;
# ssl_trusted_certificate %SSL_CERT_CHAIN_PATH% ;

Si vous prévoyez d’installer des applications Windows natives avec Relution sur des appareils Windows, commentez les lignes suivantes :

img

Sinon, l’installation des applications échouera.

Déplacez 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

Si SELinux est utilisé en Enforcing Mode (par défaut), les permissions pour le fichier sont incorrectes après le déplacement. Exécutez 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érifiez la configuration à l’aide de cette commande :

sudo nginx -t

Vous devriez obtenir un message du type “la syntaxe est correcte” et “le test est réussi”. Si vous obtenez des erreurs, vérifiez que votre 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, vous pouvez désactiver ce “serveur par défaut” et faire de Relution le serveur par défaut. Si vous hébergez plusieurs sites (“hôtes virtuels”), sautez cette étape.

Ouvrez la configuration globale de Nginx :

sudo vi /etc/nginx/nginx.conf

Commentez 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). Commentez-la également :

# server {
# listen 443 ssl default_server ;
# listen [: :]:443 ssl ;
        [...]
# }

Modifiez la configuration de Nginx pour Relution :

sudo vi /etc/nginx/conf.d/relution-ssl.conf

Ajoutez 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 ;
    [...]

Si vous prévoyez d’installer des applications Windows natives avec Relution sur des appareils Windows, commentez les lignes suivantes :

img

Sinon, l’installation des applications échouera.

Vérifiez que votre configuration Nginx est valide :

sudo nginx -t

Si vous obtenez un message du type “la syntaxe est correcte” et “le test est réussi”, c’est le cas…. Si vous obtenez des messages d’erreur, vérifiez la configuration.

Démarrer et activer le service Nginx

Si tout est OK, démarrez et activez le service Nginx :

sudo systemctl start nginx
sudo systemctl enable nginx

Si vous obtenez des messages d’erreur ou si le service ne démarre pas, consultez ce journal : (/var/log/nginx/error.log).

Pare-feu

Ouvrez 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 que vous ne puissiez pas vous connecter à https://<votre-nom-d'hôte-fqdn> immédiatement. Si c’est le cas, vérifiez les journaux d’erreurs de Nginx.

cat /var/log/nginx/relution_error.log | grep "13 : Permission denied"

Vous pouvez voir des messages d’erreur comme celui-ci :

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érifiez qu’il s’agit bien d’un problème SELinux :

sudo cat /var/log/audit/audit.log | grep nginx | grep denied

Vous devriez voir un ou plusieurs messages denied similaires à celui-ci :

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

Vous devriez maintenant pouvoir vous connecter à votre instance Relution via HTTPS.