Installer Etherpad-lite sur Cloud

Etherpad est un éditeur de texte collaboratif en temps réel, permettant à plusieurs personnes d’éditer un même document en même temps.

Nous allons voir ici comment l’installer et le rendre disponible rapidement.

Note

Cette installation a été réalisée avec les outils suivants :
Debian 10.3 Node.js 13.x Etherpad 1.8.0 Nginx 1.14.2

Selon les versions utilisées, les différentes étapes peuvent varier

Étape 1 : Installation des dépendances et préparation du serveur

Nous supposons ici que vous avez déjà créé votre serveur (https://docs.gandi.net/fr/cloud/gestion_serveur/creer.html), et que celui-ci a pour adresse IP 1.2.3.4 .

Connectez-vous à votre serveur : $ ssh admin@1.2.3.4

Et mettez d’abord à jour les paquets existants :

# apt update
# apt upgrade

Installez ensuite screen, git, mariadb et nginx, qui nous seront nécessaires au bon fonctionnement d’etherpad :

# apt install git nginx mariadb-server

Enfin, installez Node.js et npm : https://github.com/nodesource/distributions/blob/master/README.md#installation-instructions

# curl -sL https://deb.nodesource.com/setup_13.x | bash -
# apt install -y nodejs

Il est également recommandé de créer un utilisateur dédié à l’exécution d’Etherpad-lite :

# useradd -mU etherpad

Le serveur est maintenant configuré, passons à la création de la base de données.

Étape 2 : Préparation de la base de données

Etherpad-lite peut fonctionner sans base de données dans sa configuration par défaut. Cela reste cependant destiné à des tests ou à un usage ponctuel. Il est alors préférable d’utiliser une base de données telle que MySQL.

Créez alors la base de données qui sera utilisée par Etherpad-lite. Nous la nommons ici db_etherpad :

# mysql

MariaDB [(none)]> CREATE DATABASE db_etherpad;
Query OK, 1 row affected (0.001 sec)

Créez ensuite l’utilisateur qui se connectera à la base de données et donnez-lui tous les droits sur la DB :

MariaDB [(none)]> GRANT ALL privileges ON db_etherpad.* TO 'etherpad'@'localhost' IDENTIFIED BY 'MotDePasse';
Query OK, 0 rows affected (0.001 sec)

MariaDB [(none)]> FLUSH privileges;
Query OK, 0 rows affected (0.001 sec)

Quittez MySQL (MariaDB) :

MariaDB [(none)]> \q
Bye

La base de données est prête, il ne reste qu’à installer Etherpad-lite, et le rendre accessible à l’adresse de votre choix.

Étape 3 : Installation et configuration d’Etherpad-lite dans le dossier de l’utilisateur etherpad

Passez à l’utilisateur etherpad :

# su - etherpad

Et rendez-vous dans le dossier /home/etherpad

$ cd

Récupérez le code d’Etherpad-lite à l’aide de git :

$ git clone https://github.com/ether/etherpad-lite.git

Vous devez ensuite exécuter le script run.sh qui installe les dépendances requises automatiquement. Il faut donc l’exécuter en tant que root pour cette première exécution :

$ cd etherpad-lite
$ su -c bin/run.sh

On quitte à l’aide de Ctrl + C

Changez ensuite l’environnement de Node.js pour passer en production :

$ NODE_ENV=production
$ export NODE_ENV

Cette modification peut également être exécuté en une seule commande :

$ export NODE_ENV=production

Lors de l’exécution du script run.sh, certains fichiers ont été créés et appartiennent à l’utilisateur root. Ces fichiers sont nécessaires au bon fonctionnement d’Etherpad, que nous allons exécuter avec l’utilisateur etherpad. Pour cette raison, il est nécessaire de redéfinir la propriété de l’ensemble des fichiers pour que notre utilisateur en soit le propriétaire.

Retour à l’utilisateur root :

$ exit

Et modification de la propriété :

# chown -R etherpad:etherpad /home/etherpad/etherpad-lite

Vous allez maintenant pouvoir éditer le fichier de configuration settings.json.

Retour à l’utilisateur etherpad :

# su - etherpad

Utilisez votre éditeur préféré, donc vim :

$ vim etherpad-lite/settings.json

Pour définir la base de données créée plus tôt, remplacez les lignes suivantes :

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

Par :

"dbType" : "mysql",
"dbSettings" : {
  "user":     "etherpad",
  "host":     "localhost",
  "port":     3306,
  "password": "MotDePasse",
  "database": "db_etherpad",
  "charset":  "utf8mb4"
},

Toujours dans ce même fichier, profitons-en pour changer les identifiants administrateurs, qui vous seront utiles pour vous connecter à l’administration d’Etherpad-lite :

"users": {
  "Administrateur": {
      "password": "SuperMotDePasse",
      "is_admin": true
      },
  },

Créez un nouveau fichier etherpad-lite.service dans /etc/systemd/system/ avec comme contenu :

[Unité]
Description=etherpad (édition collaborative de documents en temps réel)
After=syslog.target network.target

Service
Type=simple
User=etherpad
Groupe=etherpad
Environnement=NODE_ENV=production
ExecStart=/home/etherpad/etherpad-lite/bin/run.sh

[Installer]
WantedBy=multi-user.target

Exécutez systemctl daemon-reload puis systemctl enable etherpad-lite pour activer le service au démarrage enfin systemctl start etherpad-lite pour démarrer le service.

Si tout est en ordre, etherpad-lite va démarrer correctement.

Votre instance etherpad est maintenant en cours d’exécution et est accessible à l’adresse http://127.0.0.1:9001

Étape 4 : Configuration de Nginx pour assigner l’adresse de votre choix à Etherpad

Nous supposons ici que vous disposez d’un certificat SSL (https://docs.gandi.net/fr/ssl/index.html), et configurons nginx pour qu’etherpad soit accessible depuis l’adresse de votre domaine, conformément aux recommandations de la documentation :
https://github.com/ether/etherpad-lite/wiki/How-to-put-Etherpad-Lite-behind-a-reverse-Proxy#nginx

En tant que root :

# vim /etc/nginx/sites-available/pad.votredomaine.conf

Contenu :

map $http_upgrade $connection_upgrade {
default upgrade;
''      close;
}
::
server {
listen 80; server_name pad.votredomaine.com; rewrite ^(.*) https://$server_name$1 permanent; }
server {

listen 443 ssl; server_name pad.votredomaine.com;

access_log /var/log/nginx/eplite.access.log; error_log /var/log/nginx/eplite.error.log;

ssl_certificate /chemin/vers/votre/certificat.crt; ssl_certificate_key /chemin/vers/votre/clef.key;

location / {
proxy_pass http://localhost:9001/; proxy_set_header Host $host; proxy_pass_header Server; # be careful, this line doesn’t override any proxy_buffering on set in a conf.d/file.conf proxy_buffering off; proxy_set_header X-Real-IP $remote_addr; # http://wiki.nginx.org/HttpProxyModule proxy_set_header X-Forwarded-For $remote_addr; # EP logs to show the actual remote IP proxy_set_header X-Forwarded-Proto $scheme; # for EP to set secure cookie flag when https is used proxy_set_header Host $host; # pass the host header proxy_http_version 1.1; # recommended with keepalive connections # WebSocket proxying - from http://nginx.org/en/docs/http/websocket.html proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade;

}

Il ne vous reste plus qu’à activer le site :

# ln -s /etc/nginx/sites-available/pad.domain.conf /etc/nginx/sites-enabled/pad.domain.conf

Et à redémarrer Nginx :

# systemctl restart nginx

Si tout s’est bien passé, votre installation d’Etherpad est disponible à l’adresse https://pad.votredomaine.com, et vous pouvez accéder à l’interface d’administration à partir de https://pad.votredomaine.com/admin, félicitations !

Pour aller plus loin :
Exécution d’Etherpad-lite en tant que service : https://github.com/ether/etherpad-lite/wiki/How-to-deploy-Etherpad-Lite-as-a-service Documentation complète d’Etherpad-lite : https://github.com/ether/etherpad-lite/wiki