pad/INSTALL.md

10 KiB

Introduction

Documentation à destination d'un administrateur de service pad de Chalec.

L'objectif est d'installer un service basé sur le logiciel etherpad-lite. Il sera placé en amont, un service nginx qui gèrera le traffic TLS et ses certificats.

Base de données (BDD)

Installer la base de données postgreSQL et démarrer le service associé :

# apt install postgresql postgresql-client
# systemctl enable --now postgresql

On vérifie que l'on peut se connecter en IP avec vérification du mot de passe par la BDD. Editer le fichier suivant : /etc/postgresql/xx/main/pg_hba.conf

host    all             all             127.0.0.0/24            md5

On crée l'utilisateur avec le mot de passe , et la base

# su - postgres
$ createuser <UTILISATEUR>
$ createdb <BDD> -O <UTILISATEUR>
$ psql <BDD>
  ALTER USER <UTILISATEUR> WITH PASSWORD '<MOTDEPASSE>' ;
  ALTER ROLE;
  \q

Installer Etherpad-lite

Ajouter l'utilisateur etherpad

# adduser etherpad
# su - etherpad && cd

Suivre les recommandations etherpad-lite pour installer sur Debian :

# curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -
# apt install -y nodejs
$ git clone --branch master https://github.com/ether/etherpad-lite.git
$ cd etherpad-lite 

Configuration Etherpad-lite

Le fichier conf/etherpad-lite/settings.json contient toute la configuration requise. Pour une mise en place rapide, vous pouvez remplacer votre fichier settings.json par celui-ci. Il faudra néanmoins mettre en place les secrets décrits ci-dessous.

Dans le cas contraire, si vous souhaitez conserver votre fichier initial, veuillez suivre pas à pas cette section.

Secrets

Commenter la BDD par défaut :

/*                                                                                    
  "dbType": "dirty",                                                                  
  "dbSettings": {                                                                     
    "filename": "var/dirty.db"                                                        
  },                                                                                  
*/

Décommentez la section postgres et compléter avec les secrets

  "dbType" : "postgres",
  "dbSettings" : {
    "user":     "<UTILISATEUR>",
    "host":     "localhost",
      "port":     5432,
      "password": "<MOTDEPASSE>",
    "database": "<BDD>",
    "charset":  "utf8mb4"
  },

On indique à l'instance qu'elle tourne derrière un proxy et donc que la communication est sécurisée même si elle dialogue en HTTP, sans TLS :

  "trustProxy": true,

Configuration de l'accès admin web. Dans l'objet json "users", configurer l'admin :

  "users": {
    "<admin>": {
      "password": "<password>",
      "is_admin": true
    },
  },

Personnalisation de l'instance

Pour la réalisation des tests et la mise en place du pad, il est fortement conseillé de régler le paramètre "minify" à false. Dans le cas contraire, le temps de chargement du premier pad peut-être très long.

  "minify": false,

On personnalise le titre :

  "title": "Pad Chalec",

Placer la favicon dans le dossier parent et la référencer :

  "favicon": "../pad.chalec.org.svg",

Ajouter le skin Chalec qui est basé sur le skin par défaut

$ cp -r conf/etherpad-lite/skins/chalec src/static/skins 

et l'activer dans la configuration :

    "skinName": "chalec",

Personnaliser le texte par défaut de la page d'un nouveau pad :

"defaultPadText" : " <---- Tapez votre texte ici et libre à vous d'effacer cette \
page d'informations.\n\nBienvenue sur pad.chalec.org, un service Chalec, basé sur le \
logiciel libre Etherpad-lite !\n\nNous vous souhaitons une agréable navigation ainsi \
que de partager les valeurs du libre ici ou ailleurs.\n\nQuelques conseils : \n- cons\
ervez pour vous-même l'adresse (URL) de ce pad et communiquez-la à vos collaborateurs\
. Le contenu est synchronisé entre participants ;\n- attention, tout est public ! Mai\
s sans adresse (URL) point d'accès. Ne la partagez pas avec n'importe qui ;\n- choisi\
ssez un pseudonyme et une couleur (bouton en haut à droite) afin que les participants\
 puissent identifier l'utilisateur faisant les modifications.\n\nPolitique de conserv\
ation et de suppression des données : \n- effacement à J+6 mois : votre pad est susce\
ptible d'être effacé six mois après la date de dernière modification (utiliser les fo\
nctions d'export si nécessaire) ;\n- nous ne traitons pas de demandes de suppression \
autres que pour des motifs règlementés par la loi française. En effet, nous ne pouvon\
s pas assurément vous identifier comme le propriétaire d'un pad !\n\nConditions Génér\
ales d'Utilisation : \nEn utilisant ce service, vous acceptez tacitement les Conditio\
ns Générales d'Utilisation (CGU) des services Chalec (https://www.chalec.org/CGU) qui\
 régissent formellement le service et priment sur toutes autres explications fournies\
 sur cette page.\n\nLibrement, \nL'équipe Chalec (https://www.chalec.org),\nCandidat \
CHATONS par Libre en Communs (https://a-lec.org)\nmailto:contact+pad@chalec.org\nxmpp\
:chalec@salons.a-lec.org?join",

Démarrer le service Etherpad

Note @todo : cette partie est en travaux et le mécanisme décrit devrait évoluer vers un service systemd

