Red Hat et dérivées version SERVEUR

Red Hat 8, Alma Linux 8 : Installer Etherpad pour du travail collaboratif

Cet article a été mis à jour, vous consultez ici une archive de cet article!
Table des matières
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