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