Table des matières

Pad

Pour écrire un texte à plusieurs mains, relire ensemble, voir les corrections quand elles sont faites, les “pad” sont très pratiques. Ce sont des éditeurs de texte, en ligne, collaboratif.

Nous hébergeons un de ces outil, basé sur Etherpad. Il se situe ici : https://pad.khaganat.net.

Vous pouvez aussi utiliser d'autres pads sur la toile, par exemple framapad, piratepad, sync.in, braindead.

Usage d'un pad

Un pad est utile dans la phase “brainstorming” avec une équipe, quand on note tout ce qui nous passe par la tête, ou pour finaliser un texte et corriger les virgules à plusieurs.

Un pad n'est pas utile si on est seul à écrire dessus. Dans ce cas, faites une ébauche d'article sur wiki, qui est aussi un éditeur de texte collaboratif, mais avec une collaboration “en différé”.

Un pad sert à des infos volatiles. En plus simple : c'est du temporaire, pas de l'archivage. Donc archivez ailleurs ! Les wikis sont parfaitement appropriés pour ça, d'autant plus qu'ils ont une fonction de recherche très performante.

Un pad n'est pas un forum ou un chat. Si une phrase ou une formulation demandent à être discutées, discutez-en dans le chat, c'est plus lisible, puis corrigez. Ou corrigez et ne discutez pas ; il y a un historique pour revenir en arrière en cas de souci.

Lorsque le texte est à exporter, ne faites surtout pas un copier-collé ! Cela ajoute des espaces partout. C'est un bug et c'est comme ça… Pour avoir le texte sans espaces en plus, sélectionnez en haut à droite l'option “exporter le texte”, puis choisissez le format (texte brut par exemple).

Le pad de Khaganat et ses fonctionnalités

Fonctionnalités propres à notre pad

Il est possible d'ajouter des fonctionnalités aux pads, via des plugins. Voici ceux qui sont installés chez nous, et les choses utiles à connaître à leur propos :

Page d'accueil des pads, où vous pouvez choisir de vous identifier et ainsi d'avoir des pads privés.

Sysadmin : gérer un service de pad

Installer un pad

Le plus simple est de suivre le tutoriel de framapad, très bien fait.

Résumé

Les commandes essentielles sont résumées ici (mises à jour pour Stretch) :

echo 'deb http://http.debian.net/debian stretch-backports main' >> /etc/apt/sources.list
apt update && apt install nodejs git build-essential curl libssl-dev
ln -s /usr/bin/nodejs /usr/bin/node
useradd -mU etherpad
cd /home/etherpad
su -c 'git clone https://github.com/ether/etherpad-lite.git' etherpad
cd /home/etherpad/etherpad-lite/
su -c './bin/installDeps.sh' etherpad

