diff --git a/INSTALL.md b/INSTALL.md index d524982..d5bca34 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -1,15 +1,15 @@ -Pré-requis +Introduction ==================== +Documentation à destination d'un administrateur de service pad de Chalec. -Installer les paquets suivants : -``` -# apt install screen -``` +L'objectif est d'installer un service basé sur le logiciel etherpad-lite. +Il sera placé en amont, un service nginx qui gèrera le traffic TLS et ses +certificats. Base de données (BDD) ========= -Installer la base de données et démarrer le service : +Installer la base de données postgreSQL et démarrer le service associé : ``` # apt install postgresql postgresql-client # systemctl enable --now postgresql @@ -52,10 +52,16 @@ $ cd etherpad-lite Configuration Etherpad-lite ===================== -Edition du settings.json +Le fichier conf/etherpad-lite/settings.json contient toute la configuration requise. +Pour une mise en place rapide, vous pouvez remplacer votre fichier settings.json par +celui-ci. Il faudra néanmoins mettre en place les secrets décrits ci-dessous. + +Dans le cas contraire, si vous souhaitez conserver votre fichier initial, +veuillez suivre pas à pas cette section. -BDD +Secrets +================== Commenter la BDD par défaut : ``` /* @@ -65,7 +71,8 @@ Commenter la BDD par défaut : }, */ ``` -Renseigner les paramètres de la BDD postgres + +Décommentez la section postgres et compléter avec les secrets ``` "dbType" : "postgres", @@ -79,17 +86,56 @@ Renseigner les paramètres de la BDD postgres }, ``` +On indique à l'instance qu'elle tourne derrière un proxy et donc que la communication +est sécurisée même si elle dialogue en HTTP, sans TLS : +``` + "trustProxy": true, +``` + +Configuration de l'accès admin web. +Dans l'objet json "users", configurer l'admin : +``` + "users": { + "": { + "password": "", + "is_admin": true + }, + }, +``` + + Personnalisation de l'instance +================== + +Pour la réalisation des tests et la mise en place du pad, il est fortement conseillé +de régler le paramètre "minify" à false. Dans le cas contraire, le temps de chargement +du premier pad peut-être très long. +``` + "minify": false, +``` + +On personnalise le titre : ``` "title": "Pad Chalec", ``` + +Placer la favicon dans le dossier parent et la référencer : ``` "favicon": "../pad.chalec.org.svg", ``` + +Ajouter le skin Chalec qui est basé sur le skin par défaut +``` +$ cp -r conf/etherpad-lite/skins/chalec src/static/skins +``` + +et l'activer dans la configuration : ``` "skinName": "chalec", ``` + +Personnaliser le texte par défaut de la page d'un nouveau pad : ``` "defaultPadText" : " <---- Tapez votre texte ici et libre à vous d'effacer cette \ page d'informations.\n\nBienvenue sur pad.chalec.org, un service Chalec, basé sur le \ @@ -113,36 +159,76 @@ CHATONS par Libre en Communs (https://a-lec.org)\nmailto:contact+pad@chalec.org\ :chalec@salons.a-lec.org?join", ``` -Configuration de la BDD : +Démarrer le service Etherpad +================== + +Note @todo : cette partie est en travaux et le mécanisme décrit devrait évoluer vers un service +systemd - - -Then try to start etherpad - +Tester le démarrer du service etherpad-lite : `$ src/bin/run.sh` -Then CTRL-C +Vérifier que le démarrage se passe sans encombres. Puis intérrompre le processus avec un +CTRL-C -Restore the run.sh script in home folder -Setup the cron +Installer screen : +``` +# apt install screen +``` +Copier le fichier suivant dans un fichier run.sh +``` +#!/bin/sh + +export NODE_ENV=production +/usr/bin/screen -dmS pad "/home/etherpad/etherpad-lite/src/bin/run.sh" +``` + +On rend le fichier exécutable : +`$ chmod +x run.sh` + +Lancer le script : +`$ ./run.sh` + +Vérifier que le pad tourne dans le screen. La commande suivante devrait faire +apparaitre dans la liste des écrans, le pad. +`screen -ls` + +Créer le script qui va vérifier s'il y a besoin de relancer le processus : +``` +#!/bin/sh + +ret=`ps -edf | grep etherpad-lite | grep -v grep` +status=$? + +if [ "$status" -ne "0" ] ; then +# echo "It seems like Etherpad-lite has been stopped or crashed.\nStarting etherpad-lite..."; + /home/etherpad/run.sh +fi +``` + +Le rendre exécutable : +`chmod +x checkrestart.sh` + + +Configuration du cron : `$ crontab -e` -and insert at the end of the file +et insérer les lignes suivantes dans le fichier -`@reboot /home/etherpad/run.sh` +``` +@reboot /home/etherpad/run.sh > /dev/null +* * * * * /home/etherpad/checkrestart.sh +``` +Enregistrer et quitter l'éditeur. -Restore "run.sh" script helper to run Etherpad in screen znd run - -`~/run.sh` - -Install the proxy +Installation du proxy nginx ================== Restore html content into /var/www -Install nginx +Installer nginx et préparer le dossier de logs ``` # apt install nginx # mkdir /var/log/nginx/pad.chalec.org @@ -150,72 +236,130 @@ Install nginx ``` -Setup the config file from nginx/sites-available/etherpad in /etc/nginx/sites-available/etherpad +Enregistrer le fichier de configuration de site nginx a cet emplacement /etc/nginx/sites-available/etherpad et faire un lien symbolique dans /etc/nginx/sites-available/etherpad -Link available to enable ``` # cd /etc/nginx/sites-enabled # ln -s ../sites-available . ``` -Start nginx - +Démarrer le service nginx `# systemctl enable --now nginx` -Open firewall - +Ouvrir les ports du firewall `# ufw allow proto tcp port 80,443` -Check the service is reachable at +Vérifier que le service répond en se rendant aux addresses suivantes : ``` http://pad.chalec.org https://pad.chalec.org ``` -INSTALL etherpad plugins -======================== +Installation des Greffons etherpad +================== -Plugin list to install at https://pad.chalec.org/admin -- adminpads2 -- align -- author_hover -- delete_after_delay -- delete_empty_pads -- font_color -- font_size -- headings2 -- spellcheck -- table_of_contents +Pour complémenter l'installation de base d'etherpad-lite, il faut ajouter quelques +greffons. + +Installer les greffons suivants en se rendant sur la page d'administration +https://pad.chalec.org/admin : +- adminpads2 : lister les pads et par exemple de les supprimer +- align : aligner à gauche / droite / centrer +- author_hover : afficher l'auteur d'un texte en survolant avec la souris +- delete_after_delay : supprimer automatiquement un pad après un certain délais d'inactivité +- delete_empty_pads : supprimer automatiquement un pad vide +- font_color : utiliser des couleurs dans le texte +- font_size : utiliser des polices de différentes tailles +- headings2 : titres et sous-titres +- table_of_contents : table des matières + +Note : il existe une méthode pour installer cela en ligne de commande. @todo + +Pour supporter l'export au format ODT, il faut installer libreoffice : +``` +# apt install libreoffice-nogui +``` + +Puis configurer le chemin du binaire +``` + "soffice": "/usr/bin/soffice", +``` + +Ajouter le module de table des matières "table_of_contents" et configurer pour le +désactiver par défaut : +``` + "ep_toc": { + "disable_by_default": true + }, + +``` + +Ajouter le module de suppression automatique des pads inactif "delete_after_delay" +et le configurer à J + six mois (temps en secondes). +On indique qu'on fait la suppression au lancement et non de manière régulière en tâche de fond. En effet, il n'y a aucune urgence à faire ce genre de tâche. +``` + "ep_delete_after_delay": { + "delay": 15811200, // 6 * 30.5 * 24 * 3600 + "loop": false, + "deleteAtStart": true, + "text": "" + }, +``` + + +Securité et limites + +On paramètre "socketIo" avec un buffer HTTP suffisement grand pour notament importer +des pads jusqu'à 20Mo : +``` + "maxHttpBufferSize": 20000000 +``` + + +``` + "importExportRateLimiting": { + // duration of the rate limit window (milliseconds) + "windowMs": 90000, + + // maximum number of requests per IP to allow during the rate limit window + "max": 10 + }, +``` Chalec infos ============ -Intall Java +Intaller Java `# apt install openjdk-jre-headless` +Ajouter l'utilisateur statoolinfos `# adduser statoolinfos` -Add to admin group to read logs + +Ajouter statoolinfos au group admin pour qu'il puisse lire les logs ``` # adduser statoolinfos admin # su - statoolinfos $ cd ``` -Download Statoolinfos jar at https://forge.devinsy.fr/devinsy/statoolinfos/releases +Télécharger le binaire (jar) Statoolinfos à l'adresse suivante : +https://forge.devinsy.fr/devinsy/statoolinfos/releases -Uncompress in /home/statool- -link versioned folder to generic one +Décompresser dans /home/statool- +Faire un lien généric pour avoir un nom de dossier invariant "statoolinfos": `$ ln -s statoolinfos- statoolinfos` -Restore statool config +Restaurer la configuration statoolinfos +- /var/www/html/.well-known/statoolinfos) -(/var/www/html/.well-known/statoolinfos already restored in etherpad install) +Exécuter la commande suivante pour vérifier que tout se passe bien : +` /home/statoolinfos/statoolinfos/statoolinfos.sh probe -full /hhome/statoolinfos/statoolinfos/conf/pad.chalec.org.conf ` -/home/statoolinfos/statoolinfos/statoolinfos.sh probe -full /hhome/statoolinfos/statoolinfos/conf/pad.chalec.org.conf +On configure le cron quotidien `$ crontab -e` -`45 * * * * /home/statoolinfos/statoolinfos/statoolinfos.sh probe -previousday /home/statoolinfos/statoolinfos/conf/pad.chalec.org.conf >> /home/statoolinfos/statoolinfos.log` +`45 5 * * * /home/statoolinfos/statoolinfos/statoolinfos.sh probe -previousday /home/statoolinfos/statoolinfos/conf/pad.chalec.org.conf >> /home/statoolinfos/statoolinfos.log`