Documentation technique : Debian
Documentation basée sur la distribution Debian

> > > Installer Etherpad Lite comme un service

Installer Etherpad Lite comme un service

Etherpad Lite est un éditeur de texte collaboratif en temps réel permettant de partager un texte entre plusieurs auteurs et d’y contribuer en même temps. Ce tutoriel explique une manière de l’installer et de l’utiliser comme un service sur un serveur.

Préparation nécessaire avant l’installation proprement dite

Dans un premier temps, nous allons créer un utilisateur système "etherpad" qui sera utilisé pour lancer le service :

  1. sudo adduser etherpad

Cet utilisateur dispose par défaut d’un répertoire personnel home/etherpad.

On installe ensuite les dépendances disponibles dans les dépots APT :

  1. sudo apt-get install gzip git-core curl python libssl-dev pkg-config build-essential

Installation de node.js

node.js est le framework javascript avec lequel est programmé Etherpad-lite.

Pour des raisons de simplicité d’installation, nous allons utiliser les dépôts de Nodesource.

On lance ces deux commandes :

  1. curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
  2. sudo apt-get install -y nodejs

Télécharger

Cela ajoutera le bon dépot dans nos sources pour APT et installera NodeJS.

Installation d’Etherpad-lite à proprement dit

On utilise le nouvel utilisateur etherpad que l’on vient de créer avec la commande suivante :

  1. su etherpad

Il est temps maintenant d’installer Etherpad-lite que l’on récupère tout d’abord via Git :

  1. cd ~
  2. git clone 'git://github.com/ether/etherpad-lite.git'

Télécharger

On se déplace ensuite dans le répertoire récupéré et on installe les dépendances node nécessaires :

  1. cd etherpad-lite
  2. ./bin/installDeps.sh

Télécharger

Ceci fait, on peut alors lancer Etherpad-Lite avec la commande suivante :

  1. ./bin/run.sh

Pour vérifier son fonctionnement, il faut se rendre à l’adresse : http://domaine.tld:9001

Si cela fonctionne, arrêtez le logiciel avec la commande clavier ctrl +c

Utiliser Etherpad comme un service

Cette étape permet d’installer Etherpad-lite comme un service afin qu’il soit démarré et éteint avec la machine sur laquelle il est installé.

On va créer tout d’abord un répertoire de logs dans /var/log et lui donner les bons droits afin que l’utilisateur idoine puisse y écrire :

  1. sudo mkdir -p /var/log/etherpad/
  2. sudo chown -Rvf etherpad:etherpad /var/log/etherpad

Télécharger

On va ensuite créer le fichier /etc/init.d/etherpad-lite :

  1. sudo nano /etc/init.d/etherpad-lite

