diff --git a/INSTALL.md b/INSTALL.md index ce5dc2a..503d0f0 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -1,54 +1,51 @@ -Introduction -==================== +# Introduction + Documentation à destination d'un administrateur de service pad de Chalec. -L'objectif est d'installer un service basé sur le logiciel etherpad-lite. +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) -========= +# Base de données (BDD) -Installer la base de données postgreSQL et démarrer le service associé : + +Installer la base de données PostgreSQL et démarrer le service associé : ``` # apt install postgresql postgresql-client # systemctl enable --now postgresql ``` -On vérifie que l'on peut se connecter en IP avec vérification du mot de passe par la BDD. Editer le fichier suivant : -/etc/postgresql/xx/main/pg_hba.conf +On vérifie que l'on peut se connecter en IP avec vérification du mot de passe par la BDD. Éditer le fichier `/etc/postgresql/13/main/pg_hba.conf` : ``` host all all 127.0.0.0/24 md5 ``` -On crée l'utilisateur "pad" avec le mot de passe , et la base "pad" associée à l'utilisateur : +Créer l'utilisateur et la base : ``` # su - postgres $ createuser pad $ createdb pad -O pad -$ psql - ALTER USER WITH PASSWORD '' ; +$ psql pad + ALTER USER pad WITH PASSWORD '' ; ALTER ROLE; \q ``` -Installer Etherpad-lite -===================== +# Installer Etherpad -Ajouter l'utilisateur etherpad : +Créer l'utilisateur d'Etherpad : ``` # adduser etherpad ``` -On se connecte avec l'utilisateur etherpad +Connecter avec l'utilisateur etherpad : ``` # su - etherpad ``` -Suivre les recommandations de la documentation officielle d'etherpad-lite pour installer sur Debian. - +Suivre les recommandations de la documentation officielle d'Etherpad pour installer sur Debian : ``` $ cd /home/etherpad $ curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash - @@ -56,28 +53,23 @@ $ curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash - $ git clone --branch master https://github.com/ether/etherpad-lite.git ``` -Récupérer les ressoures du pad Chalec -======================= - -Cloner le dépot Pad de chalec avec l'utilisateur etherpad +# Récupérer les ressoures du pad Chalec +Cloner le dépot Pad de Chalec avec l'utilisateur etherpad : ``` $ git clone https://git.a-lec.org/a-lec/commissions/chalec/pad ``` +# Configuration Etherpad -Configuration Etherpad-lite -===================== - -Le fichier conf/etherpad-lite/settings.json contient toute la configuration requise. +Le fichier `/home/etherpad/pad.git/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. -Les instruction suivantes s'appliquent au fichier settings.json qui se trouve dans le home du user etherpad, dossier etherpad-lite. - +Les instructions suivantes s'appliquent au fichier `/home/etherpad/etherpad-lite/settings.json` : ``` $ cd /homer/etherpad/etherpad-lite ``` @@ -92,7 +84,7 @@ Commenter ou supprimer la BDD par défaut : */ ``` -Décommentez la section postgres et compléter avec les secrets : +Décommenter la section `postgres` et compléter avec les secrets : ``` "dbType" : "postgres", "dbSettings" : { @@ -105,17 +97,16 @@ Décommentez la section postgres et compléter avec les secrets : }, ``` -On indique à l'instance qu'elle tourne derrière un proxy et donc que la communication +Indiquer à 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 : +Configurer l'accès admin web : ``` "users": { - "": { + "admin666": { "password": "", "is_admin": true }, @@ -129,18 +120,19 @@ du premier pad peut-être très long. Penser à reactiver ce paramètre si besoi "minify": false, ``` -On personnalise le titre : +Personnaliser le titre : ``` "title": "Pad Chalec", ``` -Placer la favicon dans le dossier parent (/home/etherpad) et la référencer : +Placer la favicon dans le dossier `/home/etherpad` et la référencer : ``` "favicon": "../pad.chalec.org.svg", ``` Ajouter le skin Chalec qui est basé sur le skin par défaut : ``` +$ cd /home/etherpad/etherpad-lite/ $ cp -r conf/etherpad-lite/skins/chalec src/static/skins ``` @@ -173,19 +165,15 @@ CHATONS par Libre en Communs (https://a-lec.org)\nmailto:contact+pad@chalec.org\ :chalec@salons.a-lec.org?join", ``` -Démarrer le service Etherpad -================== +# Démarrer le service Etherpad Note @todo : cette partie est en travaux et le mécanisme décrit devrait évoluer vers un service systemd - - Tester le démarrer du service etherpad-lite : `$ src/bin/run.sh` -Vérifier que le démarrage se passe sans encombres. Puis intérrompre le processus avec un : -CTRL-C +Vérifier que le démarrage se passe sans encombre. Puis intérrompre le processus avec : CTRL-C Installer screen : @@ -196,22 +184,20 @@ Installer 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 : +Rendre 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. +Vérifier que le pad tourne dans le screen. Vérifier que la commande suivante fait apparaitre le pad dans la liste des écrans : `screen -ls` -Créer le script qui va vérifier s'il y a besoin de relancer le processus : +Créer le script `/home/etherpad/checkrestart.sh` qui va vérifier s'il y a besoin de relancer le processus : ``` #!/bin/sh @@ -228,7 +214,7 @@ Le rendre exécutable : `chmod +x checkrestart.sh` -Configuration du cron : +Configurer du cron : `$ crontab -e` et insérer les lignes suivantes dans le fichier : @@ -236,11 +222,10 @@ et insérer les lignes suivantes dans le fichier : @reboot /home/etherpad/run.sh > /dev/null * * * * * /home/etherpad/checkrestart.sh ``` -Enregistrer et quitter l'éditeur. -Installation du proxy nginx -================== -Restore html content into /var/www +# Installation du proxy nginx + +Restaurer le dossier `/home/etherpad/pad.git/conf/html` dans '/var/www' Installer nginx et préparer le dossier de logs : ``` @@ -249,19 +234,27 @@ Installer nginx et préparer le dossier de logs : # chown www-data:www-data /var/log/nginx/pad.chalec.org ``` -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 : - +Enregistrer le fichier de configuration de site nginx `/home/etherpad/pad.git/conf/nginx/sites-available/etherpad` à cet emplacement /etc/nginx/sites-available/etherpad et faire un lien symbolique dans /etc/nginx/sites-available/etherpad : ``` +# cp /home/etherpad/pad.git/conf/nginx/conf.d/* /etc/nginx/conf.d/ # cd /etc/nginx/sites-enabled -# ln -s ../sites-available . +# ln -s ../sites-available/etherpad . ``` +Créer les certificats : +``` +# certbot certonly --nginx -d pad.chalec.org +``` Démarrer le service nginx : -`# systemctl enable --now nginx` +``` +# systemctl enable --now nginx +``` Ouvrir les ports du firewall : -`# ufw allow proto tcp port 80,443` +``` +# ufw allow proto tcp port 80,443 +``` Vérifier que le service répond en se rendant aux addresses suivantes : ``` @@ -269,10 +262,10 @@ http://pad.chalec.org https://pad.chalec.org ``` -Installation des Greffons etherpad -================== +# Installation des Greffons etherpad -Pour complémenter l'installation de base d'etherpad-lite, il faut ajouter quelques + +Pour complémenter l'installation de base d'Etherpad, il faut ajouter quelques greffons. Installer les greffons suivants en se rendant sur la page d'administration @@ -289,18 +282,20 @@ https://pad.chalec.org/admin : 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 : +## Export libreoffice + +Pour supporter l'export au format ODT, installer libreoffice : ``` # apt install libreoffice-nogui ``` -Puis configurer le chemin du binaire : +Puis configurer le chemin du binaire dans le `settings.json` : ``` "soffice": "/usr/bin/soffice", ``` Ajouter le module de table des matières "table_of_contents" et configurer pour le -désactiver par défaut (bug upstream, configuration non prise en compte, cf. #1): +désactiver par défaut (bug upstream, configuration non prise en compte, cf. #1) : ``` "ep_toc": { "disable_by_default": true @@ -310,7 +305,7 @@ désactiver par défaut (bug upstream, configuration non prise en compte, cf. #1 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. +Indiquer 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 @@ -321,16 +316,14 @@ On indique qu'on fait la suppression au lancement et non de manière régulière ``` -Securité et limites +# Securité et limites -On paramètre "socketIo" avec un buffer HTTP suffisement grand pour notament importer -des pads jusqu'à 20Mo : +Paramétrer "socketIo" avec un buffer HTTP suffisemment grand pour notament importer des pads jusqu'à 20Mo dans le fichier `settings.json`: ``` "maxHttpBufferSize": 20000000 -``` +[...] -``` "importExportRateLimiting": { // duration of the rate limit window (milliseconds) "windowMs": 90000, @@ -341,38 +334,50 @@ des pads jusqu'à 20Mo : ``` -Chalec infos -============ +# Chalec infos Intaller Java : -`# apt install openjdk-jre-headless` +``` +# apt install openjdk-jre-headless +``` Ajouter l'utilisateur statoolinfos : -`# adduser statoolinfos` +``` +# adduser statoolinfos +``` -Ajouter statoolinfos au group admin pour qu'il puisse lire les logs : +Ajouter l'utilisateur statoolinfos au group admin pour qu'il puisse lire les logs : ``` # adduser statoolinfos admin +``` + +Se connecter avec le nouvel utilisateur : # su - statoolinfos $ cd ``` Télécharger le binaire (jar) Statoolinfos à l'adresse suivante : -https://forge.devinsy.fr/devinsy/statoolinfos/releases +`https://forge.devinsy.fr/devinsy/statoolinfos/releases` -Décompresser dans /home/statool- +Décompresser dans `/home/statoolinfos/statool-` Faire un lien généric pour avoir un nom de dossier invariant "statoolinfos": `$ ln -s statoolinfos- statoolinfos` -Restaurer la configuration statoolinfos : -- /var/www/html/.well-known/statoolinfos) +Restaurer la configuration statoolinfos +``` +cp /home/etherpad/pad.git/conf/statoolinfos/pad.chalec.org.conf /var/www/html/.well-known/statoolinfos/ +``` -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 ` +Lancer une génération maximale des métriques : +``` +/home/statoolinfos/statoolinfos/statoolinfos.sh probe -full /hhome/statoolinfos/statoolinfos/conf/pad.chalec.org.conf +``` -On configure le cron quotidien : -`$ crontab -e` +Configurer le cron quotidien : +``` +$ crontab -e -`23 55 * * * /home/statoolinfos/statoolinfos/statoolinfos.sh probe -previousday /home/statoolinfos/statoolinfos/conf/pad.chalec.org.conf >> /home/statoolinfos/statoolinfos.log` +23 55 * * * /home/statoolinfos/statoolinfos/statoolinfos.sh probe -previousday /home/statoolinfos/statoolinfos/conf/pad.chalec.org.conf >> /home/statoolinfos/statoolinfos.log +```