Installer un serveur Etherpad-Lite interne sous Debian

De Wiki Dane (ex wikitice)
Aller à : navigation, rechercher

Etherpad, c'est quoi ?

Un « pad » est un éditeur de texte collaboratif en ligne. Les contributions de chaque utilisateur sont signalées par un code couleur, apparaissent à l’écran en temps réel et sont enregistrées au fur et à mesure qu’elles sont tapées.

Plus d'info :

Pourquoi un serveur Etherpad interne à l'établissement ?

  • Parce que la connexion Internet d'un établissement peut être parfois défaillante, et la connexion avec http://etherpad.crdp.ac-versailles.fr peut être instable si la bande passante n'est pas suffisante, et le nombre d'utilisateurs simultanés élevé.
  • Parce que l'accès à Internet des postes élève peut être restreint ou coupée volontairement en fonction des choix de l'établissement, il reste ainsi possible de faire travailler les élèves de manière collaborative, mais uniquement depuis l'intérieur de l'établissement.
  • Parce qu'on peut souhaiter une participation des élèves en classe uniquement, et pas depuis l'extérieur de l'établissement.
  • Parce qu'on a ainsi totalement la main sur les plugins et personnalisations d'Etherpad : désactivation du chat, suppression de la possibilité d'enlever les couleurs des auteurs...
  • Parce qu'il doit bien être possible d'associer l'authentification sur Etherpad avec le LDAP d'un Se3 [en chantier] ;-)

Prérequis

  • Un serveur sous Debian Jessie (8).

Pour l'installation d'un serveur Debian, il y a une doc ici : Installer_un_serveur_Debian

Lors de l'installation, on choisira d'installer uniquement un serveur SSH pour permettre l'accès distant, et les utilitaires basiques du système. On définira également une IP fixe dans le réseau pédagogique.

Attention : sous Jessie, pour activer l'accès distant via ssh avec le compte root et son mot de passe, il est nécessaire de modifier le fichier /etc/ssh/sshd_config en y modifiant la variable : PermitRootLogin yes puis de relancer le service : service sshd restart

Derrière le proxy Amon

Il faut spécifier le proxy manuellement en de nombreux endroits [1] :

  • Créer le fichier /etc/apt/apt.conf.d/proxy contenant:
Acquire::http::Proxy "http://IP_AMON:3128";;
  • à la fin de /etc/wgetrc mettre:
http_proxy = http://IP_AMON:3128/
https_proxy = http://IP_AMON:3128/
use_proxy = on
  • Dans /etc/environment, ajouter:
HTTP_PROXY="http://IP_AMON:3128/";
HTTPS_PROXY="http://IP_AMON:3128/";

Installer les paquets nécessaires[2]

apt-get install gzip git curl python libssl-dev pkg-config build-essential

Installer Node.js [3]

On préférera la version LTS 4.x pour plus de stabilité (au 17 mai 2016)[4].

curl -sL https://deb.nodesource.com/setup_4.x | bash -

apt-get install -y nodejs

On pourra vérifier les versions installées avec les commandes :

node -v -> v4.4.4 au 17 mai 2016

nodejs -v -> v4.4.4 au 17 mai 2016

npm -v -> 2.15.1 au 17 mai 2016

Note : une fois Etherpad installé (ce n'est pas encore le cas si vous suivez ce tuto dans l'ordre), la commande pour connaître la version installée sur le serveur est : npm ls ep_etherpad-lite -> v1.6.0 au 17 mai 2016

Créer un utilisateur "etherpad"

On crée un utilisateur dédié et son groupe associé pour isoler l'application.

useradd -mU etherpad

Récupérer la dernière version d'Etherpad-Lite

cd /home/etherpad
su -c 'git clone git://github.com/ether/etherpad-lite.git' etherpad

Par la suite, pour mettre à jour l'application, on lancera la commande suivante :

cd /home/etherpad/etherpad-lite/
su -c 'git pull origin' etherpad

Lancer Etherpad-Lite

On se place dans le bon réperoire : cd /home/etherpad/etherpad-lite/

Installer les dépendances

Avant le premier lancement, il est nécessaire d'installer les dépendances. Ce script crée également un fichier de configuration par défaut.

su -c './bin/installDeps.sh' etherpad

Premier lancement pour tester

su -c './bin/run.sh' etherpad

Le serveur Etherpad-lite est désormais fonctionnel et disponible à l'adresse http://IP_DU_SERVEUR:9001

Des avertissements peuvent apparaître, concernant l'utilisation d'une base de données "DirtyDB", et le fait que les infos du compte Admin n'ont pas encore été renseignées dans le fichier de configuration settings.json. Tout autre avertissement nécessite une résolution ou une explication avant de passer à la suite.

