347 lines
9 KiB
Markdown
347 lines
9 KiB
Markdown
# 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
|
|
|
|
<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
|
|
|
|
### 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",
|
|
```
|
|
|
|
### 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
|
|
```
|