Etherpad est un éditeur en ligne open-source fournissant une édition collaborative en temps réel dans le navigateur. Il est écrit en Node.js et peut être auto-hébergé pour fonctionner avec diverses plateformes comme WordPress, Drupal, Odoo, Discourse, Joomla, etc.
Dans ce tutoriel, nous allons installer Etherpad sur un serveur Rocky Linux 8, en utilisant la base de données MariaDB pour stocker nos données. Nous utiliserons également Nginx comme proxy inverse pour l'application et installerons un certificat SSL à l'aide de Let's Encrypt pour permettre les connexions HTTPS à notre instance Etherpad.
Prérequis
-
Un système exécutant Rocky Linux 8.
-
Un utilisateur non root avec des privilèges sudo.
-
Un nom de domaine pointé vers le serveur.
-
Nodejs installé. Suivez notre guide sur l'installation de Nodejs sur le serveur Rocky Linux 8. Utilisez l'une des deux méthodes spécifiées.
-
Assurez-vous que tout est mis à jour.
$ sudo dnf update
Étape 1 - Configurer le pare-feu
Rocky Linux utilise Firewalld Firewall. Vérifiez l'état du pare-feu.
$ sudo firewall-cmd --state running
Cela indique qu'il est opérationnel avec succès.
Le pare-feu fonctionne avec différentes zones et la zone publique est celle par défaut, que nous utiliserons. Répertorier tous les services et ports actifs sur le pare-feu.
$ sudo firewall-cmd --permanent --list-services
Il devrait afficher la sortie suivante.
cockpit dhcpv6-client ssh
Autoriser les ports HTTP et HTTPS.
$ sudo firewall-cmd --permanent --add-service=http $ sudo firewall-cmd --permanent --add-service=https
Ouvrez le 9001
port utilisé par l'application Etherpad.
$ sudo firewall-cmd --permanent --add-port=9001/tcp
Revérifiez l'état du pare-feu.
$ sudo firewall-cmd --permanent --list-services
Vous devriez voir une sortie similaire.
cockpit dhcpv6-client http https ssh
Rechargez le pare-feu pour activer les modifications.
$ sudo firewall-cmd --reload
Étape 2 - Installer Git
Avant d'installer Etherpad, nous devons installer Git. Exécutez la commande suivante pour installer Git.
$ sudo dnf install git
Vérifiez l'installation.
$ git --version git version 2.27.0
Ajouter la configuration initiale.
$ git config --global user.name "YourName" $ git config --global user.email "[email protected]"
Indiquez la configuration que vous venez de définir.
$ git config --list user.name=YourName [email protected]
Étape 3 - Installer MariaDB
Puisque nous allons utiliser la base de données MariaDB pour stocker les données d'Etherpad, nous devons d'abord l'installer et la configurer.
Le référentiel Rocky Linux AppStream est fourni avec MariaDB. Pour répertorier toutes les versions disponibles de MariaDB installées, exécutez la commande suivante.
$ sudo dnf module list mariadb Last metadata expiration check: 1:15:26 ago on Thu 21 Oct 2021 10:20:01 AM UTC. Rocky Linux 8 - AppStream Name Stream Profiles Summary mariadb 10.3 [d] client, galera, server [d] MariaDB Module mariadb 10.5 client, galera, server [d] MariaDB Module Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled
La version par défaut est définie sur 10.3. Vous pouvez cependant installer la dernière version à l'aide de la commande suivante.
$ sudo dnf module enable mariadb:10.5
Installez MariaDB.
$ sudo dnf install mariadb-server
Activez et démarrez le service MariaDB.
$ sudo systemctl enable mariadb --now
Vérifiez l'état du service.
$ sudo systemctl status mariadb
Sécurisez le serveur MariaDB.
$ sudo mysql_secure_installation
Vous ferez face à diverses invites. Répondez-y comme suit.
Enter current password for root (enter for none): Press Enter Switch to unix_socket authentication [Y/n] Type y Change the root password? [Y/n] Type n Remove anonymous users? [Y/n] Type y Disallow root login remotely? [Y/n] Type y Remove test database and access to it? [Y/n] Type y Reload privilege tables now? [Y/n] Type y
Vous pouvez maintenant vous connecter au serveur MariaDB en utilisant la commande suivante.
$ sudo mysql
Étape 4 - Configurer MariaDB
Connectez-vous au shell MariaDB.
$ sudo mysql
Créez une nouvelle base de données pour Etherpad.
$ create database `etherpad_lite_db`;
Créez un nouvel utilisateur de base de données.
$ CREATE USER 'etherpaduser'@'localhost' identified by 'password';
Utilisez un mot de passe fort.
Accordez des autorisations sur la base de données à l'utilisateur.
$ grant CREATE,ALTER,SELECT,INSERT,UPDATE,DELETE on `etherpad_lite_db`.* to '<etherpaduser>'@'localhost';
Quittez le shell MySQL.
$ exit
Étape 5 - Télécharger et installer Etherpad
Pour installer Etherpad, nous allons télécharger son code source et le compiler.
La première étape consiste à créer un nouveau etherpad
utilisateur à l'aide de la commande suivante.
$ sudo adduser --system --home /opt/etherpad --create-home --user-group etherpad
Cette commande crée un --system
utilisateur, ce qui signifie qu'il ne peut pas se connecter et n'a pas de mot de passe. Nous lui donnons également un répertoire personnel /opt/etherpad
c'est là que nous téléchargerons Etherpad. Le --create-home
flag crée le répertoire personnel avec les autorisations correctes. Le --user-group
flag crée un groupe avec le même nom que le nom d'utilisateur.
Passer au etherpad
utilisateur pour télécharger et installer l'application.
$ sudo -u etherpad bash
Passez au /opt/etherpad
répertoire.
[[email protected] user] cd /opt/etherpad
Cloner le référentiel Etherpad dans le /opt/etherpad
répertoire.
[[email protected] ~]$ git clone --branch master git://github.com/ether/etherpad-lite.git
Basculez vers le répertoire nouvellement téléchargé.
[[email protected] ~]$ cd etherpad-lite
Exécutez le run.sh
de l'Etherpad script pour configurer et installer les dépendances.
[[email protected] etherpad-lite]$ src/bin/run.sh
Vous pouvez lancer l'URL http://YOURSERVERIP:9001
dans le navigateur pour lancer Etherpad. Vous obtiendrez l'écran suivant.
Il y a un problème avec l'installation ci-dessus. Cela vous oblige à garder le shell actuel ouvert avec Node en cours d'exécution au premier plan. Pour en faire une installation persistante, nous devons exécuter Etherpad en tant que service. Appuyez sur Ctrl + C sur votre terminal pour arrêter l'exécution d'Etherpad.
Étape 6 - Configurer Etherpad
Avant de continuer, nous devons définir certains paramètres et configurer notre installation en fonction de nos besoins. Etherpad stocke ses paramètres dans le settings.json
fichier dans le répertoire d'installation.
Ouvrez le fichier pour le modifier.
[[email protected] etherpad-lite]$ nano settings.json
Le fichier de paramètres est au format JSON. La première chose que vous devez configurer est les paramètres de la base de données.
Trouvez le code suivant et commentez-le en mettant //
devant.
// "dbType": "dirty", // "dbSettings": { // "filename": "var/dirty.db" // },
Ensuite, recherchez le code suivant et modifiez ses valeurs comme suit. Assurez-vous de supprimer /*
et */
au début et à la fin.
"dbType" : "mysql", "dbSettings" : { "user": "etherpaduser", "host": "localhost", "port": 3306, "password": "password", "database": "etherpad_lite_db", "charset": "utf8mb4" },
Enfin, faites défiler un peu vers le bas pour trouver le trustProxy
paramètre et changez sa valeur de false
à true
.
"trustProxy": true,
Ce paramètre est nécessaire pour faire fonctionner Etherpad avec Nginx.
Enregistrez le fichier en appuyant sur Ctrl + X et en saisissant Y lorsque vous y êtes invité une fois terminé.
Quittez le shell utilisateur Etherpad.
[[email protected] etherpad-lite]$ exit
Étape 7 - Créer un service Etherpad
Pour démarrer Etherpad au démarrage et gérer le processus à l'aide de systemctl
, nous devons créer un fichier de service.
Créez et ouvrez le fichier de service.
$ sudo nano /etc/systemd/system/etherpad.service
Collez-y le code suivant.
[Unit] Description=Etherpad, a collaborative web editor. After=syslog.target network.target [Service] Type=simple User=etherpad Group=etherpad WorkingDirectory=/opt/etherpad Environment=NODE_ENV=production ExecStart=/usr/bin/node --experimental-worker /opt/etherpad/etherpad-lite/node_modules/ep_etherpad-lite/node/server.js Restart=always [Install] WantedBy=multi-user.target
Enregistrez le fichier en appuyant sur Ctrl + X et en saisissant Y lorsque vous y êtes invité une fois terminé.
Rechargez le démon de service pour extraire la nouvelle configuration.
$ sudo systemctl daemon-reload
Activez Démarrer le service Etherpad.
$ sudo systemctl enable etherpad --now
Vérifiez l'état du service.
$ sudo systemctl status etherpad ? etherpad.service - Etherpad, a collaborative web editor. Loaded: loaded (/etc/systemd/system/etherpad.service; disabled; vendor preset: disabled) Active: active (running) since Thu 2021-10-21 15:06:53 UTC; 6s ago Main PID: 47228 (node) Tasks: 13 (limit: 11411) Memory: 102.8M CGroup: /system.slice/etherpad.service ??47228 /usr/bin/node --experimental-worker /opt/etherpad/etherpad-lite/node_modules/ep_etherpad-lite/node/server.js .......
Étape 8 - Installer SSL avec Let's Encrypt
Pour installer un certificat SSL avec Let's Encrypt, nous devons installer l'outil Certbot.
Tout d'abord, vous devez télécharger et installer le référentiel EPEL.
$ sudo dnf install epel-release
Exécutez les commandes suivantes pour installer Certbot.
$ sudo dnf install certbot
Générez le certificat SSL.
$ sudo certbot certonly --standalone --agree-tos --preferred-challenges http -m [email protected] -d example.com
La commande ci-dessus téléchargera un certificat sur /etc/letsencrypt/live/etherpad.example.com
répertoire sur votre serveur.
Générer un groupe Diffie-Hellman certificat.
$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
Créez un répertoire racine Web de défi pour le renouvellement automatique de Let's Encrypt.
$ sudo mkdir -p /var/lib/letsencrypt
Créez une tâche Cron pour renouveler le SSL. Il s'exécutera tous les jours pour vérifier le certificat et le renouveler si nécessaire. Pour cela, créez d'abord le fichier /etc/cron.daily/certbot-renew
et ouvrez-le pour le modifier.
$ sudo nano /etc/cron.daily/certbot-renew
Collez le code suivant.
#!/bin/sh certbot renew --cert-name etherpad.example.com --webroot -w /var/lib/letsencrypt/ --post-hook "systemctl reload nginx"
Enregistrez le fichier en appuyant sur Ctrl + X et en saisissant Y lorsque vous y êtes invité.
Modifiez les autorisations sur le fichier de tâche pour le rendre exécutable.
$ sudo chmod +x /etc/cron.daily/certbot-renew
Étape 9 - Installer et configurer Nginx
Rocky Linux est livré avec une ancienne version de Nginx. Pour installer la dernière version, vous devez ajouter le dépôt Nginx.
Créez et ouvrez le fichier /etc/yum.repos.d/nginx.repo
pour l'édition.
$ sudo nano /etc/yum.repos.d/nginx.repo
Collez-y le code suivant.
[nginx-stable] name=nginx stable repo baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=1 enabled=1 gpgkey=https://nginx.org/keys/nginx_signing.key module_hotfixes=true [nginx-mainline] name=nginx mainline repo baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/ gpgcheck=1 enabled=0 gpgkey=https://nginx.org/keys/nginx_signing.key module_hotfixes=true
Enregistrez le fichier en appuyant sur Ctrl + X et en saisissant Y lorsque vous y êtes invité une fois terminé.
Installez Nginx.
$ sudo dnf install nginx
Activez le service Nginx.
$ sudo systemctl enable nginx
Ensuite, créez et ouvrez le /etc/nginx/conf.d/etherpad.conf
pour l'édition.
$ sudo nano /etc/nginx/conf.d/etherpad.conf
Collez-y le code suivant.
server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name etherpad.example.com; access_log /var/log/nginx/etherpad.access.log; error_log /var/log/nginx/etherpad.error.log; ssl_certificate /etc/letsencrypt/live/etherpad.example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/etherpad.example.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/etherpad.example.com/chain.pem; ssl_session_timeout 5m; ssl_session_cache shared:MozSSL:10m; # about 40000 sessions ssl_session_tickets off; ssl_protocols TLSv1.2 TLSv1.3; ssl_prefer_server_ciphers on; ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384; ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1; ssl_stapling on; ssl_stapling_verify on; ssl_dhparam /etc/ssl/certs/dhparam.pem; location / { rewrite ^/$ / break; rewrite ^/locales/(.*) /locales/$1 break; rewrite ^/locales.json /locales.json break; rewrite ^/admin(.*) /admin/$1 break; rewrite ^/p/(.*) /p/$1 break; rewrite ^/static/(.*) /static/$1 break; rewrite ^/pluginfw/(.*) /pluginfw/$1 break; rewrite ^/javascripts/(.*) /javascripts/$1 break; rewrite ^/socket.io/(.*) /socket.io/$1 break; rewrite ^/ep/(.*) /ep/$1 break; rewrite ^/minified/(.*) /minified/$1 break; rewrite ^/api/(.*) /api/$1 break; rewrite ^/ro/(.*) /ro/$1 break; rewrite ^/error/(.*) /error/$1 break; rewrite ^/jserror(.*) /jserror$1 break; rewrite ^/redirect(.*) /redirect$1 break; rewrite /favicon.ico /favicon.ico break; rewrite /robots.txt /robots.txt break; rewrite /(.*) /p/$1; proxy_pass http://127.0.0.1:9001; proxy_buffering off; proxy_set_header Host $host; proxy_pass_header Server; # proxy headers 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; # websocket proxying proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; } } # we're in the http context here map $http_upgrade $connection_upgrade { default upgrade; '' close; } # enforce HTTPS server { listen 80; listen [::]:80; server_name etherpad.example.com; return 301 https://$host$request_uri; }
Enregistrez le fichier en appuyant sur Ctrl + X et en saisissant Y lorsque vous y êtes invité une fois terminé.
Vérifiez la syntaxe du fichier de configuration Nginx.
$ sudo nginx -t nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Si vous obtenez l'erreur suivante, vous devrez modifier le fichier /etc/nginx/nginx.conf
pour ajouter/ajuster la taille de la variable server_names_hash_bucket_size
.
nginx: [emerg] could not build the server_names_hash, you should increase server_names_hash_bucket_size
Ouvrez le fichier /etc/nginx/nginx.conf
pour l'édition.
$ sudo nano /etc/nginx/nginx.conf
Ajoutez la ligne suivante avant la ligne include /etc/nginx/conf.d/*.conf;
.
server_names_hash_bucket_size 64;
Enregistrez le fichier en appuyant sur Ctrl + X et en saisissant Y lorsque vous y êtes invité. Validez à nouveau Nginx.
Enfin, démarrez le service Nginx pour activer la nouvelle configuration.
$ sudo systemctl start nginx
Lancez l'URL https://etherpad.example.com
dans votre navigateur et l'accueil Etherpad s'ouvrira. Vous pouvez désormais l'utiliser pour modifier des documents et inviter des collaborateurs.
Mise à jour d'Etherpad
La mise à jour d'Etherpad est facile. La première étape consiste à passer au shell utilisateur Etherpad.
$ sudo -u etherpad bash
Passez au /opt/etherpad/etherpad-lite
répertoire.
[[email protected] user] cd /opt/etherpad/etherpad-lite
Tirez le dernier référentiel Etherpad dans le /opt/etherpad/etherpad-lite
répertoire.
[[email protected] ~]$ git pull origin
Exécutez le run.sh
de l'Etherpad script pour configurer la dernière version d'Etherpad.
[[email protected] etherpad-lite]$ src/bin/run.sh
Conclusion
Dans ce didacticiel, nous avons configuré Etherpad Collaborative Editor avec le serveur Nginx et sécurisé à l'aide de certificats SSL Let's Encrypt. Votre installation Etherpad est prête à l'emploi et vous pouvez l'étendre avec plus de fonctionnalités, y compris les utilisateurs authentifiés, les plugins et les personnalisations de l'interface utilisateur.
Si vous avez des questions, postez-les dans les commentaires ci-dessous.