Archive for mai, 2015
[Debian/Ubuntu] Installer Etherpad Lite
0Etherpad Lite est un formidable outil collaboratif permettant de travailler à plusieurs sur un document texte, que vous connaissez peut-être déjà sous le nom de Framapad, qui est une installation d’Etherpad Lite gérée par l’association Framasoft. Dans la continuité de notre démarche d’auto-hébergement, nous avons voulu héberger une instance d’Etherpad Lite sur un de nos serveurs.
Il existe deux versions d’Etherpad : une « Lite » et une non-« Lite ». La version non-« Lite », plus ancienne, était écrite en Scala, et la version « Lite » est la réécriture d’Etherpad en JavaScript (avec Node.js), plus légère que la version originale. Nous allons donc dans ce tutoriel aborder l’installation de la version « Lite » d’Etherpad.
1. Installation de Node.js
Node.js est un environnement javascript plutôt bien adapté à des applications web. Etherpad Lite requiert une version particulière : la v0.11.16, que nous allons nous empresser (!) de compiler.
On va commencer à installer quelques dépendances qui nous serviront tout au long de ce tutoriel :
sudo apt-get install gzip git curl python libssl-dev pkg-config build-essential
Puis on va télécharger les sources :
cd /tmp wget http://nodejs.org/dist/v0.11.16/node-v0.11.16.tar.gz tar -xzvf node-v0.11.16.tar.gz cd node-v0.11.16
Et on va enfin compiler Node :
./configure make sudo make install
2. Installation de MySQL
On va aller plus loin dans la configuration de notre Etherpad Lite, et nous allons faire en sorte qu’il utilise une base de donnée MySQL pour stocker ses données.
On commence par installer leur serveur MySQL :
sudo apt-get install mysql-server
Lors de l’installation, vous allez devoir renseigner un mot de passe root pour votre base de donnée. Gardez-le précieusement de côté, on va en avoir besoin tout de suite pour se connecter à la base de donnée :
mysql -u root -p
Il faut taper son mot de passe pour arriver à un invite de commande MySQL. On va ensuite créer une base de donnée dédiée à Etherpad Lite, et attribuer les privilèges de cette base de donnée à notre utilisateur etherpad :
create database `etherpad-lite`; grant all privileges on `etherpad-lite`.* to 'etherpad'@'localhost' identified by '*MOT DE PASSE SQL ETHERPAD*';
Remplacez bien entendu *MOT DE PASSE SQL ETHERPAD* par un mot de passe de votre choix, si possible différent du mot de passe root pour des raisons de sécurité.
3. Installation d’Etherpad Lite
On va commencer par créer un utilisateur séparé pour Etherpad Lite. Vous noterez l’option « –disabled-login », qui permet de désactiver toute connexion directe à cette session pour des raisons de sécurités
sudo adduser --disabled-login --gecos 'Etherpad' etherpad
On va s’y connecter :
cd /home/etherpad sudo su - etherpad -s /bin/bash
On télécharge les sources via Git :
git clone git://github.com/ether/etherpad-lite.git
On va ensuite changer quelques réglages :
cd etherpad-lite cp settings.json.template settings.json nano settings.json
Il faut changer l’IP de l’hôte :
"ip": "0.0.0.0",
par
"ip": "127.0.0.1",
Et aussi supprimer les paramètres de base de donnée actuels :
"dbType" : "dirty", //the database specific settings "dbSettings" : { "filename" : "var/dirty.db" },
pour les remplacer par :
"dbType" : "mysql", "dbSettings" : { "user" : "etherpad", "host" : "localhost", "password": "*VOTRE MOT DE PASSE MYSQL*", "database": "etherpad-lite" },
4. Création des scripts de démarrage
Nous allons créer le script de démarrage qui vous permettera de lancer etherpad à l’allumage du serveur, mais aussi de l’arrêter et de le redémarrer facilement.
On fait un sudo nano /etc/init.d/etherpad
, et on y insère le code suivant :
#!/bin/sh ### BEGIN INIT INFO # Provides: etherpad-lite # Required-Start: $local_fs $remote_fs $network $syslog # Required-Stop: $local_fs $remote_fs $network $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: starts etherpad lite # Description: starts etherpad lite using start-stop-daemon ### END INIT INFO PATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/opt/node/bin" LOGFILE="/var/log/etherpad.log" EPLITE_DIR="/home/etherpad/etherpad-lite" EPLITE_BIN="bin/run.sh" USER="etherpad" GROUP="etherpad" DESC="Etherpad" NAME="etherpad" set -e . /lib/lsb/init-functions start() { echo "Starting $DESC... " start-stop-daemon --start --chuid "$USER:$GROUP" --background --make-pidfile --pidfile /var/run/$NAME.pid --exec $EPLITE_DIR/$EPLITE_BIN -- $LOGFILE || true echo "done" } #We need this function to ensure the whole process tree will be killed killtree() { local _pid=$1 local _sig=${2-TERM} for _child in $(ps -o pid --no-headers --ppid ${_pid}); do killtree ${_child} ${_sig} done kill -${_sig} ${_pid} } stop() { echo "Stopping $DESC... " while test -d /proc/$(cat /var/run/$NAME.pid); do killtree $(cat /var/run/$NAME.pid) 15 sleep 0.5 done rm /var/run/$NAME.pid echo "done" } status() { status_of_proc -p /var/run/$NAME.pid "" "etherpad" && exit 0 || exit $? } case "$1" in start) start ;; stop) stop ;; restart) stop start ;; status) status ;; *) echo "Usage: $NAME {start|stop|restart|status}" >&2 exit 1 ;; esac exit 0
On met les bonnes permissions et on met le script en démarrage automatique :
chmod +x /etc/init.d/etherpad update-rc.d etherpad defaults
5. Installation de Nginx, et configuration en reverse proxy
J’utiliserai Nginx et non Apache dans ce tutoriel en raison de sa plus grande simplicité. Nginx va nous servir de reverse proxy, ce qui nous permettera d’associer plusieurs noms de domaines à notre adresse IP et d’avoir des logs d’accès.
On commence par installer le paquet de Nginx :
sudo apt-get install nginx
On crée un certificat SSL, pour permettre une utilisation de HTTPS :
sudo mkdir /etc/nginx/ssl cd /etc/nginx/ssl sudo openssl genrsa -des3 -out etherpad.key 2048 sudo openssl req -new -key etherpad.key -out etherpad.csr sudo cp etherpad.key etherpad.key.org sudo openssl rsa -in etherpad.key.org -out etherpad.key sudo openssl x509 -req -days 365 -in etherpad.csr -signkey etherpad.key -out etherpad.crt
Et enfin on crée le fichier de description de l’hôte virtuelle pour Etherpad Lite, en faisant un sudo nano /etc/nginx/sites-enabled/etherpad
, en y tapant les lignes de configurations suivantes :
server { listen 443 ssl; server_name *NOM DE DOMAINE*; access_log /var/log/nginx/etherpad.access.log; error_log /var/log/nginx/etherpad.error.log; ssl_certificate /etc/nginx/ssl/etherpad.crt; ssl_certificate_key /etc/nginx/ssl/etherpad.key; location / { proxy_pass http://localhost:9001/; proxy_set_header Host $host; proxy_buffering off; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; } } server { listen 80; server_name *NOM DE DOMAINE*; access_log /var/log/nginx/etherpad.access.log; error_log /var/log/nginx/etherpad.error.log; location / { proxy_pass http://localhost:9001; proxy_set_header Host $host; proxy_buffering off; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; } } map $http_upgrade $connection_upgrade { default upgrade; '' close; }
N’oubliez pas d’inscrire au bon endroit le nom de domaine que vous souhaitez associer à votre installation d’Etherpad.
Et pour finir, nous pouvons recharger la configuration de Nginx :
sudo service nginx reload
Conclusion
L’installation d’Etherpad Lite est un processus long et un peu difficile pour un initié, mais permet une installation solide : notre installation est en route depuis plus de 2 mois, sans nécessiter beaucoup de maintenance.
En cas de soucis, le canal IRC #etherpad-lite-dev sur Freenode est disponible pour répondre à toutes vos questions.