# 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 ProxyPass http://localhost:9001/ retry=0 timeout=30 ProxyPassReverse http://localhost:9001/ # 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 Options FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all ``` ## 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 ```