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 commandessudo
. - 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
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
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 :
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. **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è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 à 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 :
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 :
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.