GNU/Linux >> Tutoriales Linux >  >> Rocky Linux

Cómo instalar el editor web colaborativo Etherpad en Rocky Linux 8

Etherpad es un editor en línea de código abierto que proporciona edición colaborativa en tiempo real en el navegador. Está escrito en Node.js y puede ser autoalojado para trabajar con varias plataformas como WordPress, Drupal, Odoo, Discourse, Joomla, etc.

En este tutorial, instalaremos Etherpad en un servidor Rocky Linux 8, utilizando la base de datos MariaDB para almacenar nuestros datos. También usaremos Nginx como proxy inverso para la aplicación e instalaremos un certificado SSL usando Let's Encrypt para habilitar las conexiones HTTPS a nuestra instancia de Etherpad.

Requisitos

  1. Un sistema que ejecuta Rocky Linux 8.

  2. Un usuario no root con privilegios sudo.

  3. Un nombre de dominio apuntado al servidor.

  4. Nodejs instalado. Siga nuestra guía sobre cómo instalar Nodejs en el servidor Rocky Linux 8. Utilice cualquiera de los dos métodos especificados.

  5. Asegúrate de que todo esté actualizado.

    $ sudo dnf update
    

Paso 1:configurar el cortafuegos

Rocky Linux usa Firewalld Firewall. Compruebe el estado del cortafuegos.

$ sudo firewall-cmd --state
running

Esto indica que está funcionando correctamente.

El cortafuegos funciona con diferentes zonas y la zona pública es la predeterminada, que usaremos. Enumere todos los servicios y puertos activos en el firewall.

$ sudo firewall-cmd --permanent --list-services

Debería mostrar el siguiente resultado.

cockpit dhcpv6-client ssh

Permitir puertos HTTP y HTTPS.

$ sudo firewall-cmd --permanent --add-service=http
$ sudo firewall-cmd --permanent --add-service=https

Abre el 9001 puerto utilizado por la aplicación Etherpad.

$ sudo firewall-cmd --permanent --add-port=9001/tcp

Vuelva a comprobar el estado del cortafuegos.

$ sudo firewall-cmd --permanent --list-services

Debería ver un resultado similar.

cockpit dhcpv6-client http https ssh

Vuelva a cargar el cortafuegos para habilitar los cambios.

$ sudo firewall-cmd --reload

Paso 2:instalar Git

Antes de instalar Etherpad, necesitamos instalar Git. Ejecute el siguiente comando para instalar Git.

$ sudo dnf install git

Verifique la instalación.

$ git --version
git version 2.27.0

Agregar configuración inicial.

$ git config --global user.name "YourName"
$ git config --global user.email "[email protected]"

Enumere la configuración que acaba de configurar.

$ git config --list
user.name=YourName
[email protected]

Paso 3:instalar MariaDB

Dado que usaremos la base de datos MariaDB para almacenar los datos de Etherpad, primero debemos instalarlo y configurarlo.

El repositorio Rocky Linux AppStream viene con MariaDB. Para enumerar todas las versiones disponibles de MariaDB instaladas, ejecute el siguiente comando.

$ 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 versión predeterminada se establece en 10.3. Sin embargo, puede instalar la última versión usando el siguiente comando.

$ sudo dnf module enable mariadb:10.5

Instale MariaDB.

$ sudo dnf install mariadb-server

Habilite e inicie el servicio MariaDB.

$ sudo systemctl enable mariadb --now

Consulta el estado del servicio.

$ sudo systemctl status mariadb

Proteja el servidor MariaDB.

$ sudo mysql_secure_installation

Se enfrentará a varias indicaciones. Respóndelas de la siguiente manera.

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

Ahora puede conectarse al servidor MariaDB usando el siguiente comando.

$ sudo mysql 

Paso 4:configurar MariaDB

Inicie sesión en el shell de MariaDB.

$ sudo mysql 

Cree una nueva base de datos para Etherpad.

$ create database `etherpad_lite_db`;

Cree un nuevo usuario de base de datos.

$ CREATE USER 'etherpaduser'@'localhost' identified by 'password';

Utilice una contraseña segura.

Otorgar permisos sobre la base de datos al usuario.

$ grant CREATE,ALTER,SELECT,INSERT,UPDATE,DELETE on `etherpad_lite_db`.* to '<etherpaduser>'@'localhost';

Salga del shell de MySQL.

