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

358 lines
9.7 KiB
Markdown
Raw Normal View History

# 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"
```
## 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 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
```