Le paquet “nodejs” est bien présent dans Debian (vlabale pour Jessie et Stretch, mais donne le lien “nodejs” au lieu de “node”, ce qui bloque installDeps.sh. Le lien symbolique permet de régler ça.

Pour Jessie :

apt install npm

Par contre, pas de npm sous stretch ? La solution de contournement serais de faire du pinning puis

apt install npm/unstable

Je déconseille fortement si vous avez autre chose sur le serveur, ce genre de manipulation peut amener de sacré soucis.

Si ça n'a pas déjà été fait, installer un paquet de machins utiles au web :

apt-get install apache2 php php-gd php-imagick php-mysql mariadb-server 

Noter le mot de passe de la base Mysql.

Créer un utilisateur et une base de donnée pour etherpad, noter l'identifiant et le mot de passe, et lui donner les droits sur la base.

mysql -u root -p

CREATE USER "user_etherpad"@"localhost";
SET password FOR "user_etherpad"@"localhost" = password('votre_passe');
CREATE DATABASE bddetherpad;
GRANT ALL ON bddetherpad.* TO "user_etherpad"@"localhost";

Si nécessaire, importez une base dans le cas d'une réinstallation (adaptez USER et BDD) :

mysql -u USER -p -D BDD < BDD.sql

Modifions /home/etherpad/etherpad-lite/settings.json pour lui mettre les bonnes informations.

Les choses à modifier sont notées par A_MODIF :

  // Name your instance!
  "title": "A_MODIF",

//si vous utilisez ssl
  "ssl" : {
            "key"  : "/path-to-your/epl-server.key",
            "cert" : "/path-to-your/epl-server.crt",
            "ca": ["/path-to-your/epl-intermediate-cert1.crt", "/path-to-your/epl-intermediate-cert2.crt"]
          },
//Commenter la base "dirty"
 // "dbType" : "dirty",
  //the database specific settings
//  "dbSettings" : {
//                   "filename" : "var/dirty.db"
 //                },

//Décommentez et personnalisez Mysql
  // An Example of MySQL Configuration
   "dbType" : "mysql",
   "dbSettings" : {
                    "user"    : "A_MODIF",
                    "host"    : "localhost",
                    "password": "A_MODIF",
                    "database": "A_MODIF",
                    "charset" : "utf8mb4"
                  },
   //the default text of a pad
  "defaultPadText" : "Welcome to Etherpad!\n\nThis pad text is synchronized as you type, so that everyone viewing this page sees the same text. This allows you to collaborate seamlessly on documents!\n\nGet involved with Etherpad at http:\/\/etherpad.org\n",

// Langue française (plus bas), c'est mieux.
    "lang": "fr"           

// Pour l'accès à l'administration en ligne ; vous pouvez utiliser un autre nom que "admin"...
  "users": {
    "admin": {
      "password": "A_MODIF",
      "is_admin": true
    },  
  

Lancer etherpad pour un premier aperçu :

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

Si vous n'avez pas modifié ces valeurs, etherpad est alors accessible à l'adresse monsite:9001 et l'administration à monsite:9001/admin.

Pour ajouter les plugins : aller dans l'interface d'administration et cliquer sur “installer”. J'ai remplacé les plugins de groupes par mypads. Adresse : http://vpstests.khaganat.net:9001/mypads/index.html

Pour les plugins utiles, nous avons ajouté

Installer Libreoffice pour plus d'export/import

La documentation d'etherpad indique qu'installer Etherpad ou Abiword permet de gérer l'import/export en divers format. En effet, une fois installé, vous pourrez exporter en .doc, .odf, .pdf. C'est pratique quand on veut garder trace de ses pads.

Mais la doc officielle vous fait installer beaucoup trop de trucs pour un serveur. Vous n'avez pas besoin de la majorité des choses !

Donc, la commande suivante va vous épargner de la place :

sudo apt install --no-install-recommends libreoffice-writer

Ici, de façon surprenante, Libreoffice-writer embarque moins de paquets qu'Abiword. Moins de paquets = moins de risque de bug lors des mises à jour.

Ensuite vérifiez que c'est bien installé au bon endroit :

wich soffice

Puis changez la valeur “soffice” : null, dans le fichier settings.json par le chemin du binaire :

"soffice" : "/usr/bin/soffice",

Service Etherpad au démarrage

Il manque juste de quoi le lancer automatiquement :

Créez le fichier etherpad-lite.service dans lib/systemd/system/

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

Puis rendre ce service permis par systemd, le lancer et vérifier que tout va bien :

systemctl enable etherpad-lite
systemctl start etherpad-lite
systemctl status etherpad-lite

Si vous n'avez pas systemd sur votre système, voir ce tutoriel (en anglais).

Attendre un peu… le temps que ça démarre… Et hop, ça devrait être bon !

Proxy

Si vous souhaitez que votre Etherpad soit accessible via une adresse plus élégante que http://monserveur.com:9001, par exemple http://monserveur.com/pad, il faut mettre un proxy en place dans Apache.

Commencer par activer les modules de proxy :

a2enmod proxy proxy_http

Puis ajouter ce genre d'information dans /etc/apache2/sites-availables/000-default.conf :

<VirtualHost *:80>

  ProxyVia On
  ProxyRequests Off
  ProxyPass /pad/ http://localhost:9001/
  ProxyPassReverse /pad/ http://localhost:9001/
  ProxyPreserveHost on
  <Proxy *>
    Options FollowSymLinks MultiViews
    AllowOverride All
    Order allow,deny
    allow from all
  </Proxy>

</VirtualHost>

Relancez le service apache :

service apache2 restart

Votre Etherpad devrait être accessible à la bonne adresse !

Mise à jour

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

Si etherpad ne se relance pas bien, il faut aller dans le dossier et relancer run.sh.

cd /home/etherpad/etherpad-lite/
su etherpad
./bin/run.sh

Cela va mettre à jour le bazar.

Astuce diverses

Extraire la liste des pads directement depuis la base de données

Il faut chercher le mot de passe dans le fichier de conf du pad :

grep \"password\": /home/etherpad/etherpad-lite/settings.json

Ensuite, on extrait la liste des pads (attention, ça peut durer un petit moment, de l'ordre de la minute).

Version mysql (datée, à vérifier) :

mysql -u etherpad -h localhost -Bqe 'select `key` from etherpad.store' -p | awk -F: '$1 ~ /pad/ {print $2}' | sort -u > listepad.txt

Version postgresql

psql -U etherpad etherpad_prod -h localhost -F $'\t' -P pager=off -c "select key from store" | awk -F: '$1 ~ /pad/ {print $2}' | sort -u > listepad.txt

Exporter une liste de pad

Si vous voulez exporter une liste de pad dont on a le nom, c'est presque facile.

Créez un fichier (listepad.txt par exemple) où chaque ligne est le nom d'un pad :

listepad.txt
pad1
pad2
pad3

Puis lancez dans un terminal la commande suivante1) :

for i in $(cat listepad.txt); do wget "https://pad.khaganat.net/p/$i/export/html" -O "$i.html"; done

Évidement, remplacez l'adresse du pad si ce n'est pas le notre…

Vous aurez une liste de fichier html, autant que de pad.

"Old package-lock.json"

Attention, la manip a tout planté sur l'instance. À revoir…

Les mises à jour ne corrigent pas tout, il y a des vieux restes qui trainent… Si les logs ont cette erreur, primo ce n'est pas très grave, secundo ça se corrige quand même. Faites quand même un snapshot avant de toucher à ça.

L'erreur dans les logs :

npm WARN old lockfile The package-lock.json file was created with an old version of npm

Par contre… Attention, cette manip vide la liste des plugins !

Dans le dossier etherpad, descendez dans src puis jouez avec npm.

cd src
npm audit fix
npm install
npm audit fix
cd ../
npm audit fix

Et si ça ne va toujours pas, un npm audit fix –force devrait régler l'affaire, mais avec un peu de chance, pas besoin.

Plugins, infos

Deleted_pad

Si les pads détruits l'ont été “trop tôt”, en réalité ils sont exportés en html dans home/etherpad/etherpad-lite/deleted_pads. Pour bien faire il faudrait délester un peu ce dossier de temps en temps ; j'ai un vague souvenir que ça se paramètre. Mais entre nous ça ne prends pas de ressources, sous cette forme…

1)
Ce qui veut dire que vous avez un terminal bash et wget. Sinon, ça va être difficile.