# Service pad.libre-service.eu Le service pad.libre-service.eu est un service de traitement de texte collaboratif basé sur le logiciel Etherpad-lite : https://etherpad.org/ # Installation Basée sur : - https://github.com/ether/etherpad-lite#manual-install - https://framacloud.org/fr/cultiver-son-jardin/etherpad ## Prérequis système Configuration du hostname : ``` hostname pad.libre-service.eu ``` Personnalisation du prompt dans .bashrc : ``` PS1='${debian_chroot:+($debian_chroot)}\u@\H:\w\$ ' ``` Ouvrir les ports nécessaires : ``` apt install ufw ufw allow 'ssh' ufw enable ``` ## Prérequis logiciels ### Git Installation de Git pour cloner le code : ``` apt install git ``` ### Postgresql Base de données : ``` apt install postgresql postgresql-contrib ``` D'après la documentation d'installation de Gitea : > PostgreSQL uses md5 challenge-response encryption scheme for password authentication by default. > Nowadays this scheme is not considered secure anymore. Use SCRAM-SHA-256 scheme instead by editing > the postgresql.conf configuration file on the database server to: > > password_encryption = scram-sha-256 > > Restart PostgreSQL to apply the setting. Le conseil semble judicieux donc éditer le fichier `/etc/postgresql/13/main/postgresql.conf` : ``` #password_encryption = md5 # md5 or scram-sha-256 password_encryption = scram-sha-256 ``` Et redémarrer le service : ``` systemctl restart postgresql.service ``` ### Nodejs Etherpad nécessite Node.js >= 12.17.0. Vérifier que la version de Debian Stable est compatible : ``` apt-cache show nodejs |grep Version ``` Installer : ``` apt install nodejs ``` ### Npm Etherpad nécessite Npm. Installer `npm` : ``` apt install npm ``` ## Déploiement ### Préparation de la base de données Créer un utilisateur (« role » en langage Pgsql) : ``` su -c "psql -c \"CREATE ROLE etherpad WITH LOGIN PASSWORD 'NJPvjmneADaYgdShrU47bL';\"" - postgres su -c "psql -c \"\du+\"" - postgres ``` Créer une base de données : ``` su -c "psql -c \"CREATE DATABASE etherpad WITH OWNER etherpad TEMPLATE template0 ENCODING UTF8 LC_COLLATE 'fr_FR.UTF-8' LC_CTYPE 'fr_FR.UTF-8';\"" - postgres su -c "psql -c \"\l\"" - postgres ``` Donner l'accès en éditant le ficher `/etc/postgresql/13/main/pg_hba.conf` : ``` local etherpad etherpad scram-sha-256 ``` Redémarrer le service : ``` systemctl restart postgresql.service ``` ### Création d'un utilisateur système dédié Créer un compte système dédié : ``` adduser --disabled-password --system --group --home /srv/etherpad/ --shell /bin/bash etherpad ``` ### Déploiement du code Déployer le code : ``` cd /var/www git clone --branch master https://github.com/ether/etherpad-lite.git pad.libre-service.eu chown -R etherpad:etherpad /var/www/pad.libre-service.eu ``` Créer le fichier de configuration : ``` su etherpad -c "cd /var/www/pad.libre-service.eu/ && cp settings.json.template settings.json" ``` Configurer dans `/var/www/pad.libre-service.eu/settings.json` : ``` - "dbType" : "dirty", - "dbSettings" : { - "filename" : "var/dirty.db" - }, "dbType" : "postgres", "dbSettings" : { "user": "etherpad", "host": "localhost", "port": 5432, "password": "password", "database": "etherpad", "charset": "utf8mb4" }, […] "trustProxy": true, […] "users": { "admin": { "password": "xxxxxxxxxxxxxxxx", "is_admin": true }, ``` Premier lancement : ``` su etherpad -c "cd /var/www/pad.libre-service.eu/ && ./src/bin/run.sh" ``` Neutraliser les vulnéralités : ``` su etherpad -c "cd /var/www/pad.libre-service.eu/ && npm i --package-lock-only" su etherpad -c "cd /var/www/pad.libre-service.eu/ && npm audit" su etherpad -c "cd /var/www/pad.libre-service.eu/ && npm audit fix" su etherpad -c "cd /var/www/pad.libre-service.eu/ && npm audit" ``` ## Configuration Systemd Créer le fichier `/etc/systemd/system/etherpad.service` : ``` [Unit] Description=Etherpad-lite, the collaborative editor. After=syslog.target network.target postgresql.target [Service] Type=simple User=etherpad Group=etherpad WorkingDirectory=/var/www/pad.libre-service.eu/ Environment=NODE_ENV=production ExecStart=/var/www/pad.libre-service.eu/bin/fastRun.sh Restart=always [Install] WantedBy=multi-user.target ``` Activer le fichier : ``` systemctl daemon-reload ``` Next, start the Etherpad service and enable it to start at system reboot with the following command: ``` systemctl start etherpad systemctl status etherpad ``` Activer le démarrage automatique : ``` systemctl enable etherpad ``` ## Configuration Apache Documentation officielle : https://github.com/ether/etherpad-lite/wiki/How-to-put-Etherpad-Lite-behind-a-reverse-Proxy#apache Activer les modules pour le proxy : ``` a2enmod proxy a2enmod proxy_http a2enmod rewrite apachectl configtest systemctl restart apache2 ``` Configurer le site web : ``` ProxyVia On ProxyRequests Off ProxyPreserveHost On ProxyPass http://localhost:9001/ retry=0 timeout=30 ProxyPassReverse http://localhost:9001/ # This is needed to handle the websocket transport through the proxy, since # etherpad does not use a specific sub-folder, such as /ws/ to handle this kind of traffic. # Taken from https://github.com/ether/etherpad-lite/issues/2318#issuecomment-63548542 # Thanks to beaugunderson for the semantics RewriteEngine On RewriteCond %{QUERY_STRING} transport=websocket [NC] RewriteRule /(.*) ws://localhost:9001/socket.io/$1 [P,L] ProxyPass http://localhost:9001/socket.io retry=0 timeout=30 ProxyPassReverse http://localhost:9001/socket.io Options FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all ``` ## Personnalisation ### Installation de modules Installer des modules élémentaires : ``` su - etherpad cd /var/www/pad.libre-service.eu/ npm install --no-save --legacy-peer-deps ep_adminpads2 ep_align ep_author_hover ep_delete_empty_pads ep_font_color ep_font_size ep_headings2 ep_spellcheck ep_table_of_contents ``` Sous réserve de mise àjour : ep_delete_after_delay ### Ajout export ODF La FAQ officielle indique comment faire : https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-with-AbiWord Installer LibreOffice de façon non grahique : ``` apt install libreoffice-nogui ``` Configurer dans /var/www/pad.libre-service.eu/settings.json : ``` "soffice" : "/usr/bin/soffice" ``` ### Augmentation de la taille d'import Lors de l'import d'un gros pad, les limites de téléversement peuvent bloquer l'import. Augmenter les limites de téléversement : ``` TODO ``` ### Table des matières cachée par défaut Sur les téléphones portables, l'affichage de la table des matières peut être inconfortable. Cacher par défaut la table des matières : ``` TODO ``` ### Rendu visuel de la table des matières Par défaut, le rendu visuel de la table des matières connait des points améliorables : - décoration du texte (souligné) ; - largeur de la table des matières : - taille de la fonte. ``` TODO ``` # Mise à jour Documentation: ``` To update to the latest released version, execute git pull origin. The next start with src/bin/run.sh will update the dependencies. ``` So proceed: ``` systemctl stop etherpad su etherpad -c "cd /var/www/pad.libre-service.eu/ && git pull" su etherpad -c "cd /var/www/pad.libre-service.eu/ && ./bin/installDeps.sh" su etherpad -c "cd /var/www/pad.libre-service.eu/ && npm audit" su etherpad -c "cd /var/www/pad.libre-service.eu/ && npm audit fix" su etherpad -c "cd /var/www/pad.libre-service.eu/ && npm audit" systemctl start etherpad ```