Et on y colle le contenu suivant :

  1. #!/bin/sh
  2.  
  3. ### BEGIN INIT INFO
  4. # Provides:          etherpad-lite
  5. # Required-Start:    $local_fs $remote_fs $network $syslog
  6. # Required-Stop:     $local_fs $remote_fs $network $syslog
  7. # Default-Start:     2 3 4 5
  8. # Default-Stop:      0 1 6
  9. # Short-Description: starts etherpad lite
  10. # Description:       starts etherpad lite using start-stop-daemon
  11. ### END INIT INFO
  12.  
  13. PATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/opt/node/bin"
  14. LOGFILE="/var/log/etherpad/etherpad-lite.log"
  15. EPLITE_DIR="/home/etherpad/etherpad-lite"
  16. EPLITE_BIN="bin/run.sh"
  17. USER="etherpad"
  18. GROUP="etherpad"
  19. DESC="Etherpad Lite"
  20. NAME="etherpad-lite"
  21.  
  22. set -e
  23.  
  24. . /lib/lsb/init-functions
  25.  
  26. start() {
  27.   echo "Starting $DESC... "
  28.  
  29.     start-stop-daemon --start --chuid "$USER:$GROUP" --background --make-pidfile --pidfile /var/run/$NAME.pid --exec $EPLITE_DIR/$EPLITE_BIN -- $LOGFILE || true
  30.   echo "done"
  31. }
  32.  
  33. #We need this function to ensure the whole process tree will be killed
  34. killtree() {
  35.     local _pid=$1
  36.     local _sig=${2-TERM}
  37.     for _child in $(ps -o pid --no-headers --ppid ${_pid}); do
  38.         killtree ${_child} ${_sig}
  39.     done
  40.     kill -${_sig} ${_pid}
  41. }
  42.  
  43. stop() {
  44.   echo "Stopping $DESC... "
  45.    while test -d /proc/$(cat /var/run/$NAME.pid); do
  46.     killtree $(cat /var/run/$NAME.pid) 15
  47.     sleep 0.5
  48.   done
  49.   rm /var/run/$NAME.pid
  50.   echo "done"
  51. }
  52.  
  53. status() {
  54.   status_of_proc -p /var/run/$NAME.pid "" "etherpad-lite" && exit 0 || exit $?
  55. }
  56.  
  57. case "$1" in
  58.   start)
  59.       start
  60.       ;;
  61.   stop)
  62.     stop
  63.       ;;
  64.   restart)
  65.       stop
  66.       start
  67.       ;;
  68.   status)
  69.       status
  70.       ;;
  71.   *)
  72.       echo "Usage: $NAME {start|stop|restart|status}" >&2
  73.       exit 1
  74.       ;;
  75. esac
  76.  
  77. exit 0

Télécharger

On le rend ensuite exécutable et on l’active dans les bon runlevels :

  1. sudo chmod +x /etc/init.d/etherpad-lite
  2. sudo update-rc.d etherpad-lite defaults

Télécharger

On peut ensuite lancer le service avec la commande :

  1. sudo /etc/init.d/etherpad-lite start

Et vérifier son fonctionnement à la même adresse qu’auparavant : http://domaine.tld:9001

Mise à jour d’Etherpad

Dans un premier temps mettez à jour node.js si possible via les commandes :

  1. apt-get update && apt-get upgrade nodejs

Le plus simple ensuite est de repartir d’une installation propre.

On coupe d’abord le service, si installé :

  1. sudo /etc/init.d/etherpad-lite stop

On copie le contenu de l’installation actuelle dans un répertoire temporaire :

  1. cd ~/
  2. cp -Rvf etherpad-lite etherpad-lite_tmp

Télécharger

On récupère le code et on installe les dépendances :

  1. git clone git://github.com/ether/etherpad-lite.git
  2. cd etherpad-lite
  3. bin/installDeps.sh

Télécharger

On récupère notre ancienne configuration et base de donnée si vous utilisiez la base "dirty" par défaut :

  1. cp ../etherpad-lite_tmp/var/dirty.db var/
  2. cp ../etherpad-lite_tmp/settings.json ./

Télécharger

On peut alors relancer le service :

  1. sudo /etc/init.d/etherpad-lite start

Suivant la version depuis laquelle vous mettez à jour, il se peut que de nouvelles options de configuration soient possible :

  • users : permettant de définir une liste d’utilisateurs, notamment les administrateurs ayant accès à l’administration (http://domaine.tld:9001/admin) ;
  • title : titre de la page ;
  • favicon : favicon de la page ;
  • ssl : permettant de définir une clé et un certificat ssl nativement ;
  • requireAuthentication : demande une identification pour chaque utilisateur (voir users) ;
  • requireAuthorization : demande une autorisation pour créer un pad par exemple à un module ou un administrateur ;
  • trustProxy : si vous utilisez un proxy ;
  • logconfig : permettant de configurer finement les logs ;
  • Auteur :
  • Publié le :
  • Mis à jour : 21/10/17

4 commentaires


Qui êtes-vous ?
[Se connecter]
Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.