eLabFTW@INRAE : Documentation technique


Mise en place d’un serveur hébergeant l’application eLabFTW


Auteur:

  • Éric Quinton
  • date: 17 janvier 2025
  • update: 20 janvier 2025

Relecture

  • François Ehrenmann
  • date: 25 février 2025
  • update: 04 avril 2025

Ce document a été créé au moment de la mise en place d’un serveur hébergeant l’application eLabFTW et destiné à servir de démonstrateur.

La configuration décrite ici peut être reproduite pour créer, administrer et maintenir sa propre instance. (instance On premise selon la terminologie du projet eLabFTW@INRAE).

Présentation générale

Le serveur repose et fonctionne sur une machine virtuelle créée par la DSI, et dont la configuration est décrite dans ce document : Configuration de base d’une machine et d’un serveur virtuel. Le serveur tourne sous la distribution Ubuntu en version 24.04.1 LTS. Il est fortement conseillé de mettre en œuvre l’ensemble de la configuration décrite dans ce document !

L’application eLabFTW est déployée dans un container Docker. La base de données est montée dans un service MySQL, cependant le choix est fait dans cette procédure d’installer MySQL directement sur le serveur (pas de “containerisation” sous Docker). Les fichiers associés sont stockés dans l’infrastructure de la DSI, soit avec un montage NFS, soit avec un montage S3 géré directement par l’application.

Gestion des incidents du serveur et demandes

En cas de souci de fonctionnement ou pour toute demande, par exemple pour réaliser un snapshot de votre serveur, vous pouvez ouvrir un ticket ici : https://ariane.inrae.fr/block?id=ariane_sc_cat_item&sys_id=906528a10a0a0bf000a85bc20dfb6541&sys_parm_service=49dcb31237ec4200275c261953990e6e

Configurer l’espace disque

Le partitionnement mis en place dans la procédure Configuration de base d’une machine et d’un serveur virtuel est le suivant, après redimensionnement de /var et de /opt :

df -h
Filesystem                Size  Used Avail Use% Mounted on
tmpfs                     392M  1,3M  390M   1% /run
/dev/mapper/vg1-root      5,4G  3,8G  1,4G  74% /
tmpfs                     2,0G     0  2,0G   0% /dev/shm
tmpfs                     5,0M     0  5,0M   0% /run/lock
/dev/sda1                 462M  180M  254M  42% /boot
/dev/mapper/vg1-opt       5,9G   56K  5,6G   1% /opt
/dev/mapper/vg1-home      920M  120K  857M   1% /home
/dev/mapper/vg1-tmp       920M   68K  857M   1% /tmp
/dev/mapper/vg1-var        24G  1,9G   21G   9% /var
/dev/mapper/vg1-varlog    1,8G  226M  1,5G  14% /var/log
/dev/mapper/vg1-varspool  2,7G  600K  2,6G   1% /var/spool
tmpfs                     392M  4,0K  392M   1% /run/user/1002

Installer ElabFTW

Installer Docker

L’installation est réalisée en suivant les instructions décrites ici : https://docs.docker.com/engine/install/ubuntu/

Note : vous aurez peut-être besoin d’installer l’outil curl (apt install curl)

Note : si machine virtuelle DEBIAN, remplacer ubuntu par debian

# Add Docker's official GPG key:
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# Add the repository to Apt sources:
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Vérifiez l’installation correcte de docker dans un terminal avec la commande :

docker run hello-world

Installer eLabFTW

La documentation d’installation est disponible sur le site officiel : https://doc.elabftw.net/install.html

Récupérer le fichier docker-compose.yml :

Dans un terminal, lancer les commandes suivantes :

mkdir /opt/elabftw
cd /opt/elabftw
curl -so docker-compose.yml "https://get.elabftw.net/?config"

Le fichier doit être adapté pour que le serveur mysql et les fichiers stockés dans l’application soient correctement paramétrés :

cd /opt/elabftw
mv docker-compose.yml docker-compose-origin.yml
cat docker-compose-origin.yml |grep -v "^ *\(--\|#\)"|grep .>docker-compose.yml

Vous devrez supprimer tout ce qui concerne le container mysql (à partir de mysql:) et adapter la configuration de docker-compose.yml ainsi :