Faire fonctionner Etherpad-lite sur le port 80

Par défaut, Etherpad-lite fonctionne sur le port 9001, ce qui oblige à spécifier le port dans l'url des pads (http://IP_DU_SERVEUR:9001/p/nom_du_pad, et complique la saisie de l'adresse d'un pad. Mais l'utilisateur dédié "etherpad" ne dispose pas des droits pour accéder aux ports inférieurs à 1024. On peut cependant contourner ce problème [5].

apt-get install libcap2

setcap 'cap_net_bind_service=+ep' /usr/bin/nodejs

Et modifier dans le fichier settings.json :

//IP and port which etherpad should bind at
"ip": "0.0.0.0",
"port" : 80,

Les pads sont désormais accessibles à une adresse du type http://IP_DU_SERVEUR/p/nom_du_pad.

Configurer Etherpad-Lite pour fonctionner avec MongoDB

DirtyDB n'est pas recommandé pour un usage en production. Voici comment utiliser MongoDB à la place.

Installer mongodb sur le serveur : apt-get install mongodb libkrb5-dev

Attention : si comme moi vous avez créé une partition spécifique pour /var lors de l'installation et que celle-ci fait moins de 3Go, il se peut que le service mongodb ne se lance pas. On peut le vérifier avec la commande service mongodb status. Si c'est la cas, il est possible d'ajouter au fichier /etc/mongodb.conf la variable smallfiles = true. On peut alors lancer le service avec la commande service mongodb start.

su -c 'npm install kerberos' etherpad
su -c 'npm install mongodb' etherpad
su -c './bin/installDeps.sh' etherpad

Éditer le fichier settings.json : nano /home/etherpad/etherpad-lite/settings.json

Changer

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

en

"dbType" : "mongodb",
"dbSettings" : { 
                  "host"    : "localhost", 
                  "port"    : 27017,
                  "dbname"  : "etherpad"
               },

Autoriser l'import-export de documents

Il est nécessaire d'installer abiword :

apt-get install abiword

Éditer le fichier settings.json : nano /home/etherpad/etherpad-lite/settings.json

Remplacer "abiword" : "null"

par

"abiword" : "/usr/bin/abiword"

Faire fonctionner Etherpad-Lite en tant que service [6]

Création du fichier :

touch /etc/systemd/system/etherpad-lite.service

nano /etc/systemd/system/etherpad-lite.service

contenu du fichier :

[Unit]
Description=etherpad-lite (real-time collaborative document editing)
After=syslog.target network.target
 
[Service]
Type=simple
User=etherpad
Group=etherpad
Environment="HTTP_PROXY=http://IP_AMON:3128/"
ExecStart=/home/etherpad/etherpad-lite/bin/run.sh
 
[Install]
WantedBy=multi-user.target

Pour démarrer le service : service etherpad-lite start

Pour arrêter le service : service etherpad-lite stop

Pour lancer le service au démarrage : systemctl enable etherpad-lite

Personnaliser Etherpad-Lite dans un objectif pédagogique

Suite à quelques années d'utilisation avec les élèves, voici les personnalisations que j'ai souhaité mettre en place :

Personnaliser le message d'accueil

Ce message s'affiche sur chaque pad créé.

Éditer le fichier /home/etherpad/etherpad-lite/settings.json.

nano /home/etherpad/etherpad-lite/settings.json

//the default text of a pad
"defaultPadText" : "Bienvenue sur l'Etherpad du Lycée !\n\nLe texte que vous saisissez apparaît sur l'écran de chaque utilisateur connecté.\n\nPensez à saisir votre nom en haut à droite, et à respecter la charte d'usage en vigueur : http:\/\/adresse.de.la.charte\n",

Ne pas afficher les éventuelles erreurs dans les pads

Éditer le fichier /home/etherpad/etherpad-lite/settings.json.

/* Should we suppress errors from being visible in the default Pad Text? */
"suppressErrorsInPadText" : true,

Désactiver le chat et le réglage des options

Cette fonctionnalité est offerte par le plugin disableChat. Son installation peut se faire

  • soit en ligne de commande :

cd /home/etherpad/etherpad-lite/

su -c 'npm install ep_disableChat' etherpad

Il faut alors redémarrer Etherpad-lite.

Activer le plugin disableChat.

Le chat est alors désactivé par défaut, mais ré-activable en passant par l'icône de réglage des options du pad. Pour éviter cela et simplifier l'interface, on pourra cacher cette icône de réglage des options en éditant le fichier settings.json, pour y enlever l'élément "settings",.

