From 13d6b1fe91c5af2b7ff7cc805147b577a6ad7438 Mon Sep 17 00:00:00 2001 From: Quentin Duchemin <quentinduchemin@tuta.io> Date: Wed, 27 May 2020 00:43:02 +0200 Subject: [PATCH] [Etherpad] Add CHANGELOG, update README --- pica-etherpad/CHANGELOG.md | 28 +++++++++++++++++ pica-etherpad/README.md | 61 ++++++++++++++++++++++++++++++-------- 2 files changed, 77 insertions(+), 12 deletions(-) create mode 100644 pica-etherpad/CHANGELOG.md diff --git a/pica-etherpad/CHANGELOG.md b/pica-etherpad/CHANGELOG.md new file mode 100644 index 00000000..4b2c0dcb --- /dev/null +++ b/pica-etherpad/CHANGELOG.md @@ -0,0 +1,28 @@ +## Version 1.8.4 + +Double bump : +* Vers la 1.8.3 : https://github.com/ether/etherpad-lite/releases/tag/1.8.3 +* Vers la 1.8.4 : https://github.com/ether/etherpad-lite/releases/tag/1.8.4 + +Concernant notre instance : + +### Base de données : +* [Changement de la taille du cache d'index](https://gitlab.utc.fr/picasoft/projets/dockerfiles/-/commit/8f1056face52a5e37d71028acbc5750c777bde82), la performance devrait être **grandement** améliorée + +### Application : +* Nouveau plugin pour retourner à la page d'accueil (bouton tout à gauche) +* Nouveau plugin d'administration, pour lister les pads, les supprimer, voir le nombre d'auteur, etc +* Nouveau plugin permettant d'envoyer une annonce à tous les utilisateurs connectés, utile pour les mises à jour +* On peut de nouveau créer des pads sur l'instance principale ; la rétention est de deux ans, évolution à surveiller. +* Gestion de l'instance week et principale avec la CI et avec la même image Docker (configuration différente, versionnée sur le dépôt) +* Suppression des plugins obsolètes/inutiles, en particulier les tables, le comptage des mots, "page view", taille de police +* La même page d'accueil est utilisée pour les deux instances. + +### Technique : +* Passage des liens aux réseaux Docker pour une meilleure isolation +* Durée du HEALTHCHECK diminuée pour que Traefik prenne en compte Etherpad plus rapidement +* Suppression effective des pads ayant dépassé la durée de rétention **une fois par semaine**, pour éviter des problèmes de performances ; cf [Framasoft](https://framagit.org/framasoft/Etherpad/pad_delete_after_delay), qui sur le plugin concerné indique : +> But we have so many pads (more than 30k on some instances) that the plugin fails to work correctly: it causes a really huge load on the etherpad processus at start and stuck it. + +* Du coup, ne pas activer la suppression des pads ayant dépassé la durée de rétention à chaque redémarrage, pour éviter que ça prenne 15 min à démarrer, lors d'un crash par exemple. +* Tous les paramètres sont pris en charge par des variables d'environnement : meilleur nommage et ajustements des fichiers settings.json diff --git a/pica-etherpad/README.md b/pica-etherpad/README.md index e25654ca..e8a3932b 100644 --- a/pica-etherpad/README.md +++ b/pica-etherpad/README.md @@ -1,8 +1,10 @@ -# Pica Etherpad +# Picapad Ce dossier contient une image d'Etherpad Lite maintenue par l'association. -Tous les fichiers présents ici suffisent à lancer correctement les deux conteneurs (application et base de données), si un Traefik tourne sur la machine cible. +Le Docker Compose associé permet de lancer deux instances : une principale et une hebdomadaire. La seule différence est la durée de la politique de rétention. + +Tous les fichiers présents ici suffisent à lancer correctement les conteneurs (application et base de données), si un Traefik tourne sur la machine cible. <!-- TOC depthFrom:2 depthTo:6 withLinks:1 updateOnSave:1 orderedList:0 --> @@ -13,30 +15,65 @@ Tous les fichiers présents ici suffisent à lancer correctement les deux conten <!-- /TOC --> +## Mise à jour de l'image + +Pour mettre à jour la version d'Etherpad, il faut simplement modifir la variable `ETHERPAD_VERSION_BUILD` du [Dockerfile](./Dockerfile) et le tag dans l'image dans [docker-compose.yml](./docker-compose.yml). + +L'image est construite automatiquement grâce à la CI. + +Notez vos changements dans le fichier [CHANGELOG.md](./CHANGELOG.md). + +Avant de mettre à jour le service en production, pensez à prévenir tous les utilisateurs connectés : +* Sur https://pad.picasoft.net/admin/message_to_all pour l'instance principale +* Sur https://week.pad.picasoft.net/admin/message_to_all pour l'instance hebdomadaire + +Le mot de passe administrateur est défini dans le fichier de secrets. + ## Configuration -Etherpad se configure au lancement du conteneur avec des variables d'environnement. Elles sont présentes à trois endroits : +Etherpad se configure au lancement du conteneur avec des variables d'environnement. Elles sont présentes à deux endroits : -* Le fichier `etherpad-app.secrets.example` contient les variables privées, par exemple le mot de passe de l'administrateur Etherpad, les identifiants de base de données... Copiez le fichier en enlevant `.example` et remplacez les valeurs. Ce fichier est importé depuis `docker-compose.yml`. -* Le fichier `etherpad-db.secrets.example` contient les variables nécéssaires pour créer un utilisateur de la base de données. Les identifiants doivent correspondre à ceux du fichier `etherpad-app.secrets`. -* Le reste des variables d'environnement non-confidentielles est affecté directement dans le fichier `docker-compose.yml`, via la directive `environment`. +* Les fichiers dans [secrets](./secrets) contiennent les variables nécessaires pour créer une base de données, un utilisateur et stocker les mots de passe. +* Le reste des variables d'environnement non-confidentielles est affecté directement dans le [docker-compose.yml](./docker-compose.yml), via la directive `environment`. -Toutes les paramètres sont configurables via l'environnement. On pourra regarder le fichier [settings.json](./settings.json) pour une référence. Ce fichier contient uniquement les valeurs par défaut. La configuration doit avoir lieu dans le [docker-compose.yml](./docker-compose.yml). Pour des configurations vraiment très durables et/ou très spécifiques, on pourra modifier [settings.json](./settings.json) et reconstruire l'image. +Lors d'un premier lancement, sur la machine cible, après avoir récupéré une version à jour de ce dépôt, copiez les fichiers en enlevant `.example` et remplacez les valeurs. Ces fichiers sont importés depuis [docker-compose.yml][./docker-compose.yml]. Attention, les secrets doivent être **différents** pour les deux instances. -## Mise à jour de l'image +Toutes les paramètres sont configurables via l'environnement. On pourra regarder le fichier [settings.json](./settings.json) pour une référence. Des explications sont [disponibles ici](https://github.com/ether/etherpad-lite/blob/develop/settings.json.docker). Ce fichier contient uniquement les valeurs par défaut. La configuration doit avoir lieu dans le [docker-compose.yml](./docker-compose.yml). -Pour mettre à jour la version d'Etherpad, il faut simplement modifir la variable `ETHERPAD_VERSION_BUILD` du Dockerfile et le nom dans l'image dans Docker Compose. +## Séparation des instances -L'image est construite automatiquement grâce à la CI. +Le [docker-compose.yml](./docker-compose.yml) proposé inclut deux versions : une principale, usuellement sur [pad.picasoft.net](https://pad.picasoft.net), et une hebdomadaire, usuellement sur [week.pad.picasoft.net](https://week.pad.picasoft.net). + +La procédure de lancement classique avec `docker_prod.sh` lancera les deux instances sur la même machine. + +Pour les lancer sur différentes machines, on n'utilisera pas ce script mais on lancera à la main : + +```bash +# Pour l'instance principale, sur la machine A +docker-compose up -d etherpad-app && docker-compose logs -f +# Pour l'instance hebdomadaire, sur la machine B +docker-compose up -d etherpad-week-app && docker-compose logs -f +``` ## Ajout d'un plugin Etherpad maintient une [liste officielle des plugins](https://static.etherpad.org/plugins.html). -Pour installer un plugin, on évitera de passer par l'interface administrateur et on préfèrera modifier le [Dockerfile](Dockerfile) directement. +Pour installer un plugin, on évitera de passer par l'interface administrateur et on préfèrera modifier le [Dockerfile](./Dockerfile) directement. Il suffit pour ce faire d'ajouter le nom du package npm dans le `Dockerfile`, sur la ligne `ARG ETHERPAD_PLUGINS`, en respectant l'ordre alphabétique pour la facilité de lecture. ## Page d'accueil -La page d'accueil est présente dans le dossier `landing-page` et est construite (*i.e.* compilée, minifiée...) automatiquement lors du build de l'image. +La page d'accueil est présente dans le dossier [landing-page](./landing-page) et est construite (*i.e.* compilée, minifiée...) automatiquement lors du build de l'image. + +La même page d'accueil est utilisée pour les deux instances. Pour la modifier effectivement, il faudra pousser les modifications et reconstruire l'image en lançant manuellement le build via la CI. + +## Administration + +Les tâches d'administration se réalisent sur une interface dédiée : +* https://pad.picasoft.net/admin pour l'instance principale +* https://week.pad.picasoft.net/admin pour l'instance hebdomadaire + +Le mot de passe admin se trouve dans le fichier de secrets. +On peut notamment inspecter la configuration, lister les pads, les supprimer et envoyer un message aux utilisateurs connectés. -- GitLab