$ exit

Paso 5:descargar e instalar Etherpad

Para instalar Etherpad, descargaremos su código fuente y lo construiremos.

El primer paso es crear un nuevo etherpad usuario usando el siguiente comando.

$ sudo adduser --system --home /opt/etherpad --create-home --user-group etherpad

Este comando crea un --system usuario, lo que significa que no puede iniciar sesión y no tiene contraseña. También le damos un directorio de inicio /opt/etherpad que es donde descargaremos Etherpad. El --create-home flag crea el directorio de inicio con los permisos correctos. El --user-group flag crea un grupo con el mismo nombre que el nombre de usuario.

Cambiar al etherpad usuario para descargar e instalar la aplicación.

$ sudo -u etherpad bash

Cambie a /opt/etherpad directorio.

[[email protected] user] cd /opt/etherpad

Clone el repositorio de Etherpad en /opt/etherpad directorio.

[[email protected] ~]$ git clone --branch master git://github.com/ether/etherpad-lite.git

Cambie al directorio recién descargado.

[[email protected] ~]$ cd etherpad-lite

Ejecute el run.sh de Etherpad script para configurar e instalar dependencias.

[[email protected] etherpad-lite]$ src/bin/run.sh

Puede iniciar la URL http://YOURSERVERIP:9001 en el navegador para iniciar Etherpad. Obtendrá la siguiente pantalla.

Hay un problema con la instalación anterior. Requiere que mantenga abierto el shell actual con Node ejecutándose en primer plano. Para que sea una instalación persistente, necesitamos ejecutar Etherpad como un servicio. Presione Ctrl + C en su terminal para detener la ejecución de Etherpad.

Paso 6:configurar Etherpad

Antes de continuar, debemos establecer algunos ajustes y configurar nuestra instalación de acuerdo con nuestras necesidades. Etherpad almacena su configuración en settings.json archivo en el directorio de instalación.

Abra el archivo para editarlo.

[[email protected] etherpad-lite]$ nano settings.json

El archivo de configuración tiene el formato JSON. Lo primero que debe configurar es la configuración de la base de datos.

Encuentra el siguiente código y coméntalo poniendo // frente a él.

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

Luego, encuentre el siguiente código y cambie sus valores de la siguiente manera. Asegúrate de eliminar /* y */ al principio y al final.

  "dbType" : "mysql",
  "dbSettings" : {
    "user":     "etherpaduser",
    "host":     "localhost",
    "port":     3306,
    "password": "password",
    "database": "etherpad_lite_db",
    "charset":  "utf8mb4"
  },

Finalmente, desplácese un poco hacia abajo para encontrar el trustProxy configuración y cambiar su valor de false a true .

  "trustProxy": true,

Esta configuración es necesaria para que Etherpad funcione junto con Nginx.

Guarde el archivo presionando Ctrl + X e ingresando Y cuando se le solicite una vez terminado.

Salga del shell de usuario de Etherpad.

[[email protected] etherpad-lite]$ exit

Paso 7:crear el servicio Etherpad

Para iniciar Etherpad en el arranque y administrar el proceso usando systemctl , necesitamos crear un archivo de servicio.

Cree y abra el archivo de servicio.

$ sudo nano /etc/systemd/system/etherpad.service

Pegue el siguiente código en él.

