# Picapad Ce dossier contient une image d'Etherpad Lite maintenue par l'association. 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 --> - [Configuration](#configuration) - [Ajouter ou modifier un paramètre](#ajouter-ou-modifier-un-paramtre) - [Mise à jour de l'image](#mise-jour-de-limage) - [Ajout d'un plugin](#ajout-dun-plugin) <!-- /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 à deux endroits : * 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`. 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. 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). ## Séparation des instances 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. 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](./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.