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

9.6 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 -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"

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

        <LocationMatch "^/(?!\.well-known/).*$">
                  ProxyPass http://localhost:9001 retry=0 timeout=30
                  ProxyPassReverse http://localhost:9001
        </LocationMatch>
        <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

Nom de l'instance

Modifier le nom de l'instance dans /var/www/pad.libre-service.eu/settings.json :

-  "title": "Etherpad",
+  "title": "pad.libre-service.eu",

Favicon

Modifier le nom de l'instance dans /var/www/pad.libre-service.eu/settings.json :

-  "favicon": null,
+  "favicon": "/var/www/pad.libre-service.eu/custom/pad.libre-service.eu-logo.png",

Texte de pad par défaut

Configurer un texte de pad par défaut dans /var/www/pad.libre-service.eu/settings.json :

-  "defaultPadText" : "Welcome to Etherpad!\n\nThis pad text is synchronized as you type, so that everyone viewing this page sees the same text. This allows you to collaborate seamlessly on documents!\n\nGet involved with Etherpad at https:\/\/etherpad.org\n",

+   "defaultPadText" : "Bienvenue sur pad.libre-service.eu \o/\n\nLe service pad.libre-service.eu vous permet de faire de l'édition collaborative de texte.\nPour rappel, les pads non accédés depuis 1 an sont susceptibles d'être supprimés.\n\nEn vous souhaitant un agréable usage de nos services libres, éthique et loyaux.\n\nLibrement,\n\nL'équipe de Libre-service.eu. ",


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 ep_countable

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 dans /var/www/pad.libre-service.eu/settings.json :

/* From Etherpad 1.8.3 onwards, the maximum allowed size for a single imported
 * file is always bounded.
 * File size is specified in bytes. Default is 50 MB.
 */
  "importMaxFileSize": 52428800, // 50 * 1024 * 1024

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 :

"ep_toc": {
  "disable_by_default": true
}

Source : https://www.npmjs.com/package/ep_table_of_contents

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"

systemctl start etherpad