RHEL 8 et dérivées : Installer Etherpad pour du travail collaboratif

Ce tutoriel est vérifié avec RHEL8 et AlmaLinux8

Introduction



Dans cet article, nous allons voir comment mettre en oeuvre Etherpad sur RHEL 8 et dérivées.

Prérequis



On aura besoin des outils de développement suivant :

Code BASH :
dnf install curl gcc make gcc-c++ git


On aura besoin d'une base de données MariaDB :

Code BASH :
dnf install mariadb-server


Et d'une version récente de NodeJS (14 en provenance des modules) :

Code BASH :
dnf module install nodejs:14


Configuration des prérequis



Base de données MariaDB



On va démarrer et activer le service :

Code BASH :
systemctl enable --now mariadb.service


On lance la procédure d'initialisation de MariaDB :

Code BASH :
mysql_secure_installation


Répondez aux questions et définissez un mot de passe à root !

Ensuite, créons un utilisateur et une base de données pour Etherpad :

Code BASH :
mysql -u root -p


Code SQL :
CREATE DATABASE etherpad;
GRANT ALL ON etherpad.* TO 'etheruser'@'localhost' IDENTIFIED BY 'etherpass';
FLUSH privileges;
quit


Création d'un utilisateur Etherpad



On va créer un utilisateur pour le service, dont le dossier personnel est /opt/etherpad :

Code BASH :
useradd -m -d /opt/etherpad -s /bin/bash etherpad


On attribue les bons droits :

Code BASH :
chmod 755 /opt/etherpad



Installer etherpad



Pour installer etherpad, on va se connecter en utilisateur etherpad :

Code BASH :
su - etherpad


On va ensuite cloner le code source :

Code BASH :
git clone git://github.com/ether/etherpad-lite.git ~/etherpad-lite


On va copier le fichier de config :

Code BASH :
cp ~/etherpad-lite/settings.json.template ~/etherpad-lite/settings.json


Et on va l'éditer :

Code BASH :
vi ~/etherpad-lite/settings.json


On vérifie que ça écoute partout :

Code TEXT :
"ip": "0.0.0.0"


On commente la base de données dirty :

Code :
  /*"dbType": "dirty",
  "dbSettings": {
    "filename": "var/dirty.db"
  },*/


Et on va renseigner les paramètres corrects de MariaDB :

Code TEXT :
  "dbType" : "mysql",
  "dbSettings" : {
    "user":     "etheruser",
    "host":     "localhost",
    "port":     3306,
    "password": "etherpadd",
    "database": "etherpad",
    "charset":  "utf8mb4"
  },


On va installer les dépendances en exécutant :

Code BASH :
~/etherpad-lite/bin/installDeps.sh


On ouvre le parefeu, sur le port 9001 :

Code BASH :
firewall-cmd --add-port=9001/tcp --permanent
firewall-cmd --reload


Lancer Etherpad



Puis on lance Etherpad :

Code BASH :
~/etherpad-lite/bin/run.sh


Créer un service pour lancer Etherpad automatiquement



Etherpad se ne se lance pas tout seul.

On va donc créer un service pour le démarrer automatiquement :

Code BASH :
vi /etc/systemd/system/etherpad.service


On va créer un service simple qui lancera avec notre utilisateur l'etherpad :

Code TEXT :
[Unit]
Description=Etherpad
After=network.target
[Service]
Type=simple
User=etherpad
Group=etherpad
ExecStart=/opt/etherpad/etherpad-lite/bin/run.sh
Restart=always
[Install]
WantedBy=multi-user.target


On active et démarre le service :

Code BASH :
systemctl enable --now etherpad.service


On peut accéder au pad avec http://serveur:9001

Diagnostics et logs



Vu qu'etherpad est lancé en tant que service, on pourra facilement avoir des infos via les logs :

Code BASH :
journalctl -f -u etherpad.service


Mises à jour d'Etherpad



Pour mettre à jour Etherpad :

Code BASH :
su - etherpad
cd /opt/etherpad/etherpad-lite
git pull origin


Et on redémarre le service :

Code BASH :
systemctl restart etherpad



Interfacer avec NGINX (Facultatif)



Il est possible, si on le souhaite, d'utiliser NGINX comme proxy et pour gérer la partie HTTPS.

On l'installe :

Code BASH :
dnf install nginx


On se créé un server block (mais on peut tout à fait modifier la config de base si on a que Etherpad sur le serveur) :

Code BASH :
vi /etc/nginx/conf.d/etherpad.conf



Code :
server {
  server_name etherpad.linuxtricks.lan;
  location / {
    proxy_set_header  X-Real-IP  $remote_addr;
    proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header  Host $host;
    proxy_redirect off;
    proxy_read_timeout 300;
    proxy_pass http://localhost:9001/;
    proxy_set_header Upgrade $http_upgrade;
  }
}


Si on utilise SELinux, on permet d'accéder au réseau nginx :

Code BASH :
setsebool -P httpd_can_network_connect 1


On active nginx au boot et on démarre le service :

Code BASH :
systemctl enable --now nginx


On ouvre le parefeu évidemment sur le port http :

Code BASH :
firewall-cmd --add-service=http --permanent
firewall-cmd --reload


On peut accéder maintenant à etherpad via : http://serveur

Pour du HTTPS on modifiera le fichier :

Code BASH :
vi /etc/nginx/conf.d/etherpad.conf


Et on ajoutera :

Code :

server {
  listen 443 ssl;
  server_name etherpad.linuxtricks.lan;
  ssl_certificate "/etc/ssl/etherpad.linuxtricks.lan.crt";
  ssl_certificate_key "/etc/ssl/etherpad.linuxtricks.lan.key";
  ssl_session_cache shared:SSL:1m;
  ssl_session_timeout  10m;
  ssl_ciphers PROFILE=SYSTEM;
  ssl_prefer_server_ciphers on;

  location / {
    proxy_set_header  X-Real-IP  $remote_addr;
    proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header  Host $host;
    proxy_redirect off;
    proxy_read_timeout 300;
    proxy_pass http://localhost:9001/;
    proxy_set_header Upgrade $http_upgrade;
  }
}


Evidemment, indiquez vos certificats.
Note : Générer des certificats Lets Encrypt ( https://www.linuxtricks.fr/wiki/let-s-encrypt-mise-en-place ) ou autosigné ( https://www.linuxtricks.fr/wiki/openssl-creation-de-certificats-et-ca-autosignes )

On ouvre le parefeu évidemment sur le port https :

Code BASH :
firewall-cmd --add-service=https --permanent
firewall-cmd --reload


Et on redémarre nginx :

Code BASH :
systemctl restart nginx