L'article suivant suppose que vous savez déjà ce qu'est Etherpad. Si ce
n'est pas le cas, alors l'article de wikipedia devrait suffire pour une introduction rapide.
Même si le projet Etherpad est bien documenté, il n'est pas toujours facile de
donner un sens à partir de la simple documentation. Cet article vise à condenser certaines des
tutoriels disponibles sur le wiki du projet d'une manière facile à suivre.
Nous couvrirons les éléments suivants :
- Installer Etherpad en tant que service
- Activer TLS avec des certificats auto-signés
- Utiliser
mysql
base de données - Utiliser Nginx avec Etherpad
Installation d'Etherpad
Pour l'instant, Debian 11 ne fournit aucun etherpad
paquets. Alors, il va falloir
installez-le manuellement depuis GitHub. Heureusement, les étapes sont vraiment faciles (le
#
désigne la racine) :
- Créer un utilisateur
etherpad
et assignez-le à l'etherpad
grouper:
# useradd --comment "Etherpad Service User"
--create-home --home-dir /usr/local/etherpad --user-group etherpad
- Téléchargez et exécutez le script de configuration :
# curl -sL https://deb.nodesource.com/setup_14.x
|bash -
- Installer
nodejs
. Nous aurons également besoin degit
.
# apt install -y nodejs git
- Passer au
etherpad
user et cloner le dépôt du projet.
# su - etherpad
etherpad$ git clone --depth 1 --branch masterhttps://github.com/ether/etherpad-lite.git/usr/local/etherpad/src
- Installez les dépendances requises :
etherpad$ /usr/local/etherpad/src/bin/installDeps.sh
- Créez un fichier d'unité systemd dans
/etc/systemd/system/
annuaire.
/etc/systemd/system/etherpad.service
:
[Unit]
Description=Etherpad Service
After=syslog.target network.target
[Service]
Type=simple
User=etherpad
Group=etherpad
WorkingDirectory=/usr/local/etherpad/src
Environment=NODE_ENV=production
ExecStart=/usr/bin/node --experimental-worker /usr/local/etherpad/src/node_modules/ep_etherpad-lite/node/server.js
[Install]
WantedBy=multi-user.target
- Autoriser les pare-feu, etc. à ouvrir le port
9001
.Ensuite, nous pouvons enfin commencer
leetherpad
un service:
# systemctl start etherpad
Nous avons encore beaucoup de configurations à faire. Cependant, nous pouvons maintenant afficher l'instance etherpad sur notre navigateur.
Activer TLS avec des certificats auto-signés
Si vous souhaitez que vos certificats soient signés par une autorité de certification (CA), vous pouvez le faire. Cependant, ici, je vais juste tout auto-signer. Je fais référence à l'article wiki qui peut être trouvé ici.
Ouvrez settings.json
dans le etherpad
répertoire et trouvez la section ssl
(devrait être autour de la ligne 174) et modifiez en conséquence :
"ssl" : {
"key" : "https://1118798822.rsc.cdn77.org/usr/local/etherpad/ssl/epl-server.key",
"cert" : "https://1118798822.rsc.cdn77.org/usr/local/etherpad/ssl/epl-server.crt"
}
Créez un répertoire /usr/local/etherpad/ssl
comme etherpad
utilisateur, cd
dans ce répertoire et exécutez les commandes suivantes.
Générez la clé du serveur en fournissant la phrase secrète requise :
openssl genrsa -des3 -out epl-server.key 4096
Générez maintenant les certificats :
openssl req -new -key epl-server.key -out epl-server.csr
openssl x509 -req -days 9000 -in epl-server.csr -signkey epl-server.key -out epl-server.crt
Nous allons maintenant utiliser ce fichier pour créer une autre clé. De cette façon, nous n'aurons pas à fournir une phrase de passe à chaque démarrage de notre serveur.
Renommez la clé :
mv epl-server.key epl-server.key.secure
Générez ensuite notre deuxième clé :
openssl rsa -in epl-server.key.secure -out epl-server.key
Nous devons maintenant auto-signer nos certificats. Pour cela nous devons générer une autre clé qui signera notre
epl-server.key
. Les étapes sont similaires à ci-dessus.
openssl genrsa -des3 -out own-ca.key 4096
Créez un certificat de signature :
openssl req -new -x509 -days 9000 -key own-ca.key -out own-ca.crt
Cela nous demandera des informations. Ils peuvent être laissés par défaut mais le nom commun (CN) doit être différent du CN de notre propre clé. Nous pouvons donc simplement ajouter "(CA)" au CN.
Signons enfin notre epl-server.key
avec le certificat de notre CA.
openssl x509 -req -days 9000 -in epl-server.csr -CA own-ca.crt -CAkey own-ca.key -set_serial 001 -out epl-server.crt
Cela se traduira par un epl-server.crt
auto-signé fichier.
Assurez-vous maintenant que les fichiers disposent d'autorisations sécurisées :
chmod 400 epl-server.key
chown etherpad epl-server.key
chmod 400 epl-server.crt
chown etherpad epl-server.crt
D'autres fichiers peuvent être déplacés vers un endroit différent ou simplement supprimés. Je vais juste les laisser tels quels pour le moment. Néanmoins, nous pouvons redémarrer l'etherpad
service maintenant et nous aurons https
fonctionne bien que les navigateurs lancent des avertissements et refusent même de se connecter car nos certificats n'ont pas été fournis avec les informations appropriées.
Utiliser MySQL avec Etherpad
Jusqu'à présent, notre instance Etherpad utilisait le dirtyDB
base de données qui ne convient pas uniquement à des fins de test/développement. Pour rendre notre instance parfaitement adaptée à la production, nous allons maintenant passer à mysql
. Encore une fois, tous les crédits pour les instructions d'installation vont au wiki du projet. J'ai juste décidé - afin de tout résumer en un seul endroit - de ne pas vous faire sauter sur différents liens.
Alors, installons les packages requis (j'utilise mariadb
mais les choses sont fondamentalement les mêmes):
# apt install -y mariadb-server
Exécutez maintenant mysql_secure_installation
en tant que root fournissant les paramètres requis.
Après cela, nous pouvons procéder à la configuration de la base de données :
1. Connectez-vous à mysql avec la commande suivante :
# mysql -u root -p
2. Une fois à l'intérieur, créez une base de données :
CREATE DATABASE `etherpad_lite_db`;
Oui, ce sont des backticks autour du nom de la base de données. Et n'oubliez pas le point-virgule 😉
3. Créez un utilisateur de base de données en fournissant votre propre nom d'utilisateur et mot de passe :
CREATE USER '<username>'@'localhost' identified by '<pass>';
4. Modifiez les autorisations du nouvel utilisateur :
GRANT CREATE,ALTER,SELECT,INSERT,UPDATE,DELETE on `etherpad_lite_db`.* to 'etherpad'@'localhost';
Ici, etherpad
était l'utilisateur que j'ai créé plus tôt.
Notre base de données est créée, nous pouvons donc maintenant exit
à partir de l'invite et laissez le etherpad
service connaître les réalisations que nous avons faites, c'est-à-dire en modifiant le settings.json
fichier.
Recherchez le dbtype
avec votre éditeur de texte, il devrait être autour de la ligne 196 et modifiez-le pour qu'il ressemble à ceci :
"dbType": "mysql",
"dbSettings": {
"user" : "etherpad",
"port" : "https://1118798822.rsc.cdn77.org/var/run/mysqld/mysqld.sock",
"password": "<pass>",
"database": "etherpad_lite_db",
"charset" : "utf8mb4"
}
Évidemment, je ne vais pas révéler le mot de passe ici. Ce serait dangereux puisque j'utilise le même pour tous mes comptes (non, pas vraiment, ne réutilisez pas les mots de passe).
Nous pouvons maintenant redémarrer les services :
# systemctl restart mysqld etherpad
Utiliser Nginx avec Etherpad
Configurons maintenant nginx
pour transférer le trafic http/s standard vers l'etherpad
un service.
Assurons-nous d'avoir nginx
installée:
# apt install nginx
Créez un fichier dans /etc/nginx/sites-available/etherpad
et que son contenu soit :
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name localhost; # CHANGE THIS!
access_log /var/log/nginx/eplite.access.log;
error_log /var/log/nginx/eplite.error.log;
ssl on;
ssl_certificate /etc/nginx/ssl/epl-server.crt;
ssl_certificate_key /etc/nginx/ssl/epl-server.key;
location / {
proxy_pass https://127.0.0.1:9001;
proxy_buffering off;
proxy_set_header Host $host;
proxy_pass_header Server;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_http_version 1.1; # apparently recommended with keepalive connections
# WebSocket proxying - from https://nginx.org/en/docs/http/websocket.html
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
}
}
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
# enforce HTTPS
server {
listen 80;
listen [::]:80;
server_name localhost; # CHANGE THIS!
return 301 https://127.0.0.1:9001/;
}
Exécutez maintenant les commandes suivantes :
doas mkdir /etc/nginx/ssl
doas cp /usr/local/etherpad/ssl/epl-server.crt /etc/nginx/ssl/
doas cp /usr/local/etherpad/ssl/epl-server.key /etc/nginx/ssl/
Comme vous pouvez le voir, nous ne faisons que copier les certificats SSL et les clés vers nginx.
Nginx est livré avec un fichier de configuration par défaut qui est activé. Réparons cela.
# rm /etc/nginx/sites-enabled/default
Et activons notre etherpad
fichier de configuration pour nginx.
# ln -s /etc/nginx/sites-available/etherpad /etc/nginx/sites-enabled/etherpad
Assurez-vous de ne pas avoir fait d'erreur dans la configuration :
# nginx -t
Maintenant, redémarrons nos services une dernière fois :
# systemctl restart etherpad mysqld nginx
Notre configuration est pratiquement terminée. Bien sûr, nous pouvons faire plus, mais je pense que nous en avons fait assez (en plus de changer des choses évidentes comme le fait que nous avons configuré notre propre autorité de certification) pour que cela soit utilisable. Je laisse le lecteur explorer plus loin
les différentes ressources que j'ai liées tout au long de l'article. C'est tout pour le moment. Merci d'avoir lu jusqu'au bout. N'oubliez pas de consulter mes autres articles sur unixcop.com.