====== 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 [[http://etherpad.org/|Etherpad]]. Il se situe ici : [[https://pad.khaganat.net]]. Vous pouvez aussi utiliser d'autres pads sur la toile, par exemple [[http://framapad.org/|framapad]], [[http://piratepad.net/front-page/|piratepad]], [[http://sync.in/|sync.in]], [[http://ether.braindead.fr/|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). {{ :fr:pad3.jpg?900 |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 : * [[https://www.npmjs.com/package/ep_adminpads|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é. * [[https://www.npmjs.com/package/ep_comments_page|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. * [[https://www.npmjs.com/package/ep_font_size|font_size]] pour changer la taille de la police. * [[https://www.npmjs.com/package/ep_margin|margin]] pour aligner le texte à gauche, à droite ou au centre. * [[https://www.npmjs.com/package/ep_reference|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. * [[https://www.npmjs.com/package/ep_themes|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. * [[https://framablog.org/2015/10/06/mypads-lalternative-de-framasoft-a-google-docs/|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. {{ :fr:pad_group.jpg |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 [[http://framacloud.org/cultiver-son-jardin/installation-detherpad/|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 [[https://wiki.debian.org/AptPreferences|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/'' [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 [[https://github.com/ether/etherpad-lite/wiki/How-to-deploy-Etherpad-Lite-as-a-service|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'' : ProxyVia On ProxyRequests Off ProxyPass /pad/ http://localhost:9001/ ProxyPassReverse /pad/ http://localhost:9001/ ProxyPreserveHost on Options FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all 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 : pad1 pad2 pad3 Puis lancez dans un terminal la commande suivante((Ce qui veut dire que vous avez un terminal bash et wget. Sinon, ça va être difficile.)) : 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... {{tag>outils collaboratif }}