/* The toolbar buttons configuration. */
"toolbar": {
  "left": [
    ["bold", "italic", "underline", "strikethrough"],
    ["orderedlist", "unorderedlist", "indent", "outdent"],
    ["undo", "redo"],
    ["clearauthorship"]
  ],
  "right": [
    ["importexport", "timeslider", "savedrevision"],
    ["settings", "embed"],
    ["showusers"]
  ],
  "timeslider": [
    ["timeslider_export", "timeslider_returnToPad"]
  ]
},


Il faudra ensuite redémarrer Etherpad-lite.

Empêcher la suppression des couleurs des auteurs

Le plugin disable_reset_authorship_colours semble être prévu pour cette fonctionnalité, mais il s'est montré inopérant lors de mes tests.

Il reste cependant possible de cacher l'icône correspondant à cette fonctionnalité en éditant le fichier settings.json, pour y enlever l'élément ["clearauthorship"].

/* The toolbar buttons configuration. */
"toolbar": {
  "left": [
    ["bold", "italic", "underline", "strikethrough"],
    ["orderedlist", "unorderedlist", "indent", "outdent"],
    ["undo", "redo"],
    ["clearauthorship"]
  ],
  "right": [
    ["importexport", "timeslider", "savedrevision"],
    ["settings", "embed"],
    ["showusers"]
  ],
  "timeslider": [
    ["timeslider_export", "timeslider_returnToPad"]
  ]
},

Il faudra ensuite redémarrer Etherpad-lite.

Activer le correcteur orthographique

L'activation du plugin spellcheck peut se faire

  • soit en ligne de commande :

cd /home/etherpad/etherpad-lite/

su -c 'npm install ep_spellcheck' etherpad

Il faut alors redémarrer Etherpad-lite.

Activer le plugin spellcheck.

Pour activer la correction orthographique par défaut, il est nécessaire d'éditer le fichier /home/etherpad/etherpad-lite/settings.json pour y ajouter la ligne :

"ep_spellcheck": { "disabledByDefault" : false }

On pensera également à définir la langue française par défaut avec le paramètre "lang": "fr-fr".

En veillant à placer une virgule à l'endroit adéquat pour conserver un format json valide.

Pouvoir lister les pads créés, et les supprimer

Cette fonctionnalité est offerte par le plugin adminpads. Son installation peut se faire

  • soit en ligne de commande :

cd /home/etherpad/etherpad-lite/

su -c 'npm install ep_adminpads' etherpad

Il faut alors redémarrer Etherpad-lite.

Activer le plugin adminpads.

La page d’administration des pads est aloors disponible à l'adresse http://IP_DU_SERVEUR/admin/pads.

Modifier la police par défaut

Il est possible de modifier les polices (type et taille) des éléments affichés. Pour cela, il faut ajouter dans le fichier src/static/custom/pad.css les lignes suivantes :

Pour modifier la police utilisée dans l'ensemble de l'interface, sauf dans la zone de saisie :

body {
  font-family: Andika;
}

On suppose pour que ce qui précède fonctionne, que la police Andika souhaitée est déployée sur l'ensemble des machines du réseau, sinon on pourra s'inspirer de cette solution et ajouter avant ce qui précède le code suivant :

@font-face {
  font-family: 'Andika';
  src: url('http://www.fontsaddict.com/fontface/andika.ttf');
}

Pour modifier la police, sa taille et l'interlignage dans la zone de saisie, pour par exemple faciliter l'utilisation pour des élèves dys* :

body#innerdocbody {
  font-family: Andika !important;
  font-size: 14px;
  line-height: 20px
}

Attention. Pour visualiser ces modification, il est nécessaire de redémarrer Etherpad-lite service etherpad-lite restart et de rafraichir le cache du navigateur utilisé [CTRL+F5].

Empêcher la création de nouveaux pads par les élèves

[TODO]

Identifier automatiquement l'utilisateur à partir de la session Se3 ouverte sur le poste

Un challenge intéressant, qui pourrait peut-être s'appuyer sur les plugins :

[TODO]
  1. Source : http://sebsauvage.net/links/?mhsFJw
  2. D'après http://framacloud.org/cultiver-son-jardin/installation-detherpad/
  3. Source : https://nodejs.org/en/download/package-manager/#debian-and-ubuntu-based-linux-distributions
  4. Node.js LTS : https://nodejs.org/en/blog/community/node-v5/
  5. Source : https://gist.github.com/firstdoit/6389682
  6. Source : https://github.com/ether/etherpad-lite/wiki/How-to-deploy-Etherpad-Lite-as-a-service