Tester le démarrer du service etherpad-lite : $ src/bin/run.sh

Vérifier que le démarrage se passe sans encombres. Puis intérrompre le processus avec un CTRL-C

Installer screen :

# apt install screen

Copier le fichier suivant dans un fichier run.sh

#!/bin/sh

export NODE_ENV=production
/usr/bin/screen -dmS pad "/home/etherpad/etherpad-lite/src/bin/run.sh"

On rend le fichier exécutable : $ chmod +x run.sh

Lancer le script : $ ./run.sh

Vérifier que le pad tourne dans le screen. La commande suivante devrait faire apparaitre dans la liste des écrans, le pad. screen -ls

Créer le script qui va vérifier s'il y a besoin de relancer le processus :

#!/bin/sh

ret=`ps -edf | grep etherpad-lite | grep -v grep`
status=$?

if [ "$status" -ne "0" ] ; then
#    echo "It seems like Etherpad-lite has been stopped or crashed.\nStarting etherpad-lite...";   
    /home/etherpad/run.sh
fi

Le rendre exécutable : chmod +x checkrestart.sh

Configuration du cron : $ crontab -e

et insérer les lignes suivantes dans le fichier

@reboot /home/etherpad/run.sh > /dev/null
* * * * * /home/etherpad/checkrestart.sh

Enregistrer et quitter l'éditeur.

Installation du proxy nginx

Restore html content into /var/www

Installer nginx et préparer le dossier de logs

# apt install nginx
# mkdir /var/log/nginx/pad.chalec.org
# chown www-data:www-data /var/log/nginx/pad.chalec.org

Enregistrer le fichier de configuration de site nginx a cet emplacement /etc/nginx/sites-available/etherpad et faire un lien symbolique dans /etc/nginx/sites-available/etherpad

# cd /etc/nginx/sites-enabled
# ln -s ../sites-available .

Démarrer le service nginx # systemctl enable --now nginx

Ouvrir les ports du firewall # ufw allow proto tcp port 80,443

Vérifier que le service répond en se rendant aux addresses suivantes :

http://pad.chalec.org
https://pad.chalec.org

Installation des Greffons etherpad

Pour complémenter l'installation de base d'etherpad-lite, il faut ajouter quelques greffons.

Installer les greffons suivants en se rendant sur la page d'administration https://pad.chalec.org/admin :

  • adminpads2 : lister les pads et par exemple de les supprimer
  • align : aligner à gauche / droite / centrer
  • author_hover : afficher l'auteur d'un texte en survolant avec la souris
  • delete_after_delay : supprimer automatiquement un pad après un certain délais d'inactivité
  • delete_empty_pads : supprimer automatiquement un pad vide
  • font_color : utiliser des couleurs dans le texte
  • font_size : utiliser des polices de différentes tailles
  • headings2 : titres et sous-titres
  • table_of_contents : table des matières

Note : il existe une méthode pour installer cela en ligne de commande. @todo

Pour supporter l'export au format ODT, il faut installer libreoffice :

# apt install libreoffice-nogui

Puis configurer le chemin du binaire

  "soffice": "/usr/bin/soffice",

Ajouter le module de table des matières "table_of_contents" et configurer pour le désactiver par défaut :

    "ep_toc": {
	"disable_by_default": true
    },

Ajouter le module de suppression automatique des pads inactif "delete_after_delay" et le configurer à J + six mois (temps en secondes). On indique qu'on fait la suppression au lancement et non de manière régulière en tâche de fond. En effet, il n'y a aucune urgence à faire ce genre de tâche.

    "ep_delete_after_delay": {
	"delay": 15811200, // 6 * 30.5 * 24 * 3600 
	"loop": false,
	"deleteAtStart": true,
	"text": ""
    },

Securité et limites

On paramètre "socketIo" avec un buffer HTTP suffisement grand pour notament importer des pads jusqu'à 20Mo :

  "maxHttpBufferSize": 20000000
  "importExportRateLimiting": {
    // duration of the rate limit window (milliseconds)
    "windowMs": 90000,

    // maximum number of requests per IP to allow during the rate limit window
    "max": 10
  },

Chalec infos

Intaller Java # apt install openjdk-jre-headless

Ajouter l'utilisateur statoolinfos # adduser statoolinfos

Ajouter statoolinfos au group admin pour qu'il puisse lire les logs

# adduser statoolinfos admin
# su - statoolinfos
$ cd

Télécharger le binaire (jar) Statoolinfos à l'adresse suivante : https://forge.devinsy.fr/devinsy/statoolinfos/releases

Décompresser dans /home/statool-

Faire un lien généric pour avoir un nom de dossier invariant "statoolinfos": $ ln -s statoolinfos-<verion> statoolinfos

Restaurer la configuration statoolinfos

  • /var/www/html/.well-known/statoolinfos)

Exécuter la commande suivante pour vérifier que tout se passe bien : /home/statoolinfos/statoolinfos/statoolinfos.sh probe -full /hhome/statoolinfos/statoolinfos/conf/pad.chalec.org.conf

On configure le cron quotidien $ crontab -e

45 5 * * * /home/statoolinfos/statoolinfos/statoolinfos.sh probe -previousday /home/statoolinfos/statoolinfos/conf/pad.chalec.org.conf >> /home/statoolinfos/statoolinfos.log