[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

Guarde el archivo presionando Ctrl + X e ingresando Y cuando se le solicite una vez terminado.

Vuelva a cargar el demonio de servicio para obtener la nueva configuración.

$ sudo systemctl daemon-reload

Habilite Iniciar el servicio Etherpad.

$ sudo systemctl enable etherpad --now

Consulta el estado del servicio.

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

Paso 8:instale SSL con Let's Encrypt

Para instalar un certificado SSL usando Let's Encrypt, necesitamos instalar la herramienta Certbot.

En primer lugar, debe descargar e instalar el repositorio de EPEL.

$ sudo dnf install epel-release

Ejecute los siguientes comandos para instalar Certbot.

$ sudo dnf install certbot

Genere el certificado SSL.

$ sudo certbot certonly --standalone --agree-tos --preferred-challenges http -m [email protected] -d example.com

El comando anterior descargará un certificado en /etc/letsencrypt/live/etherpad.example.com directorio en su servidor.

Generar un grupo Diffie-Hellman certificado.

$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

Cree un directorio webroot de desafío para la renovación automática de Let's Encrypt.

$ sudo mkdir -p /var/lib/letsencrypt

Cree un trabajo cron para renovar el SSL. Se ejecutará todos los días para verificar el certificado y renovarlo si es necesario. Para eso, primero crea el archivo /etc/cron.daily/certbot-renew y ábralo para editarlo.

$ sudo nano /etc/cron.daily/certbot-renew

Pegue el siguiente código.

#!/bin/sh
certbot renew --cert-name etherpad.example.com --webroot -w /var/lib/letsencrypt/ --post-hook "systemctl reload nginx"

Guarde el archivo presionando Ctrl + X e ingresando Y cuando se le solicite.

Cambie los permisos en el archivo de tareas para que sea ejecutable.

$ sudo chmod +x /etc/cron.daily/certbot-renew

Paso 9:instalar y configurar Nginx

Rocky Linux viene con una versión anterior de Nginx. Para instalar la última versión, debe agregar el repositorio Nginx.

Cree y abra el archivo /etc/yum.repos.d/nginx.repo para editar.

$ sudo nano /etc/yum.repos.d/nginx.repo

Pegue el siguiente código en él.

[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

Guarde el archivo presionando Ctrl + X e ingresando Y cuando se le solicite una vez terminado.

Instala Nginx.

$ sudo dnf install nginx

Habilite el servicio Nginx.

$ sudo systemctl enable nginx

A continuación, cree y abra el /etc/nginx/conf.d/etherpad.conf para editar.

$ sudo nano /etc/nginx/conf.d/etherpad.conf

Pegue el siguiente código en él.

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;
}

Guarde el archivo presionando Ctrl + X e ingresando Y cuando se le solicite una vez terminado.

Verifique la sintaxis del archivo de configuración de 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 obtiene el siguiente error, deberá editar el archivo /etc/nginx/nginx.conf para agregar/ajustar el tamaño 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

Abra el archivo /etc/nginx/nginx.conf para editar.

$ sudo nano /etc/nginx/nginx.conf

Agregue la siguiente línea antes de la línea include /etc/nginx/conf.d/*.conf; .

server_names_hash_bucket_size  64;

Guarde el archivo presionando Ctrl + X e ingresando Y Cuando se le solicite. Vuelva a validar Nginx.

Finalmente, inicie el servicio Nginx para habilitar la nueva configuración.

$ sudo systemctl start nginx

Inicie la URL https://etherpad.example.com en su navegador y se abrirá Etherpad home. Ahora puede usarlo para editar documentos e invitar a colaboradores.

Actualización de Etherpad

Actualizar Etherpad es fácil. El primer paso es cambiar al shell de usuario de Etherpad.

$ sudo -u etherpad bash

Cambie a /opt/etherpad/etherpad-lite directorio.

[[email protected] user] cd /opt/etherpad/etherpad-lite

Obtenga el último repositorio de Etherpad en /opt/etherpad/etherpad-lite directorio.

[[email protected] ~]$ git pull origin

Ejecute el run.sh de Etherpad script para configurar la última versión de Etherpad.

[[email protected] etherpad-lite]$ src/bin/run.sh

Conclusión

En este tutorial, configuramos Etherpad Collaborative Editor con el servidor Nginx y lo aseguramos con los certificados Let's Encrypt SSL. Su instalación de Etherpad está lista para usar y puede ampliarla con más funciones, incluidos usuarios autenticados, complementos y personalizaciones de la interfaz de usuario.

Si tiene alguna pregunta, publíquela en los comentarios a continuación.


Rocky Linux
  1. Cómo instalar phpMyAdmin en Rocky Linux

  2. Cómo instalar MariaDB 10.6 en Rocky Linux 8

  3. Cómo instalar GoAccess Web Log Analyzer en Rocky Linux 8

  4. Cómo instalar Python 3.9 en Rocky Linux 8

  5. Cómo instalar MariaDB en Rocky Linux 8

Cómo instalar MariaDB 10 en AlmaLinux 8 o Rocky Linux

Cómo instalar TeamViewer en Rocky Linux 8

Instale MariaDB 10.6 en Rocky Linux 8

Cómo instalar el servidor MariaDB en Rocky Linux 8

Cómo instalar la plataforma de toma de notas colaborativa Etherpad en Linux

Cómo instalar el editor vim en Rocky Linux 8