name: elabftw
networks:
  elabftw-net:
services:
  web:
    image: elabftw/elabimg:stable
    restart: always
    container_name: elabftw
    security_opt:
      - no-new-privileges:true
    cap_drop:
        - ALL
    cap_add:
        - CHOWN
        - SETGID
        - SETUID
        - FOWNER
        - DAC_OVERRIDE
    environment:
        - DB_HOST=172.18.0.1
        - DB_PORT=3306
        - DB_NAME=elabftw
        - DB_USER=elabftw
        - DB_PASSWORD=MOT DE PASSE FOURNI DANS LE FICHIER ORIGINEL
        - PHP_TIMEZONE=Europe/Paris
        - TZ=Europe/Paris
        - SECRET_KEY=CLE FOURNIE DANS LE FICHIER ORIGINEL
        - SITE_URL=https://SERVERNAME.inrae.fr (mettez ici le lien de votre site, par exemple elab-nom-unite-ou-centre.inrae.fr)
        - SERVER_NAME=SERVERNAME.inrae.fr (mettez ici le lien de votre instance, par exemple elab-nom-unite-ou-centre.inrae.fr)
        - DISABLE_HTTPS=true
        - ENABLE_LETSENCRYPT=false
    ports:
        - '3148:443'
    volumes:
        - /opt/elabdoc:/elabftw/uploads
        - /opt/elabftw:/etc/nginx/certs
    networks:
      - elabftw-net

Les variables DB_PASSWORD et SECRET_KEY sont issues du fichier docker-compose.yml récupéré depuis le site de eLabFTW, et doivent être conservées à leur valeur d’origine.

La variable DB_HOST correspond à l’adresse de votre serveur connue par le réseau docker. Vous pouvez vérifier sa valeur dans un terminal avec la commande suivante :

ip a
(...)
6: br-379e1dd04019: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
    link/ether 02:42:22:9b:87:ed brd ff:ff:ff:ff:ff:ff
    inet 172.18.0.1/16 brd 172.18.255.255 scope global br-379e1dd04019
(...)

Lancer la création du container

Dans un terminal, lancez les commandes suivantes :

cd /opt/elabftw
docker compose up -d
docker container ls

CONTAINER ID   IMAGE                    COMMAND   CREATED          STATUS                             PORTS                                       NAMES
b63241ea8c56   elabftw/elabimg:stable   "/init"   39 seconds ago   Up 38 seconds (health: starting)   0.0.0.0:3148->443/tcp, [::]:3148->443/tcp   elabftw

Créer la base de données

Installez le serveur mysql :

apt-get install mysql-server

Note : si machine virtuelle DEBIAN, suivre la documentation : https://dev.mysql.com/doc/refman/8.4/en/linux-installation-apt-repo.html

Lancez la commande mysql pour vous connecter au serveur mysql, puis saisissez les commandes suivantes (exemple avec compte USERNAME) :

# Creation of an administrator account
create user 'USERNAME'@'%' identified by 'motdepasse';
grant all privileges on *.* to 'USERNAME'@'%' with grant option;
create database elabftw;
create user 'elabftw'@'%' identified by 'motdepasse_issu_de_docker-compose.yml';
grant all on elabftw.* to 'elabftw'@'%';

Les deux premières commandes ne sont pas forcément utiles : elles ne servent que si vous souhaitez administrer la base de données depuis un autre ordinateur, sous réserve que le port mysql soit ouvert par la DSI au niveau du vpn.

Quittez mysql en saisissant exit ou \q.

Éditez le fichier /etc/mysql/mysql.conf.d/mysqld.cnf, et modifiez la ligne en indiquant :

bind-address            = 0.0.0.0

Pour autoriser les connexions depuis les différentes adresses IP, dont celles du container docker, qui contient l’application, relancez le serveur mysql :

systemctl restart mysql

Lancez la commande suivante pour déclencher la création de la base de données à partir du container docker :

docker exec -it elabftw bin/init db:install

Activer le stockage externe des documents

Les documents associés aux expériences décrites dans eLabFTW sont stockés dans une arborescence gérée par l’application. Leur volumétrie peut augmenter rapidement, et il est préférable de les stocker en dehors du serveur, dans un montage dédié issu de l’infrastructure de la DSI.

