documentation/services/pad.libre-service.eu.md

8.5 KiB

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 :

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" - postgres
CREATE ROLE etherpad WITH LOGIN PASSWORD 'xxxxxxxxxxxxx';

Créer une base de données :

CREATE DATABASE etherpad WITH OWNER etherpad TEMPLATE template0 ENCODING UTF8 LC_COLLATE 'fr_FR.UTF-8' LC_CTYPE 'fr_FR.UTF-8';

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

        <Location />
                  ProxyPass http://localhost:9001/ retry=0 timeout=30
                  ProxyPassReverse http://localhost:9001/
        </Location>
        <Location /socket.io>
                  # 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
        </Location>

        <Proxy *>
               Options FollowSymLinks MultiViews
               AllowOverride All
               Order allow,deny
               allow from all
        </Proxy>

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