Documentation initiale (prise de Chalec)

This commit is contained in:
Adrien Bourmault 2023-06-14 17:15:39 +02:00
parent bb8970e306
commit 4bd62ba763
No known key found for this signature in database
GPG Key ID: 6EB408FE0ACEC664
1 changed files with 338 additions and 547 deletions

277
README.md
View File

@ -1,571 +1,362 @@
# Introduction # Introduction
Documentation à destination d'un administrateur de service pad de Chalec.
Documentation à destination d'un administrateur de service pad de Libre en Communs.
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 Il sera placé en amont, un service nginx qui gèrera le traffic TLS et ses
certificats. 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 # apt install postgresql postgresql-client
# systemctl enable --now postgresql # 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. Éditer le fichier `/etc/postgresql/13/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 host all all 127.0.0.0/24 md5
``` ```
Créer l'utilisateur et la base : Créer l'utilisateur et la base :
``` ```
# su - postgres # su - postgres
$ createuser pad $ createuser pad
$ createdb pad -O pad $ createdb pad -O pad
$ psql pad $ psql pad
ALTER USER pad WITH PASSWORD '<MOTDEPASSE>' ; ALTER USER pad WITH PASSWORD '<MOTDEPASSE>' ;
ALTER ROLE; ALTER ROLE;
\q \q
``` ```
# Installer Etherpad # Installer Etherpad
Créer l'utilisateur d'Etherpad : Créer l'utilisateur d'Etherpad :
``` ```
# adduser etherpad # adduser etherpad
``` ```
Connecter avec l'utilisateur etherpad : Connecter avec l'utilisateur etherpad :
``` ```
# su - etherpad # su - etherpad
``` ```
Suivre les recommandations de la documentation officielle d'Etherpad pour installer sur Debian : Suivre les recommandations de la documentation officielle d'Etherpad pour installer sur Debian :
``` ```
$ cd /home/etherpad $ cd /home/etherpad
$ curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash - $ curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -
# apt install -y nodejs # apt install -y nodejs
$ git clone --branch master https://github.com/ether/etherpad-lite.git $ git clone --branch master https://github.com/ether/etherpad-lite.git
``` ```
# Récupérer les ressoures du pad Chalec # Récupérer les ressoures du pad Libre en Communs
Cloner le dépot Pad de Chalec avec l'utilisateur etherpad :
Cloner le dépot Pad de Libre en Communs avec l'utilisateur etherpad :
``` ```
$ git clone https://git.a-lec.org/a-lec/commissions/infrastructure/pad
$ git clone https://git.a-lec.org/a-lec/commissions/chalec/pad
``` ```
# Configuration Etherpad # Configuration Etherpad
Le fichier `/home/etherpad/pad.git/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 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. 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, Dans le cas contraire, si vous souhaitez conserver votre fichier initial,
veuillez suivre pas à pas cette section. veuillez suivre pas à pas cette section.
Les instructions suivantes s'appliquent au fichier `/home/etherpad/etherpad-lite/settings.json` : Les instructions suivantes s'appliquent au fichier `/home/etherpad/etherpad-lite/settings.json` :
``` ```
$ cd /homer/etherpad/etherpad-lite $ cd /homer/etherpad/etherpad-lite
``` ```
Commenter ou supprimer la BDD par défaut : Commenter ou supprimer la BDD par défaut :
``` ```
/* /*
"dbType": "dirty", "dbType": "dirty",
"dbSettings": { "dbSettings": {
"filename": "var/dirty.db" "filename": "var/dirty.db"
}, },
*/ */
``` ```
Décommenter la section `postgres` et compléter avec les secrets : Décommenter la section `postgres` et compléter avec les secrets :
``` ```
"dbType" : "postgres", "dbType" : "postgres",
"dbSettings" : { "dbSettings" : {
"user": "pad", "user": "pad",
"host": "localhost", "host": "localhost",
"port": 5432, "port": 5432,
"password": "<MOTDEPASSE>", "password": "<MOTDEPASSE>",
"database": "pad", "database": "pad",
"charset": "utf8mb4" "charset": "utf8mb4"
}, },
``` ```
Indiquer à 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 : est sécurisée même si elle dialogue en HTTP, sans TLS :
``` ```
"trustProxy": true, "trustProxy": true,
``` ```
Configurer l'accès admin web : Configurer l'accès admin web :
``` ```
"users": { "users": {
"admin666": { "admin666": {
"password": "<password>", "password": "<password>",
"is_admin": true "is_admin": true
}, },
}, },
``` ```
Pour la réalisation des tests et la mise en place du pad, il est fortement conseillé 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 de régler le paramètre "minify" à false. Dans le cas contraire, le temps de chargement
du premier pad peut-être très long. Penser à reactiver ce paramètre si besoin pour réduire le traffic web. du premier pad peut-être très long. Penser à reactiver ce paramètre si besoin pour réduire le traffic web.
``` ```
"minify": false, "minify": false,
``` ```
Personnaliser le titre : Personnaliser le titre :
``` ```
"title": "Pad Libre en Communs",
"title": "Pad Chalec",
``` ```
Placer la favicon dans le dossier `/home/etherpad` et la référencer : Placer la favicon dans le dossier `/home/etherpad` et la référencer :
```
"favicon": "../pad.a-lec.org.svg",
``` ```
"favicon": "../pad.chalec.org.svg", Ajouter le skin Libre en Communs qui est basé sur le skin par défaut :
``` ```
Ajouter le skin Chalec qui est basé sur le skin par défaut :
```
$ cd /home/etherpad/etherpad-lite/ $ cd /home/etherpad/etherpad-lite/
$ cp -r conf/etherpad-lite/skins/Libre en Communs src/static/skins
$ cp -r conf/etherpad-lite/skins/chalec src/static/skins
``` ```
et l'activer dans la configuration : et l'activer dans la configuration :
``` ```
"skinName": "Libre en Communs",
"skinName": "chalec",
``` ```
Personnaliser le texte par défaut de la page d'un nouveau pad : Personnaliser le texte par défaut de la page d'un nouveau pad :
``` ```
"defaultPadText" : " <---- Tapez votre texte ici et libre à vous d'effacer cette \ "defaultPadText" : " <---- Tapez votre texte ici et libre à vous d'effacer cette \
page d'informations.\n\nBienvenue sur pad.a-lec.org, un service Libre en Communs, basé sur le \
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 \ 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\ 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\ 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\ . 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\ 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\ 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\ 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\ 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\ 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 \ 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\ 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\ 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\ ales d'Utilisation : \nEn utilisant ce service, vous acceptez tacitement les Conditio\
ns Générales d'Utilisation (CGU) des services Libre en Communs (https://www.a-lec.org/CGU) qui\
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\ régissent formellement le service et priment sur toutes autres explications fournies\
sur cette page.\n\nLibrement, \nL'équipe Libre en Communs (https://www.a-lec.org),\nCandidat \
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@a-lec.org\nxmpp\
:Libre en Communs@salons.a-lec.org?join",
CHATONS par Libre en Communs (https://a-lec.org)\nmailto:contact+pad@chalec.org\nxmpp\
:chalec@salons.a-lec.org?join",
``` ```
# Démarrer le service Etherpad # Démarrer le service Etherpad
Tester le démarrer du service etherpad-lite : Tester le démarrer du service etherpad-lite :
`$ src/bin/run.sh` `$ src/bin/run.sh`
Vérifier que le démarrage se passe sans encombre. Puis intérrompre le processus avec : CTRL-C Vérifier que le démarrage se passe sans encombre. Puis intérrompre le processus avec : CTRL-C
Copier le fichier de service systemd : Copier le fichier de service systemd :
``` ```
cp /home/etherpad/pad.git/conf/systemd/etherpad.service /etc/systemd/system/ cp /home/etherpad/pad.git/conf/systemd/etherpad.service /etc/systemd/system/
``` ```
Activer et démarrer le service : Activer et démarrer le service :
``` ```
systemctl enable --now etherpad systemctl enable --now etherpad
``` ```
Vérifier que le service tourne : Vérifier que le service tourne :
``` ```
systemctl status etherpad systemctl status etherpad
``` ```
# Installation du proxy nginx # Installation du proxy nginx
Installer nginx et préparer le dossier de logs : Installer nginx et préparer le dossier de logs :
``` ```
# apt install nginx # apt install nginx
# mkdir /var/log/nginx/pad.a-lec.org
# mkdir /var/log/nginx/pad.chalec.org # chown www-data:www-data /var/log/nginx/pad.a-lec.org
# chown www-data:www-data /var/log/nginx/pad.chalec.org
``` ```
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 : 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/ # cp /home/etherpad/pad.git/conf/nginx/conf.d/* /etc/nginx/conf.d/
# cd /etc/nginx/sites-enabled # cd /etc/nginx/sites-enabled
# ln -s ../sites-available/etherpad . # ln -s ../sites-available/etherpad .
``` ```
Créer les certificats : Créer les certificats :
``` ```
# certbot certonly --nginx -d pad.a-lec.org
# certbot certonly --nginx -d pad.chalec.org
``` ```
Démarrer le service nginx : Démarrer le service nginx :
``` ```
# systemctl enable --now nginx # systemctl enable --now nginx
``` ```
Ouvrir les ports du firewall : 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 : Vérifier que le service répond en se rendant aux addresses suivantes :
``` ```
http://pad.a-lec.org
http://pad.chalec.org https://pad.a-lec.org
https://pad.chalec.org
``` ```
# Installation des Greffons etherpad # Installation des Greffons etherpad
Pour complémenter l'installation de base d'Etherpad, il faut ajouter quelques
Pour complémenter l'installation de base d'Etherpad, il faut ajouter quelques
greffons. greffons.
Installer les greffons suivants en se rendant sur la page d'administration Installer les greffons suivants en se rendant sur la page d'administration
https://pad.a-lec.org/admin :
https://pad.chalec.org/admin :
- adminpads2 : lister les pads et par exemple de les supprimer - adminpads2 : lister les pads et par exemple de les supprimer
- align : aligner à gauche / droite / centrer - align : aligner à gauche / droite / centrer
- author_hover : afficher l'auteur d'un texte en survolant avec la souris - 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_after_delay : supprimer automatiquement un pad après un certain délais d'inactivité
- delete_empty_pads : supprimer automatiquement un pad vide - delete_empty_pads : supprimer automatiquement un pad vide
- font_color : utiliser des couleurs dans le texte - font_color : utiliser des couleurs dans le texte
- font_size : utiliser des polices de différentes tailles - font_size : utiliser des polices de différentes tailles
- headings2 : titres et sous-titres - headings2 : titres et sous-titres
- table_of_contents : table des matières - table_of_contents : table des matières
- spellcheck - spellcheck
- markdown - markdown
Note : il existe une méthode pour installer cela en ligne de commande. @todo Note : il existe une méthode pour installer cela en ligne de commande. @todo
## Export libreoffice ## Export libreoffice
Pour supporter l'export au format ODT, installer libreoffice : Pour supporter l'export au format ODT, installer libreoffice :
``` ```
# apt install libreoffice-nogui # apt install libreoffice-nogui
``` ```
Puis configurer le chemin du binaire dans le `settings.json` : Puis configurer le chemin du binaire dans le `settings.json` :
``` ```
"soffice": "/usr/bin/soffice", "soffice": "/usr/bin/soffice",
``` ```
Ajouter le module de table des matières "table_of_contents" et configurer pour le 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": { "ep_toc": {
"disable_by_default": true "disable_by_default": true
}, },
``` ```
Ajouter le module de suppression automatique des pads inactif "delete_after_delay" Ajouter le module de suppression automatique des pads inactif "delete_after_delay"
et le configurer à J + six mois (temps en secondes). et le configurer à J + six mois (temps en secondes).
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. 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": { "ep_delete_after_delay": {
"delay": 15811200, // 6 * 30.5 * 24 * 3600 "delay": 15811200, // 6 * 30.5 * 24 * 3600
"loop": false, "loop": false,
"deleteAtStart": true, "deleteAtStart": true,
"text": "" "text": ""
}, },
``` ```
# Securité et limites # Securité et limites
Paramétrer un buffer HTTP suffisamment grand pour notament importer des pads jusqu'à 20Mo dans le fichier `/home/etherpad/etherpad-lite/settings.json`: Paramétrer un buffer HTTP suffisamment grand pour notament importer des pads jusqu'à 20Mo dans le fichier `/home/etherpad/etherpad-lite/settings.json`:
``` ```
socketIo { socketIo {
[...] [...]
"maxHttpBufferSize": 20000000 "maxHttpBufferSize": 20000000
``` ```
Puis augmenter, dans la même section, la limite sur import et export : Puis augmenter, dans la même section, la limite sur import et export :
``` ```
"importExportRateLimiting": { "importExportRateLimiting": {
// duration of the rate limit window (milliseconds) // duration of the rate limit window (milliseconds)
"windowMs": 90000, "windowMs": 90000,
// maximum number of requests per IP to allow during the rate limit window // maximum number of requests per IP to allow during the rate limit window
"max": 10 "max": 10
}, },
``` ```
# Chalec infos
# Libre en Communs infos
Intaller Java : Intaller Java :
``` ```
# apt install openjdk-jre-headless # apt install openjdk-jre-headless
``` ```
Ajouter l'utilisateur statoolinfos : Ajouter l'utilisateur statoolinfos :
``` ```
# adduser statoolinfos # adduser statoolinfos
``` ```
Ajouter l'utilisateur 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 # adduser statoolinfos admin
``` ```
Se connecter avec le nouvel utilisateur : Se connecter avec le nouvel utilisateur :
``` ```
# su - statoolinfos # su - statoolinfos
$ cd $ cd
``` ```
Télécharger le binaire (jar) Statoolinfos à l'adresse suivante : 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/statoolinfos/statool-<version>` Décompresser dans `/home/statoolinfos/statool-<version>`
Faire un lien générique pour avoir un nom de dossier invariant "statoolinfos" : Faire un lien générique pour avoir un nom de dossier invariant "statoolinfos" :
``` ```
$ ln -s statoolinfos-<verion> statoolinfos $ ln -s statoolinfos-<verion> statoolinfos
``` ```
Copier les fichiers html : Copier les fichiers html :
``` ```
cp -r /home/etherpad/pad.git/html/ /var/www/ cp -r /home/etherpad/pad.git/html/ /var/www/
``` ```
Restaurer la configuration statoolinfos : Restaurer la configuration statoolinfos :
``` ```
cp /home/etherpad/pad.git/conf/statoolinfos/pad.a-lec.org.conf /home/statoolinfos/conf/
cp /home/etherpad/pad.git/conf/statoolinfos/pad.chalec.org.conf /home/statoolinfos/conf/
``` ```
Lancer une génération maximale des métriques : Lancer une génération maximale des métriques :
```
/home/statoolinfos/statoolinfos/statoolinfos.sh probe -full /home/statoolinfos/statoolinfos/conf/pad.a-lec.org.conf
``` ```
/home/statoolinfos/statoolinfos/statoolinfos.sh probe -full /home/statoolinfos/statoolinfos/conf/pad.chalec.org.conf
```
Configurer le cron quotidien : Configurer le cron quotidien :
``` ```
$ crontab -e $ 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.a-lec.org.conf >> /home/statoolinfos/statoolinfos.log
``` ```