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).
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 :
- adminpads : permet de lister et de gérer tous les pads sur le serveur. Si vous avez un pad public que vous souhaitez voir complètement disparaître (y compris au niveau de l'historique), contactez un administrateur. Tant qu'il n'y a pas trop de pad, cela peut aussi permettre de retrouver celui qu'on avait oublié.
- comments_page : pour ajouter des commentaires sur un bout du texte, en surlignant ce dernier. On peut aussi suggérer autre chose. À utiliser avec parcimonie.
- font_size pour changer la taille de la police.
- margin pour aligner le texte à gauche, à droite ou au centre.
- reference : ouvre, dans une colonne à droite, un espace où appeler un second pad. On peut alors sélectionner des bouts de son texte pour les “citer” sur le premier pad, et mettre un lien rapide vers ce pad. Utile pour lier plusieurs pads entre eux. La fenêtre de “reference” s'ouvre à partir des paramètres.
- themes : modifie le visuel des pads, afin de s'adapter entre autre à certains problèmes de vision (thème très contrasté). Si vous souhaitez un thème particulier, venez nous en parler, nous proposer des accords de couleurs, nous le mettront en place.
- mypads: permet la gestion des comptes perso, donc des pads privés, ainsi que des groupes y ayant accès. Si vous souhaitez créer un pad que vous seul et les gens que vous choisirez pourrez lire, utilisez cette option.
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é
- adminpads : Permet de lister les pads via l'interface d'admin web (pratique pour un peu de ménage)
- comments_page : pour ajouter des commentaires sur les mots.
- page_view, demandé par le précédent
- font_size : modifier la taille de la police
- margin : aligner le texte à gauche, droite, centré
- mypads : gestion de groupes et de pads privés
- reference : permet d'appeler un autre pad dans le sien, et d'afficher les deux en même temps
- themes : propose de changer le thème de fond des pads ; particulièrement utile pour des malvoyants.
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
-U etherpad etherpad_prod
: le nom d'utilisateur puis celui de la base de donnée-h localhost
: à faire sur le serveur donc, c'est local !
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…