Deux technologies sont utilisables : soit un montage NFS, soit un accès direct vers un espace cloud s3. Le montage NFS est plus rapide en terme de vitesse d’accès aux fichiers, l’espace S3 est moins coûteux et est plus facile à gérer manuellement (interface web pour le consulter), et se paramètre depuis l’application.

Nous précisons ci-dessous la mise en place pour ces 2 types d’accès aux documents.

Créer un espace NFS

La demande est à réaliser ici : https://ariane.inrae.fr/block?id=ariane_sc_cat_item&sys_id=c51837bd0f377500db98936792050e17

Le montage va être réalisé dans le dossier /opt/elabdoc.

mkdir /opt/elabdoc

Éditez ensuite le fichier /etc/fstab, et rajoutez la ligne (exemple avec espace NFS nab_eabx_elabftw) :

10.131.xx.xx:/nab_eabx_elabftw/sandbox /opt/elabdoc nfs vers=3 0 0

Vous devrez peut-être monter d’abord le partage sans “sandbox”, puis créer le dossier sandbox (mkdir /opt/elabdoc/sandbox), et enfin refaire le montage avec le sous-dossier sandbox. Cette approche évite de visualiser d’autres espaces qui seraient dans le partage nfs.

Créer un espace S3

Faites une demande de création par un ticket Ariane : https://ariane.inrae.fr/block?id=ariane_sc_cat_item&sys_id=f851753ddb8643c0d614db45ce96196e. Une fois votre espace créé, connectez-vous à l’interface d’administration (https://cloud.inrae.fr) puis, une fois positionné dans votre espace S3 :

  • créez un conteneur pour stocker les fichiers
  • cherchez “Accès API”, puis Voir les paramètres du compte. Vous devez récupérer ces informations :
    • URL S3
    • clé d’accès EC2
    • clé secrète EC2
    • notez également le endpoint
    • ainsi que la région, en principe inra-tls ou inra-geo-secure-tls

Modifiez le fichier opt/elabftw/docker-compose.yml, et rajoutez les deux variables suivantes dans la section environment :

  • ELAB_AWS_ACCESS_KEY : la clé d’accès
  • ELAB_AWS_SECRET_KEY : la clé secrète associée

Supprimez le container, puis recréez-le pour activer ces deux variables en lançant les commandes suivantes :

cd /opt/elabftw
docker container stop elabftw
docker container rm elabftw
docker compose up -d --build

L’activation du stockage dans l’espace S3 sera réalisée après l’étape "Mettre en place l’accès web au container" ci-dessous, c’est-à-dire une fois votre application web opérationnelle (cf. infra)

Connectez-vous alors en mode SYSADMIN. Pour cela, rendez-vous à l’URL suivante :

https://SERVERNAME.inrae.fr/register.php

puis positionnez-vous dans l’onglet Téléversements, en indiquant les informations suivantes :

Faites ensuite un test de dépôt de fichier dans une expérience, puis vérifiez, dans l’interface https://cloud.inrae.fr, que le fichier a bien été créé dans votre container.

Mettre en place l’accès web au container

L’application web, intégrée dans le container, va être rendue accessible en activant une redirection par un proxy Apache.

Demander un certificat

La demande de certificat (csr) va être générée dans le dossier /etc/ssl/web/SERVERNAME.inrae.fr :

mkdir -p /etc/ssl/web/SERVERNAME.inrae.fr
cd /etc/ssl/web/SERVERNAME.inrae.fr
openssl req -new -newkey rsa:2048 -nodes -keyout privkey.pem -out elab-sandbox.csr
Country Name (2 letter code) [AU]:FR
State or Province Name (full name) [Some-State]:.
Locality Name (eg, city) []:.
Organization Name (eg, company) [Internet Widgits Pty Ltd]:INRAE
Organizational Unit Name (eg, section) []:.
Common Name (e.g. server FQDN or YOUR name) []:SERVERNAME.inrae.fr
Email Address []:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

Vous pouvez vérifier le contenu de la demande de certificat avec cette commande :

openssl req -noout -text -in elab-sandbox.csr

