2022-05-26 22:46:55 +02:00
# Introduction
2022-05-16 23:41:17 +02:00
2022-04-25 22:23:58 +02:00
Documentation à destination d'un administrateur de service pad de Chalec.
2022-02-19 15:50:21 +01:00
2022-05-26 22:46:55 +02:00
L'objectif est d'installer un service basé sur le logiciel Etherpad-lite
2022-04-25 22:23:58 +02:00
Il sera placé en amont, un service nginx qui gèrera le traffic TLS et ses
certificats.
2022-02-20 15:05:59 +01:00
2022-05-16 23:41:17 +02:00
2022-05-26 22:46:55 +02:00
# Base de données (BDD)
2022-02-20 15:05:59 +01:00
2022-05-26 22:46:55 +02:00
Installer la base de données PostgreSQL et démarrer le service associé :
2022-02-20 15:05:59 +01:00
```
# apt install postgresql postgresql-client
# systemctl enable --now postgresql
```
2022-05-26 22:46:55 +02:00
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` :
2022-02-20 15:05:59 +01:00
```
host all all 127.0.0.0/24 md5
```
2022-05-26 22:46:55 +02:00
Créer l'utilisateur et la base :
2022-02-20 15:05:59 +01:00
```
# su - postgres
2022-05-16 23:41:17 +02:00
$ createuser pad
$ createdb pad -O pad
2022-05-26 22:46:55 +02:00
$ psql pad
ALTER USER pad WITH PASSWORD '< MOTDEPASSE > ' ;
2022-02-20 15:05:59 +01:00
ALTER ROLE;
\q
2022-02-19 15:54:06 +01:00
```
2022-05-26 22:46:55 +02:00
# Installer Etherpad
2022-02-19 15:50:21 +01:00
2022-05-26 22:46:55 +02:00
Créer l'utilisateur d'Etherpad :
2022-02-20 15:05:59 +01:00
```
# adduser etherpad
```
2022-02-19 15:50:21 +01:00
2022-05-26 22:46:55 +02:00
Connecter avec l'utilisateur etherpad :
2022-05-16 23:41:17 +02:00
```
# su - etherpad
```
2022-05-26 22:46:55 +02:00
Suivre les recommandations de la documentation officielle d'Etherpad pour installer sur Debian :
2022-02-19 15:54:06 +01:00
```
2022-05-16 23:41:17 +02:00
$ cd /home/etherpad
$ curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -
2022-02-19 15:50:21 +01:00
# apt install -y nodejs
2022-04-05 20:30:17 +02:00
$ git clone --branch master https://github.com/ether/etherpad-lite.git
2022-02-19 15:54:06 +01:00
```
2022-05-26 22:46:55 +02:00
# Récupérer les ressoures du pad Chalec
2022-05-16 23:41:17 +02:00
2022-05-26 22:46:55 +02:00
Cloner le dépot Pad de Chalec avec l'utilisateur etherpad :
2022-05-16 23:41:17 +02:00
```
$ git clone https://git.a-lec.org/a-lec/commissions/chalec/pad
```
2022-05-26 22:46:55 +02:00
# Configuration Etherpad
2022-05-16 23:41:17 +02:00
2022-05-26 22:46:55 +02:00
Le fichier `/home/etherpad/pad.git/conf/etherpad-lite/settings.json` contient toute la configuration requise.
2022-04-25 22:23:58 +02:00
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.
2022-04-10 09:15:14 +02:00
2022-04-25 22:23:58 +02:00
Dans le cas contraire, si vous souhaitez conserver votre fichier initial,
veuillez suivre pas à pas cette section.
2022-04-10 09:15:14 +02:00
2022-05-26 22:46:55 +02:00
Les instructions suivantes s'appliquent au fichier `/home/etherpad/etherpad-lite/settings.json` :
2022-05-16 23:41:17 +02:00
```
$ cd /homer/etherpad/etherpad-lite
```
Commenter ou supprimer la BDD par défaut :
2022-04-10 09:15:14 +02:00
```
/*
"dbType": "dirty",
"dbSettings": {
"filename": "var/dirty.db"
},
*/
```
2022-04-25 22:23:58 +02:00
2022-05-26 22:46:55 +02:00
Décommenter la section `postgres` et compléter avec les secrets :
2022-04-10 09:15:14 +02:00
```
"dbType" : "postgres",
"dbSettings" : {
2022-05-16 23:41:17 +02:00
"user": "pad",
2022-04-10 09:15:14 +02:00
"host": "localhost",
"port": 5432,
"password": "< MOTDEPASSE > ",
2022-05-16 23:41:17 +02:00
"database": "pad",
2022-04-10 09:15:14 +02:00
"charset": "utf8mb4"
},
```
2022-05-26 22:46:55 +02:00
Indiquer à l'instance qu'elle tourne derrière un proxy et donc que la communication
2022-04-25 22:23:58 +02:00
est sécurisée même si elle dialogue en HTTP, sans TLS :
```
"trustProxy": true,
```
2022-05-26 22:46:55 +02:00
Configurer l'accès admin web :
2022-04-25 22:23:58 +02:00
```
"users": {
2022-05-26 22:46:55 +02:00
"admin666": {
2022-04-25 22:23:58 +02:00
"password": "< password > ",
"is_admin": true
},
},
```
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
2022-05-16 23:41:17 +02:00
du premier pad peut-être très long. Penser à reactiver ce paramètre si besoin pour réduire le traffic web.
2022-04-25 22:23:58 +02:00
```
"minify": false,
```
2022-05-26 22:46:55 +02:00
Personnaliser le titre :
2022-04-10 09:15:14 +02:00
```
"title": "Pad Chalec",
```
2022-04-25 22:23:58 +02:00
2022-05-26 22:46:55 +02:00
Placer la favicon dans le dossier `/home/etherpad` et la référencer :
2022-04-10 09:15:14 +02:00
```
"favicon": "../pad.chalec.org.svg",
```
2022-04-25 22:23:58 +02:00
2022-05-02 21:58:41 +02:00
Ajouter le skin Chalec qui est basé sur le skin par défaut :
2022-04-25 22:23:58 +02:00
```
2022-05-26 22:46:55 +02:00
$ cd /home/etherpad/etherpad-lite/
2022-04-25 22:23:58 +02:00
$ cp -r conf/etherpad-lite/skins/chalec src/static/skins
```
et l'activer dans la configuration :
2022-04-10 09:15:14 +02:00
```
"skinName": "chalec",
```
2022-04-25 22:23:58 +02:00
Personnaliser le texte par défaut de la page d'un nouveau pad :
2022-04-10 09:15:14 +02:00
```
"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 \
logiciel libre Etherpad-lite !\n\nNous vous souhaitons une agréable navigation ainsi \
que de partager les valeurs du libre ici ou ailleurs.\n\nQuelques conseils : \n- cons\
ervez pour vous-même l'adresse (URL) de ce pad et communiquez-la à vos collaborateurs\
. Le contenu est synchronisé entre participants ;\n- attention, tout est public ! Mai\
s sans adresse (URL) point d'accès. Ne la partagez pas avec n'importe qui ;\n- choisi\
ssez un pseudonyme et une couleur (bouton en haut à droite) afin que les participants\
puissent identifier l'utilisateur faisant les modifications.\n\nPolitique de conserv\
ation et de suppression des données : \n- effacement à J+6 mois : votre pad est susce\
ptible d'être effacé six mois après la date de dernière modification (utiliser les fo\
nctions d'export si nécessaire) ;\n- nous ne traitons pas de demandes de suppression \
autres que pour des motifs règlementés par la loi française. En effet, nous ne pouvon\
s pas assurément vous identifier comme le propriétaire d'un pad !\n\nConditions Génér\
ales d'Utilisation : \nEn utilisant ce service, vous acceptez tacitement les Conditio\
ns Générales d'Utilisation (CGU) des services Chalec (https://www.chalec.org/CGU) qui\
régissent formellement le service et priment sur toutes autres explications fournies\
sur cette page.\n\nLibrement, \nL'équipe Chalec (https://www.chalec.org),\nCandidat \
CHATONS par Libre en Communs (https://a-lec.org)\nmailto:contact+pad@chalec.org\nxmpp\
:chalec@salons.a-lec.org?join",
```
2022-05-26 22:46:55 +02:00
# Démarrer le service Etherpad
2022-04-10 09:15:14 +02:00
2022-04-25 22:23:58 +02:00
Note @todo : cette partie est en travaux et le mécanisme décrit devrait évoluer vers un service
systemd
2022-04-10 09:15:14 +02:00
2022-04-25 22:23:58 +02:00
Tester le démarrer du service etherpad-lite :
`$ src/bin/run.sh`
2022-02-19 15:50:21 +01:00
2022-05-26 22:46:55 +02:00
Vérifier que le démarrage se passe sans encombre. Puis intérrompre le processus avec : CTRL-C
2022-04-05 20:30:17 +02:00
2022-04-25 22:23:58 +02:00
Installer screen :
```
# apt install screen
```
2022-02-19 15:50:21 +01:00
2022-05-02 21:58:41 +02:00
Copier le fichier suivant dans un fichier run.sh :
2022-04-25 22:23:58 +02:00
```
#!/bin/sh
export NODE_ENV=production
/usr/bin/screen -dmS pad "/home/etherpad/etherpad-lite/src/bin/run.sh"
```
2022-04-05 20:30:17 +02:00
2022-05-26 22:46:55 +02:00
Rendre le fichier exécutable :
2022-04-25 22:23:58 +02:00
`$ chmod +x run.sh`
2022-04-05 20:30:17 +02:00
2022-04-25 22:23:58 +02:00
Lancer le script :
`$ ./run.sh`
2022-02-19 15:50:21 +01:00
2022-05-26 22:46:55 +02:00
Vérifier que le pad tourne dans le screen. Vérifier que la commande suivante fait apparaitre le pad dans la liste des écrans :
2022-04-25 22:23:58 +02:00
`screen -ls`
2022-04-05 20:30:17 +02:00
2022-05-26 22:46:55 +02:00
Créer le script `/home/etherpad/checkrestart.sh` qui va vérifier s'il y a besoin de relancer le processus :
2022-04-25 22:23:58 +02:00
```
#!/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
```
2022-04-05 20:30:17 +02:00
2022-04-25 22:23:58 +02:00
Le rendre exécutable :
`chmod +x checkrestart.sh`
2022-02-19 15:50:21 +01:00
2022-04-25 22:23:58 +02:00
2022-05-26 22:46:55 +02:00
Configurer du cron :
2022-04-25 22:23:58 +02:00
`$ crontab -e`
2022-05-02 21:58:41 +02:00
et insérer les lignes suivantes dans le fichier :
2022-04-25 22:23:58 +02:00
```
@reboot /home/etherpad/run.sh > /dev/null
* * * * * /home/etherpad/checkrestart.sh
```
2022-05-26 22:46:55 +02:00
# Installation du proxy nginx
2022-02-19 15:50:21 +01:00
2022-05-02 21:58:41 +02:00
Installer nginx et préparer le dossier de logs :
2022-02-19 15:54:06 +01:00
```
2022-02-19 15:50:21 +01:00
# apt install nginx
# mkdir /var/log/nginx/pad.chalec.org
# chown www-data:www-data /var/log/nginx/pad.chalec.org
2022-02-19 15:54:06 +01:00
```
2022-05-26 22:46:55 +02:00
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 :
2022-02-19 15:54:06 +01:00
```
2022-05-26 22:46:55 +02:00
# cp /home/etherpad/pad.git/conf/nginx/conf.d/* /etc/nginx/conf.d/
2022-02-19 15:50:21 +01:00
# cd /etc/nginx/sites-enabled
2022-05-26 22:46:55 +02:00
# ln -s ../sites-available/etherpad .
2022-02-19 15:54:06 +01:00
```
2022-05-26 22:46:55 +02:00
Créer les certificats :
```
# certbot certonly --nginx -d pad.chalec.org
```
2022-02-19 15:50:21 +01:00
2022-05-02 21:58:41 +02:00
Démarrer le service nginx :
2022-05-26 22:46:55 +02:00
```
# systemctl enable --now nginx
```
2022-02-19 15:50:21 +01:00
2022-05-02 21:58:41 +02:00
Ouvrir les ports du firewall :
2022-05-26 22:46:55 +02:00
```
# ufw allow proto tcp port 80,443
```
2022-02-19 15:50:21 +01:00
2022-04-25 22:23:58 +02:00
Vérifier que le service répond en se rendant aux addresses suivantes :
2022-04-05 20:30:17 +02:00
```
2022-02-19 15:50:21 +01:00
http://pad.chalec.org
https://pad.chalec.org
2022-04-05 20:30:17 +02:00
```
2022-02-19 15:50:21 +01:00
2022-05-26 22:46:55 +02:00
# Installation des Greffons etherpad
2022-04-05 20:30:17 +02:00
2022-05-26 22:46:55 +02:00
Pour complémenter l'installation de base d'Etherpad, il faut ajouter quelques
2022-04-25 22:23:58 +02:00
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
2022-05-26 22:46:55 +02:00
## Export libreoffice
Pour supporter l'export au format ODT, installer libreoffice :
2022-04-25 22:23:58 +02:00
```
# apt install libreoffice-nogui
```
2022-05-26 22:46:55 +02:00
Puis configurer le chemin du binaire dans le `settings.json` :
2022-04-25 22:23:58 +02:00
```
"soffice": "/usr/bin/soffice",
```
Ajouter le module de table des matières "table_of_contents" et configurer pour le
2022-05-26 22:46:55 +02:00
désactiver par défaut (bug upstream, configuration non prise en compte, cf. #1 ) :
2022-04-25 22:23:58 +02:00
```
"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).
2022-05-26 22:46:55 +02:00
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.
2022-04-25 22:23:58 +02:00
```
"ep_delete_after_delay": {
"delay": 15811200, // 6 * 30.5 * 24 * 3600
"loop": false,
"deleteAtStart": true,
"text": ""
},
```
2022-05-26 22:46:55 +02:00
# Securité et limites
2022-04-25 22:23:58 +02:00
2022-05-26 22:57:44 +02:00
Paramétrer un buffer HTTP suffisamment grand pour notament importer des pads jusqu'à 20Mo dans le fichier `/home/etherpad/etherpad-lite/settings.json` :
2022-04-25 22:23:58 +02:00
```
2022-05-26 22:57:44 +02:00
socketIo {
2022-04-25 22:23:58 +02:00
2022-05-26 22:57:44 +02:00
[...]
"maxHttpBufferSize": 20000000
```
Puis augmenter, dans la même section, la limite sur import et export :
```
2022-04-25 22:23:58 +02:00
"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
},
```
2022-04-05 20:30:17 +02:00
2022-02-19 15:50:21 +01:00
2022-05-26 22:46:55 +02:00
# Chalec infos
2022-02-19 15:56:30 +01:00
2022-05-02 21:58:41 +02:00
Intaller Java :
2022-05-26 22:46:55 +02:00
```
# apt install openjdk-jre-headless
```
2022-02-19 15:50:21 +01:00
2022-05-02 21:58:41 +02:00
Ajouter l'utilisateur statoolinfos :
2022-05-26 22:46:55 +02:00
```
# adduser statoolinfos
```
2022-04-25 22:23:58 +02:00
2022-05-26 22:46:55 +02:00
Ajouter l'utilisateur statoolinfos au group admin pour qu'il puisse lire les logs :
2022-02-19 15:54:06 +01:00
```
2022-02-19 15:50:21 +01:00
# adduser statoolinfos admin
2022-05-26 22:46:55 +02:00
```
Se connecter avec le nouvel utilisateur :
2022-05-26 22:57:44 +02:00
```
2022-04-05 20:30:17 +02:00
# su - statoolinfos
$ cd
2022-02-19 15:54:06 +01:00
```
2022-04-25 22:23:58 +02:00
Télécharger le binaire (jar) Statoolinfos à l'adresse suivante :
2022-05-26 22:46:55 +02:00
`https://forge.devinsy.fr/devinsy/statoolinfos/releases`
2022-02-19 15:50:21 +01:00
2022-05-26 22:46:55 +02:00
Décompresser dans `/home/statoolinfos/statool-<version>`
2022-04-05 20:30:17 +02:00
2022-04-25 22:23:58 +02:00
Faire un lien généric pour avoir un nom de dossier invariant "statoolinfos":
2022-02-19 15:54:06 +01:00
`$ ln -s statoolinfos-<verion> statoolinfos`
2022-02-19 15:50:21 +01:00
2022-05-26 22:57:44 +02:00
Restaurer la configuration statoolinfos
2022-05-26 22:46:55 +02:00
```
2022-05-26 22:57:44 +02:00
cp -r /home/etherpad/pad.git/www/ /var/
2022-05-26 22:46:55 +02:00
cp /home/etherpad/pad.git/conf/statoolinfos/pad.chalec.org.conf /var/www/html/.well-known/statoolinfos/
```
2022-02-19 15:56:30 +01:00
2022-05-26 22:46:55 +02:00
Lancer une génération maximale des métriques :
```
/home/statoolinfos/statoolinfos/statoolinfos.sh probe -full /hhome/statoolinfos/statoolinfos/conf/pad.chalec.org.conf
```
2022-02-19 15:50:21 +01:00
2022-05-26 22:46:55 +02:00
Configurer le cron quotidien :
```
$ crontab -e
2022-02-19 15:56:30 +01:00
2022-05-26 22:46:55 +02:00
23 55 * * * /home/statoolinfos/statoolinfos/statoolinfos.sh probe -previousday /home/statoolinfos/statoolinfos/conf/pad.chalec.org.conf >> /home/statoolinfos/statoolinfos.log
```