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

12 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

Sous réserve de mise à jour : ep_delete_after_delay.

Autres modules : ep_countable, ep_subscript_and_superscript.

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 non affichée sur petit écran

Sur les téléphones portables, l'affichage de la table des matières peut être inconfortable.

Une solution peut consister à ne pas afficher la table des matières par défaut. Ajouter dans /var/www/pad.libre-service.eu/settings.json :

"ep_toc": {
  "disable_by_default": true
}

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

Une autre solution peut consister à automatiquement ne pas afficher la table des matières si l'écran n'est pas assez large. Ajouter dans /var/www/pad.libre-service.eu/node_modules/ep_table_of_contents/static/css/toc.css :

@media (max-width: 590px) {
    #toc { display: none !important;}
}

Cette dernière solution a été retenue.

Table des matières trop large

Par défaut, l'affichage de la table des matières déplace la zone d'édition vers la droite et la place contre la colonne de droite rendant difficile la lecture de la page.

Une solution consite à réduire la taille de la table des matières. Modifier le fichier /var/www/pad.libre-service.eu/node_modules/ep_table_of_contents/static/css/toc.css :

@media (min-width: 1350px) {
-  #toc { width: 25% }
+  #toc { width: 20% }
  body.comments-active #toc { width: 20% } // a bit smaller when the comment sidebar is visible
}

Table des matière avec liens soulignés

Par défaut, dans la table des matières, les liens sont soulignés. Modifier /var/www/pad.libre-service.eu/node_modules/ep_table_of_contents/static/css/toc.css :

.tocItem{
  white-space: nowrap;
  text-overflow: ellipsis;
  display: block;
  overflow: hidden;
  cursor:pointer;
+ text-decoration: none;
}

Couleurs de fond

Par défaut, les couleur de fond de la table des matières et de la zone d'édition sont gris, très triste., les liens sont soulignés.

Une étape consiste à créer un skin dédié :

su - etherpad
cd /var/www/pad.libre-service.eu/src/static/skins
cp -a colibris lseu

Et le déclaré dans le fichier de configuration /var/www/pad.libre-service.eu/settings.json :

-  "skinName": "colibris",
+  "skinName": "lseu",

Pour le fond de la table des matières, modifier /var/www/pad.libre-service.eu/src/static/skins/lseu/src/components/table-of-content.css :

#toc {
  padding: 20px 20px 10px 10px !important;
  min-width: 146px !important;
- background-color: transparent !important;
+ background-color: #edf2f7 !important;
+ color: #2c6a82 !important;
  border: none !important;
  order: -2;
}

Pour le fond de la zone d'édition, modifier /var/www/pad.libre-service.eu/src/static/skins/lseu/src/pad-variants.css :

/* ====================== */
/* == Light Background == */
/* ====================== */
.light-background #editorcontainerbox, .light-background #sidediv,                                                                                                        
.light-background #chatbox, .light-background #outerdocbody, .light-background {
  --text-color: var(--super-dark-color);
  --text-soft-color: var(--dark-color);
  --border-color: var(--middle-color);
  --bg-soft-color: var(--super-light-color);
- --bg-color: var(--light-color);
+ --bg-color: #e2e8f0;
}

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