Compare commits

..

1 Commits

Author SHA1 Message Date
croax 256e45ca7c Update INSTALL.md 2022-05-26 19:20:48 +00:00
8 changed files with 215 additions and 157 deletions

View File

@ -1,51 +1,50 @@
# 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
L'objectif est d'installer un service basé sur le logiciel Etherpad. Il sera placé en amont, un service nginx qui gèrera le traffic TLS et ses
certificats.
# Base de données (BDD)
# Pré-requis : Base de données (BDD)
Installer la base de données PostgreSQL et démarrer le service associé :
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. Éditer le fichier `/etc/postgresql/13/main/pg_hba.conf` :
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
```
Créer l'utilisateur et la base :
On crée l'utilisateur "pad" avec le mot de passe <MOTDEPASSE>, et la base "pad" associée à l'utilisateur :
```
# su - postgres
$ createuser pad
$ createdb pad -O pad
$ psql pad
ALTER USER pad WITH PASSWORD '<MOTDEPASSE>' ;
$ psql <BDD>
ALTER USER <UTILISATEUR> WITH PASSWORD '<MOTDEPASSE>' ;
ALTER ROLE;
\q
```
# Installer Etherpad
# Installer Etherpad-lite
Créer l'utilisateur d'Etherpad :
Ajouter l'utilisateur etherpad :
```
# adduser etherpad
```
Connecter avec l'utilisateur etherpad :
On se connecte avec l'utilisateur etherpad
```
# su - etherpad
```
Suivre les recommandations de la documentation officielle d'Etherpad pour installer sur Debian :
Suivre les recommandations de la documentation officielle d'etherpad-lite pour installer sur Debian.
```
$ cd /home/etherpad
$ curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -
@ -55,21 +54,26 @@ $ git clone --branch master https://github.com/ether/etherpad-lite.git
# Récupérer les ressoures du pad Chalec
Cloner le dépot Pad de Chalec avec l'utilisateur etherpad :
Cloner le dépot Pad de chalec avec l'utilisateur etherpad
```
$ git clone https://git.a-lec.org/a-lec/commissions/chalec/pad
```
# Configuration Etherpad
Le fichier `/home/etherpad/pad.git/conf/etherpad-lite/settings.json` contient toute la configuration requise.
# 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.
Les instructions suivantes s'appliquent au fichier `/home/etherpad/etherpad-lite/settings.json` :
Les instruction suivantes s'appliquent au fichier settings.json qui se trouve dans le home du user etherpad, dossier etherpad-lite.
```
$ cd /homer/etherpad/etherpad-lite
```
@ -84,7 +88,7 @@ Commenter ou supprimer la BDD par défaut :
*/
```
Décommenter la section `postgres` et compléter avec les secrets :
Décommentez la section postgres et compléter avec les secrets :
```
"dbType" : "postgres",
"dbSettings" : {
@ -97,16 +101,17 @@ Décommenter la section `postgres` et compléter avec les secrets :
},
```
Indiquer à l'instance qu'elle tourne derrière un proxy et donc que la communication
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,
```
Configurer l'accès admin web :
Configuration de l'accès admin web.
Dans l'objet json "users", configurer l'admin :
```
"users": {
"admin666": {
"<admin>": {
"password": "<password>",
"is_admin": true
},
@ -120,19 +125,18 @@ du premier pad peut-être très long. Penser à reactiver ce paramètre si besoi
"minify": false,
```
Personnaliser le titre :
On personnalise le titre :
```
"title": "Pad Chalec",
```
Placer la favicon dans le dossier `/home/etherpad` et la référencer :
Placer la favicon dans le dossier parent (/home/etherpad) et la référencer :
```
"favicon": "../pad.chalec.org.svg",
```
Ajouter le skin Chalec qui est basé sur le skin par défaut :
```
$ cd /home/etherpad/etherpad-lite/
$ cp -r conf/etherpad-lite/skins/chalec src/static/skins
```
@ -167,29 +171,74 @@ CHATONS par Libre en Communs (https://a-lec.org)\nmailto:contact+pad@chalec.org\
# 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 encombre. Puis intérrompre le processus avec : CTRL-C
Vérifier que le démarrage se passe sans encombres. Puis intérrompre le processus avec un :
CTRL-C
Copier le fichier de service systemd :
Installer screen :
```
cp /home/etherpad/pad.git/conf/systemd/etherpad.service /etc/systemd/system/
# apt install screen
```
Activer et démarrer le service :
Copier le fichier suivant dans un fichier run.sh :
```
systemctl enable --now etherpad
#!/bin/sh
export NODE_ENV=production
/usr/bin/screen -dmS pad "/home/etherpad/etherpad-lite/src/bin/run.sh"
```
Vérifier que le service tourne :
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 :
```
systemctl status etherpad
#!/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
@ -197,27 +246,19 @@ Installer nginx et préparer le dossier de logs :
# chown www-data:www-data /var/log/nginx/pad.chalec.org
```
Enregistrer le fichier de configuration de site nginx `/home/etherpad/pad.git/conf/nginx/sites-available/etherpad` à cet emplacement /etc/nginx/sites-available/etherpad et faire un lien symbolique dans /etc/nginx/sites-available/etherpad :
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 :
```
# cp /home/etherpad/pad.git/conf/nginx/conf.d/* /etc/nginx/conf.d/
# cd /etc/nginx/sites-enabled
# ln -s ../sites-available/etherpad .
# ln -s ../sites-available .
```
Créer les certificats :
```
# certbot certonly --nginx -d pad.chalec.org
```
Démarrer le service nginx :
```
# systemctl enable --now nginx
```
`# systemctl enable --now nginx`
Ouvrir les ports du firewall :
```
# ufw allow proto tcp port 80,443
```
`# ufw allow proto tcp port 80,443`
Vérifier que le service répond en se rendant aux addresses suivantes :
```
@ -227,8 +268,7 @@ https://pad.chalec.org
# Installation des Greffons etherpad
Pour complémenter l'installation de base d'Etherpad, il faut ajouter quelques
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
@ -242,26 +282,21 @@ https://pad.chalec.org/admin :
- font_size : utiliser des polices de différentes tailles
- headings2 : titres et sous-titres
- table_of_contents : table des matières
- spellcheck
- markdown
Note : il existe une méthode pour installer cela en ligne de commande. @todo
## Export libreoffice
Pour supporter l'export au format ODT, installer libreoffice :
Pour supporter l'export au format ODT, il faut installer libreoffice :
```
# apt install libreoffice-nogui
```
Puis configurer le chemin du binaire dans le `settings.json` :
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 (bug upstream, configuration non prise en compte, cf. #1) :
désactiver par défaut (bug upstream, configuration non prise en compte, cf. #1):
```
"ep_toc": {
"disable_by_default": true
@ -271,7 +306,7 @@ désactiver par défaut (bug upstream, configuration non prise en compte, cf. #1
Ajouter le module de suppression automatique des pads inactif "delete_after_delay"
et le configurer à J + six mois (temps en secondes).
Indiquer 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.
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
@ -282,20 +317,16 @@ Indiquer qu'on fait la suppression au lancement et non de manière régulière e
```
# Securité et limites
Securité et limites
Paramétrer un buffer HTTP suffisamment grand pour notament importer des pads jusqu'à 20Mo dans le fichier `/home/etherpad/etherpad-lite/settings.json`:
On paramètre "socketIo" avec un buffer HTTP suffisement grand pour notament importer
des pads jusqu'à 20Mo :
```
socketIo {
[...]
"maxHttpBufferSize": 20000000
"maxHttpBufferSize": 20000000
```
Puis augmenter, dans la même section, la limite sur import et export :
```
```
"importExportRateLimiting": {
// duration of the rate limit window (milliseconds)
"windowMs": 90000,
@ -308,55 +339,36 @@ Puis augmenter, dans la même section, la limite sur import et export :
# Chalec infos
Intaller Java :
```
# apt install openjdk-jre-headless
```
`# apt install openjdk-jre-headless`
Ajouter l'utilisateur statoolinfos :
```
# adduser statoolinfos
```
`# adduser statoolinfos`
Ajouter l'utilisateur statoolinfos au group admin pour qu'il puisse lire les logs :
Ajouter statoolinfos au group admin pour qu'il puisse lire les logs :
```
# adduser statoolinfos admin
```
Se connecter avec le nouvel utilisateur :
```
# su - statoolinfos
$ cd
```
Télécharger le binaire (jar) Statoolinfos à l'adresse suivante :
`https://forge.devinsy.fr/devinsy/statoolinfos/releases`
https://forge.devinsy.fr/devinsy/statoolinfos/releases
Décompresser dans `/home/statoolinfos/statool-<version>`
Décompresser dans /home/statool-<version>
Faire un lien générique pour avoir un nom de dossier invariant "statoolinfos" :
```
$ ln -s statoolinfos-<verion> statoolinfos
```
Faire un lien généric pour avoir un nom de dossier invariant "statoolinfos":
`$ ln -s statoolinfos-<verion> statoolinfos`
Copier les fichiers html :
```
cp -r /home/etherpad/pad.git/html/ /var/www/
```
Restaurer la configuration statoolinfos :
```
cp /home/etherpad/pad.git/conf/statoolinfos/pad.chalec.org.conf /home/statoolinfos/conf/
```
- /var/www/html/.well-known/statoolinfos)
Lancer une génération maximale des métriques :
```
/home/statoolinfos/statoolinfos/statoolinfos.sh probe -full /home/statoolinfos/statoolinfos/conf/pad.chalec.org.conf
```
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 `
Configurer le cron quotidien :
```
$ crontab -e
On configure le cron quotidien :
`$ crontab -e`
23 55 * * * /home/statoolinfos/statoolinfos/statoolinfos.sh probe -previousday /home/statoolinfos/statoolinfos/conf/pad.chalec.org.conf >> /home/statoolinfos/statoolinfos.log
```
`23 55 * * * /home/statoolinfos/statoolinfos/statoolinfos.sh probe -previousday /home/statoolinfos/statoolinfos/conf/pad.chalec.org.conf >> /home/statoolinfos/statoolinfos.log`

View File

@ -1,15 +1,10 @@
Etherpad
========
Se rendre dans le depot git clone d'Etherpad et entrer la commande suivante :
Se rendre dans le depot git clone d'etherpad-lite et entrer la commande suivante
```
$ git pull
```
Mettre à jour les dépendences :
```
$ /home/etherpad/etherpad-lite/bin/installDeps.sh
```
Plugins Etherpad
================
Se rendre sur la page web https://pad.chalec.org/admin, puis cliquer sur "upgrade" pour mettre à jour les plugin qui ont une mise à jour en attente.

View File

@ -114,7 +114,7 @@
* - "colibris": the new experimental skin (since Etherpad 1.8), candidate to
* become the default in Etherpad 2.0
*/
"skinName": "chalec",
"skinName": "colibris",
/*
* Skin Variants
@ -211,11 +211,11 @@
"dbType" : "postgres",
"dbSettings" : {
"user": "pad",
"user": "<UTILISATEUR>",
"host": "localhost",
"port": 5432,
"password": "",
"database": "pad",
"password": "<MOTDEPASSE>",
"database": "<BDD>",
"charset": "utf8mb4"
},
@ -223,8 +223,7 @@
/*
* The default text of a pad
*/
// "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" : " <---- 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- conservez l'adresse (URL) de ce pad (par exemple dans vos favoris) afin de pouvoir le consulter ulterieurement et diffusez-là aux participants. L'édition est collaborative et le rendu est synchronisé entre participants ;\n- attention, tout est public ! Mais sans adresse (URL) point d'accès. Ne la partagez pas avec n'importe qui ;\n- choisissez un pseudonyme et une couleur (bouton en haut à droite) afin que les participants puissent identifier l'utilisateur faisant les modifications.\n\nPolitique de conservation et de suppression des données : \n- effacement à J+6 mois : votre pad est susceptible d'être effacé six mois après la date de dernière modification (utiliser les fonctions 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 pouvons assurément pas vous identifier comme le propriétaire d'un pad.\n\nConditions Générales d'Utilisation (CGU) : \n- En utilisant ce service, vous acceptez tacitement les Conditions Générales d'Utilisation (CGU) des services Chalec (https://www.chalec.org/cgu) qui régissent formellement ce service et priment sur toutes autres explications fournies sur cette page.\n\nLibrement, \nL'équipe Chalec (https://www.chalec.org/service-pad.html),\nUne initiative de Libre en Communs (https://www.a-lec.org/)\nmailto:contact+pad@chalec.org\nxmpp:chalec@salons.a-lec.org?join",
"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",
/*
* Default Pad behavior.
@ -242,7 +241,7 @@
"rtl": false,
"alwaysShowChat": false,
"chatAndUsers": false,
"lang": "fr"
"lang": "EN-gb"
},
/*
@ -459,10 +458,10 @@
"users": {
"admin666": {
"<admin>": {
// 1) "password" can be replaced with "hash" if you install ep_hash_auth
// 2) please note that if password is null, the user will not be created
"password": "",
"password": "<password>",
"is_admin": true
},
},
@ -600,8 +599,8 @@
"ep_delete_after_delay": {
"delay": 15552000,
"loop": false,
"deleteAtStart": false,
"text": "Attention : un pad est supprimé six mois après dernière modification"
"deleteAtStart": true,
"text": ""
},
"ep_spellcheck": {

View File

@ -15,8 +15,8 @@
margin: -18px 15px 0 20px;
}
#slider-btn-container #playpause_button_icon {
color: #000000;
/* color: var(--bg-color); */
color: #ffffff;
color: var(--bg-color);
background-color: #64d29b;
background-color: var(--primary-color);
border: none;
@ -47,8 +47,8 @@
.timeslider #editbar .buttontext {
background-color: #576273;
background-color: var(--text-soft-color);
color: #000000;
/* color: var(--bg-color); */
color: #ffffff;
color: var(--bg-color);
margin: 0;
}

83
conf/nginx/nginx.conf Normal file
View File

@ -0,0 +1,83 @@
user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;
events {
worker_connections 768;
# multi_accept on;
}
http {
##
# Basic Settings
##
sendfile on;
tcp_nopush on;
types_hash_max_size 2048;
# server_tokens off;
# server_names_hash_bucket_size 64;
# server_name_in_redirect off;
include /etc/nginx/mime.types;
default_type application/octet-stream;
##
# SSL Settings
##
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; # Dropping SSLv3, ref: POODLE
ssl_prefer_server_ciphers on;
##
# Logging Settings
##
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
##
# Gzip Settings
##
gzip on;
# gzip_vary on;
# gzip_proxied any;
# gzip_comp_level 6;
# gzip_buffers 16 8k;
# gzip_http_version 1.1;
# gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
##
# Virtual Host Configs
##
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
#mail {
# # See sample authentication script at:
# # http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript
#
# # auth_http localhost/auth.php;
# # pop3_capabilities "TOP" "USER";
# # imap_capabilities "IMAP4rev1" "UIDPLUS";
#
# server {
# listen localhost:110;
# protocol pop3;
# proxy on;
# }
#
# server {
# listen localhost:143;
# protocol imap;
# proxy on;
# }
#}

View File

@ -1,15 +1,7 @@
conf.class=service
conf.protocol=StatoolInfos-0.5
conf.probe.types=HttpAccessLog, HttpErrorLog, Etherpad
conf.probe.types=HttpAccessLog, HttpErrorLog
conf.probe.httpaccesslog.file=/var/log/nginx/pad.chalec.org/access.log*
conf.probe.httperrorlog.file=/var/log/nginx/pad.chalec.org/error.log*
conf.probe.target=/var/www/html/.well-known/statoolinfos/pad.chalec.org-metrics.properties
conf.probe.etherpad.logs=/var/log/etherpad/output.log
# jdbc:mariadb://localhost:1234/databasename
# jdbc:mysql://localhost:1234/databasename
# jdbc:postgresql://localhost:1234/pad
# jdbc:sqlite:/foo/bar/databasename.sqlite
conf.probe.etherpad.database.url=jdbc:postgresql://localhost:5432/pad
conf.probe.etherpad.database.user=pad
conf.probe.etherpad.database.password=

View File

@ -1,19 +0,0 @@
[Unit]
Description=Etherpad, the collaborative editor.
After=syslog.target network.target postgresql.target
[Service]
Type=simple
User=etherpad
Group=etherpad
WorkingDirectory=/home/etherpad/etherpad-lite/
Environment=NODE_ENV=production
ExecStart=/home/etherpad/etherpad-lite/bin/fastRun.sh
StandardOutput=append:/var/log/etherpad/output.log
StandardError=append:/var/log/etherpad/error.log
Restart=always
[Install]
WantedBy=multi-user.target

View File

@ -8,7 +8,7 @@ file.class = service
file.protocol = ChatonsInfos-0.5
# Date et horaire de génération du fichier (type DATETIME, recommandé).
file.datetime = 2022-05-27T00:25:00
file.datetime = 2022-02-10T20:38:00
# Nom du générateur du fichier (type STRING, recommandé). Exemple : Florian avec ses doigts.
file.generator = Emacs & le clavier magique
@ -28,16 +28,16 @@ service.website = https://pad.chalec.org
service.logo = https://pad.chalec.org/.well-known/statoolinfos/pad.chalec.org.svg
# Lien de la page web des mentions légales du service (type URL, recommandé). Exemple : https://pad.exemple.ext/cgu.html.
service.legal.url = https://www.chalec.org/mentions-legales.html
service.legal.url =
# Lien de la documentation web du service (type URL, recommandé).
service.guide.technical = https://git.a-lec.org/a-lec/commissions/chalec/pad
# Lien des aides web pour le service (type URL, recommandé).
service.guide.user = https://www.chalec.org/service-pad.html
service.guide.user =
# Lien de la page de support du service (type URL, recommandé). Exemple : https://exemple.ext/contact.html.
service.contact.url = https://www.chalec.org/contact.html
service.contact.url =
# Courriel du support du service (type EMAIL, recommandé). Exemple : contact@exemple.ext.
service.contact.email = contact+pad.statool@chalec.org
@ -117,10 +117,6 @@ host.name = Libre en Communs
# Description de l'hébergeur (type STRING, optionnel).
host.description = Connaissance, partage, éducation et solidarité
# Nom générique de la distribution installée sur le serveur (type STRING, obligatoire, ex. YunoHost).
host.server.distribution = Debian
# Type de serveur (un parmi {NANO, PHYSICAL, VIRTUAL, SHARED, CLOUD}, obligatoire, ex. PHYSICAL).
# NANO : nano-ordinateur (Raspberry Pi, Olimex…)
# PHYSICAL : machine physique