Recopiez le contenu du fichier csr, puis réalisez la demande de certificat par l’intermédiaire d’un ticket Ariane : https://ariane.inrae.fr/block?id=ariane_sc_cat_item&sys_id=f4fedf7a37d002006da398a543990e8a

Recopiez ensuite le certificat reçu via votre demande ariane dans le dossier /etc/ssl/web/SERVERNAME.inrae.fr, et assurez-vous qu’il s’appelle bien fullchain.pem.

Installer et configurer Apache

Une fois le certificat reçu, lancez les commandes suivantes pour installer le serveur web apache2 :

apt-get install apache2
a2enmod rewrite headers proxy ssl proxy_http

Puis créez le fichier /etc/apache2/sites-available/elab.conf :

<VirtualHost *:80>
  ServerName SERVERNAME.inrae.fr
  ServerPath /SERVERNAME.inrae.fr
  RewriteEngine On
  RewriteRule ^ https://SERVERNAME.inrae.fr%{REQUEST_URI} [R]
</VirtualHost>
<VirtualHost *:443>
 ServerName SERVERNAME.inrae.fr
    ServerPath /SERVERNAME.inrae.fr
    RequestHeader set X-Forwarded-Proto "http"
    ProxyPreserveHost On
    ProxyPass "/" "http://localhost:3148/"
    ProxyPassReverse "/" "http://localhost:3148"
    SSLEngine on
    SSLCertificateFile /etc/ssl/web/SERVERNAME.inrae.fr/fullchain.pem
    SSLCertificateKeyFile /etc/ssl/web/SERVERNAME.inrae.fr/privkey.pem
    SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
    SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384
    SSLProtocol all -SSLv3
    SSLHonorCipherOrder on
</VirtualHost>

Et enfin activez le site elab et redémarrez le serveur web :

a2ensite elab
systemctl restart apache2

Sauvegarder les données

Les données à sauvegarder sont :

  • le dossier /opt/elabftw/docker-compose.yml, qui contient la configuration du container docker et les clés d’identification utilisées par le protocole SASL (cf. infra)
  • la base de données
  • le contenu du dossier /opt/elabdoc, qui contient les fichiers associés aux expériences (uniquement si vous avez réalisé un montage NFS)

S’il est toujours possible de s’appuyer sur les fonctionnalités génériques de sauvegarde de la DSI (machine virtuelle, espace de stockage), il est toutefois conseillé de réaliser des sauvegardes manuelles indépendantes.

Créer espace de stockage S3

Créez un espace de stockage répliqué S3 par l’intermédiaire d’une demande Ariane : https://ariane.inrae.fr/block?id=ariane_sc_cat_item&sys_id=f851753ddb8643c0d614db45ce96196e Cet espace est à créer à Toulouse, avec réplication dans le datacenter d’île de France, pour limiter les risques de pertes d’informations.

Pour accéder à l’espace s3, vous devez installer le paquet suivant s3fs :

apt-get install s3fs

Dans l’interface https://cloud.inrae.fr, une fois positionné dans votre espace S3 :

  • créez un conteneur pour stocker les fichiers de sauvegarde, ici elab-sandbox
  • cherchez “Accès API”, puis Voir les paramètres du compte. Vous devez récupérer ces informations :
    • URL S3
    • clé d’accès EC2
    • clé secrète EC2

Créez sur votre serveur un fichier contenant la clé d’accès :

echo cle_acces:cle_privee > /etc/s3access
chmod 600 /etc/s3access

Ajoutez une ligne dans le fichier /etc/fstab :

cp /etc/fstab /etc/fstab_ori
mkdir /mnt/elabftw_backup
echo elab-sandbox /mnt/elabftw_backup fuse.s3fs _netdev,allow_other,use_path_request_style,url=https://s3r-tls.stockage.inra.fr,passwd_file=/etc/s3access 0 0 >> /etc/fstab
systemctl daemon-reload
mount /mnt/elabftw_backup

elab-sandbox correspond au nom du container créé, et l’url est celle que vous avez récupéré depuis les paramètres de l’espace s3.

Vérifiez que le montage se soit bien déroulé :

