GNU/Linux >> Tutoriels Linux >  >> Rocky Linux

Comment installer l'éditeur Web collaboratif Etherpad sur Rocky Linux 8

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

  1. Un système exécutant Rocky Linux 8.

  2. Un utilisateur non root avec des privilèges sudo.

  3. Un nom de domaine pointé vers le serveur.

  4. 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.

  5. 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.


Rocky Linux
  1. Comment installer phpMyAdmin sur Rocky Linux

  2. Comment installer MariaDB 10.6 sur Rocky Linux 8

  3. Comment installer GoAccess Web Log Analyzer sur Rocky Linux 8

  4. Comment installer Python 3.9 sur Rocky Linux 8

  5. Comment installer MariaDB sur Rocky Linux 8

Comment installer MariaDB 10 sur AlmaLinux 8 ou Rocky Linux

Comment installer TeamViewer sur Rocky Linux 8

Installer MariaDB 10.6 sur Rocky Linux 8

Comment installer le serveur MariaDB sur Rocky Linux 8

Comment installer la plateforme de prise de notes collaborative Etherpad sous Linux

Comment installer l'éditeur vim sur Rocky Linux 8