mount -l|grep elabftw
s3fs on /mnt/elabftw_backup type fuse.s3fs (rw,relatime,user_id=0,group_id=0,allow_other)

Si le montage n’existe pas, vérifiez les messages d’erreur :

tail /var/log/syslog

Une fois le montage réalisé, ajoutez le fichier isalive.txt, qui sera utilisé pour vérifier l’existence du montage au moment de la sauvegarde :

touch /mnt/elabftw_backup/isalive.txt

Vous devriez retrouver ce fichier dans l’interface https://cloud.inrae.fr, dans les fichiers de votre container (ou bucket).

Mettre en place le script de sauvegarde

Créez un dossier sur votre serveur pour stocker le script de sauvegarde et les logs :

mkdir /opt/backup

Créez le fichier /opt/backup/backup.sh, avec le contenu suivant :

Note : Si le stockage des fichiers uploadés sont en S3, supprimer les variables du type UPLOADFOLDER dans le fichier ci-dessous ainsi que les lignes avec $RSYNC $UPLOADFOLDER

#!/bin/bash
  DUMPPATH=/mnt/elabftw_backup
  MYSQLFILE=$DUMPPATH/elabftw-`date +%Y%m%d%H%M`.sql.gz
  LOG=/opt/backup/elabftw-backup.log
  DOCKERFOLDER=/opt/elabftw
  UPLOADFOLDER=/opt/elabdoc
  DISTANTFOLDER=$DUMPPATH/elabdoc/
  FILENAME=$DUMPPATH/"elabftw-backup-`date +%Y%m%d%H%M`.zip"
  ALIVE="isalive.txt"
  RSYNC="/usr/bin/rsync -rt"
  BACKUPDISTANT=/mnt/elabftw_backup
  MAIL="/usr/bin/mail"
  SUBJECT="Sauvegarde de SERVERNAME.inrae.fr"
  DEST="gedeop-admin-elab@inrae.fr"
  echo *date* >$LOG
  echo "sauvegarde de mysql">>$LOG
  if [ -e $DUMPPATH/$ALIVE ] 
  then
      /usr/bin/mysqldump --all-databases |gzip  > $MYSQLFILE
      $RSYNC $UPLOADFOLDER/ $DISTANTFOLDER/
      $RSYNC $DOCKERFOLDER $DUMPATH/
      echo -n "fin de sauvegarde à " >> $LOG
      date >> $LOG
      echo "purge des anciens fichiers" >> $LOG
      NOW=`date +"%F %T"`
      # time difference [days]
      TDIFF=7
      if find $DUMPPATH/*gz -mtime +$TDIFF -type f -delete &>> $LOG; then
              echo "Zip files with datestamp @$NOW MINUS $TDIFF days removed" >> $LOG
      else
              echo "Files with $TDIFF days old timestamp not present : no data removed" >> $LOG
      fi
      echo "Liste des fichiers de sauvegarde mysql" >>$LOG
      ls -lh $DUMPPATH/|grep gz >>$LOG
  else
  	echo "$BACKUPDISTANT is not mounted! Backup aborted" >> $LOG
  	$MAIL -s "$SUBJECT" $DEST < $LOG
  fi

Puis programmez la sauvegarde :

chmod +x /opt/backup/backup.sh
(crontab -l ;echo "0 20 * * * /opt/backup/backup.sh")|crontab -

La sauvegarde sera déclenchée tous les soirs à 20 heures.

Paramétrer l’identification dans elab

Créer un compte d’administration

Connectez-vous à l’application elab : https://SERVERNAME.inrae.fr/register

Suivez les indications pour créer votre compte d’administration.

Activer l’authentification SAML

Depuis une console SSH, dans le serveur, générez un certificat auto-signé et une clé privée, qui sera nécessaire pour activer l’identification :

cd /opt/elabftw
openssl req -newkey rsa:2048 -nodes -keyout private.key -x509 -days 9999 -out cert.crt
Country Name (2 letter code) [AU]:FR
State or Province Name (full name) [Some-State]:.
Locality Name (eg, city) []:.
Organization Name (eg, company) [Internet Widgits Pty Ltd]:INRAE
Organizational Unit Name (eg, section) []:.
Common Name (e.g. server FQDN or YOUR name) []:SERVERNAME.inrae.fr
Email Address []:

Dans l’interface web de l’application, activez le panneau SYSADMIN (menu en haut à droite), puis positionnez-vous dans l’onglet SAML. Renseignez les informations suivantes :

  • activer l’authentification SAML : oui
  • Mode strict : oui
  • Mode de débogage : non
  • URL de base : https://SERVERNAME.inrae.fr
  • EntityID : https://SERVERNAME.inrae.fr
  • Assertion Consumer Service binding : POST
  • Single Logout Service Binding : Redirect
  • NameIDFormat : conservez la valeur par défaut
  • x509 Certificate in PEM : insérez le contenu du fichier obtenu par cat /opt/elabftw/cert.crt
  • x509 Certificate private key : insérez le contenu du fichier obtenu par cat /opt/elabftw/private.key
  • Rollover x509 Certificate in PEM format : c’est le contenu du fichier cert.crt
  • Dans les paramètres des équipes, n’activez que :
    • Créer une équipe envoyée par l’IDP si elle n’existe pas déjà. Cette valeur vous permettra de créer des équipes à la volée (une par unité). Si vous ne souhaitez pas que des utilisateurs d’autres unités puissent se connecter, n’activez pas cette option
    • Si vous activez la création automatique des équipes, vous pouvez également activer Si l’utilisateur n’existe pas encore, créer l’utilisateur à la volée
  • Dans les paramètres de sécurité, activez :
    • Sign the samlp:AuthnRequest messages sent (authnRequestSigned)
    • Sign the samlp:logoutRequest messages sent (logoutRequestSigned)
    • Sign the samlp:logoutResponse messages sent (logoutresponsesigned)
    • Sign the metadata (signMetadata)
    • Require the samlp:Response to be signed (wantMessagesSigned)
    • Require the saml:Assertion to be signed (wantAssertionsSigned)
    • Validate all received xmls (strict mode must be activated) (wantXMLValidation)
  • Dans Liste des fournisseurs d’identité, cliquez sur le bouton Ajouter un nouvel IDP (ajout manuel) et renseignez les informations suivantes :
-----BEGIN CERTIFICATE-----
MIIC4DCCAcigAwIBAgIECvtvSTANBgkqhkiG9w0BAQsFADAyMTAwLgYDVQQDDCdh
dXRoZW50aWZpY2F0aW9uLnByZXByb2R1Y3Rpb24uaW5yYWUuZnIwHhcNMjEwMjAz
MTE1MzUxWhcNNDEwMTI5MTE1MzUxWjAyMTAwLgYDVQQDDCdhdXRoZW50aWZpY2F0
aW9uLnByZXByb2R1Y3Rpb24uaW5yYWUuZnIwggEiMA0GCSqGSIb3DQEBAQUAA4IB
DwAwggEKAoIBAQDfitVAOztdPRxZ61Hp2Yaph3NX9Fw/xJTv4Z2y8sYgp4JCXcvY
08l2V7JH/ZKToQ8Dqle7QvEYLmLiPIrEIkI0qAed/NP4uSp8Izvkh4XxZ0rjg/S+
3SaxBKtvW1RT9tKnoVr8unQmA091WGUI98fm7qUX7FtCjpZvWgFD0b1XCAFTkEnS
veNayBG9XkCbnj1BbYpbCf9qUD3RMzzmCBS/iWUH7drRy9xLvNC0VjNXn39xDRxz
m33kuYUpeVJWMg2Ph5v5RiUTx5B/xog5L9OTZOzVpuNB9BHpDddPIFVY9zWdfEqB
qKfvkbNS9OKdB3MhMPGTMFcJjKmuy3+Q12StAgMBAAEwDQYJKoZIhvcNAQELBQAD
ggEBAFHowjkn65gLv+awC5K2R5bW+1oIq+oXGOexn4EwMc2yYLhjfQPKvQU7RI4k
qX/MuFTBRZTHD6osiLA+OtK0QFg9XRaNB4QpdcOo0gFVzJB4I2gcfqVWN9ZYvFLS
0gkAnw1puiVn4biCQu2U5jIuyiiV5jkbdDMGd1gg6AZqPa6Vgnt/QELJq74hnp/k
7I6Wtm7zZ+4pIKFpFapUXdn3zPxIDQn2fKwbVRJIPJtrjVR+hgtK/EtgMZRleE1D
284r6pWwIiH1LmzqSmlrtZpkW6SjvxkMYJdNrWPR9NSG6b0rIYVdM102ixyxXlWw
bxWBahakcZ23V5PkMz0CIn+WtSw=
-----END CERTIFICATE-----

Rajoutez ensuite ces attributs :

  • What attribute to look for the email : mail
  • What attribute to look for the firstname : givenName
  • What attribute to look for the lastname : sn
  • What attribute to look for the team name : supannEntiteAffectationPrincipale

Une fois ces informations renseignées, cliquez sur le bouton Afficher les métadonnées.xml, et sauvegardez-les dans un fichier sur votre poste de travail (metadata.xml).

Faites une demande d’identification SAML à partir de Ariane : https://ariane.inrae.fr/block?id=ariane_sc_cat_item&sys_id=5c4c1b7a37d002006da398a543990ed2 Vous devrez remplir le Formulaire de demande de rattachement SSO pour le protocole SAML et fournir le fichier metadata.xml que vous avez généré précédemment.

Une fois que votre IDP aura été validée, faites un test de connexion depuis un navigateur en mode “privé” (pour éviter de conserver une identification préalable), et vérifiez que vous arrivez bien à vous connecter.

Puis :

  • connectez-vous alors avec votre compte “sysadmin”
  • attribuez les droits sysadmin à votre compte INRAE
  • désactivez le formulaire d’identification classique en allant dans l’onglet serveur, et en décochant Activer l’authentification locale.

Mesures de sécurité complémentaires dans l’application

A FAIRE : L’activation de l’identification 2FA ne fonctionne pas avec l’identification SAML, c’est à la DSI d’activer cette fonctionnalité.

Mettre à jour l’application

Avant de réaliser l’opération

Assurez-vous de disposer d’un snapshot récent de la machine, à demander le cas échéant l’assistance (cf. supra).

Réalisez également une sauvegarde des données avant de lancer tout mise à jour :

/opt/backup/backup.sh
cat /opt/backup/elabftw-backup.log

Lancez la procédure de mise à jour

cd /opt/elabftw
docker compose pull
docker container stop elabftw
docker compose up -d

Mettez à jour la base de données :

docker exec -it elabftw bin/console db:update

Mettre à jour le certificat

Générer une nouvelle clé et une nouvelle demande

Documentation de référence : Installation d’un certificat

cd /etc/ssl/web/elab.eabx.inrae.fr
 openssl req -new -newkey rsa:2048 -nodes -keyout  elab2023.key -out elab2023.csr
Generating a RSA private key
..........+++++
....................................................................................+++++
writing new private key to 'elab2023.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:FR
State or Province Name (full name) [Some-State]:.
Locality Name (eg, city) []:.
Organization Name (eg, company) [Internet Widgits Pty Ltd]:INRAE
Organizational Unit Name (eg, section) []:.
Common Name (e.g. server FQDN or YOUR name) []:elab.eabx.inrae.fr
Email Address []:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:

Récupérez le fichier elab2023.csr, et intégrez-le dans le formulaire Ariane de demande de certificat Certificats de sécurité pour les serveurs.

Intégrer le certificat

Recopiez le fichier fourni par Ariane (elab_sandbox_inrae_fr_cert.cer) :

cd /etc/ssl/web/SERVERNAME.inrae.fr
cp /home/USERNAME/elab_sandbox_inrae_fr_cert.cer .
mv fullchain.pem fullchain.2022.pem
mv privkey.pem privkey.2022.pem
mv elab2023.key privkey.pem
mv elab_eabx_inrae_fr_cert.cer fullchain.pem

Vous pouvez vérifier la concordance des fichiers avec l’affichage du modulo de la clé privée et du certificat, le modulo devant être identique pour les deux fichiers :

openssl rsa -noout -modulus -in privkey.pem
openssl x509 -noout -modulus -in fullchain.pem

Redémarrez le serveur web

systemctl reload apache2
systemctl status apache2

Connectez-vous à l’application, et vérifiez la date d’expiration du certificat.