Cómo instalar Etherpad en AlmaLinux 9

Etherpad es una alternativa gratuita y de código abierto a servicios como Google Docs y Zoho Writer. Etherpad es un editor de texto colaborativo y en tiempo real para tu equipo, accesible desde cualquier lugar y en cualquier momento porque Etherpad es un editor de texto basado en web.

Cualquier cambio en Etherpad se produce en tiempo real, y además Etherpad admite el control de versiones y el formato integrado para equipos. Etherpad es un editor altamente personalizable con el apoyo de varios plugins. Y también soporta formatos de documentos modernos como doc, pdf, odt, markdown, etc.

Este tutorial te mostrará cómo instalar Etherpad en un servidor AlmaLinux 9 con un servidor de base de datos MariaDB y un servidor web Nginx. También protegerás Etherpad mediante certificados SSL para permitir un acceso seguro.

Requisitos previos

Para completar este tutorial, asegúrate de que tienes lo siguiente:

  • Un servidor AlmaLinux 9 – Esta demo utiliza un AlmaLinux con el nombre de host almalinux9.
  • Un usuario no root con privilegios sudo.
  • Un nombre de dominio apuntando a la dirección IP del servidor.
  • Certificados SSL generados mediante Letsecnrypt y Certbot.

Instalación de dependencias

Antes de instalar Etherpad, debes instalar algunas de las dependencias que necesita Etherpad, entre las que se incluyen:

  • Herramientas de desarrollo
  • Node.js y NPM (Node Package Manager)
  • Servidor de base de datos MariaDB
  • Servidor web Nginx

Sigue estos pasos para instalar las dependencias de Etherpad.

Instalar Herramientas de Desarrollo

En primer lugar, debes instalar«Herramientas de Desarrollo» en tu servidor AlmaLinux. Introduce el siguiente comando dnf para instalar «Herramientas deDesarrollo«, introduce y, y pulsa ENTER para continuar.

sudo dnf group install "Development Tools"

A continuación, ejecuta el siguiente comando para instalar algunas dependencias adicionales. Cuando se te pida, introduce y para confirmar y pulsa ENTER.

sudo dnf install gzip git curl python3-devel openssl-devel pkg-config

instalar dependencias

Instalar Node.js y NPM

Etherpad es un editor web de colaboración y en tiempo real escrito principalmente con Node.js. Para instalarlo, debes instalar el tiempo de ejecución JavaScript de Node.js y NPM (Node Package Manager).

En el momento de escribir esto, Etherpad requería al menos Node.js v16, que está disponible por defecto en el repositorio appstream de AlmaLinux y puedes instalarlo mediante DNF.

Ejecuta el siguiente comando dnf para instalar Node.js y NPM. Introduce y para confirmar la instalación y pulsa ENTER.

sudo dnf install nodejs npm

Una vez instalado Node.js, ejecuta el siguiente comando para añadir el directorio /usr/local/bin a la variable de entorno PATH. Esto asegurará que algunos archivos binarios que se instalan a través de NPM puedan ejecutarse en el servidor.

echo "export PATH=$PATH:/usr/local/bin" >> ~/.bashrc
source ~/.bashrc

A continuación, ejecuta el siguiente comando para localizar ambos archivos binarios de Node.js y NPM.

which node
which npm

A continuación, verifica la versión de Node.js y NPM utilizando el siguiente comando.

node --version
npm --version

La salida mostrada confirma que Node.js v16 y NPM 8. x están instalados, y que ambos archivos binarios se encuentran en el directorio /bin.

comprobando node.js y npm

Instalación del servidor MariaDB

Por defecto, el Etherpad instalado utiliza SQLite como base de datos. Puedes utilizar MariaDB/MySQL como base de datos para grandes despliegues de tu instalación de Etherpad.

Ejecuta el siguiente comando dnf para instalar MariaDB Server. Cuando se te solicite, introduce y para confirmar y pulsa INTRO.

sudo dnf install mariadb-server

instalar mariadb

Una vez instalado MariaDB, ejecuta el siguiente comando para iniciar y habilitar el servicio MariaDB.

sudo systemctl start mariadb
sudo systemctl enable mariadb

A continuación, comprueba el estado del servicio MariaDB utilizando el comando siguiente.

sudo systemctl status mariadb

Si el servidor MariaDB se está ejecutando, el resultado debería ser el siguiente:

start enable mariadb

Instalación del servidor web Nginx

Tras instalar el servidor MariaDB, instalarás el servidor web Nginx que se utilizará como proxy inverso para Etherpad. Así que, antes de seguir adelante, asegúrate de que tienes un nombre de dominio apuntando a la dirección IP de tu servidor y certificados SSL generados a través de Letsencrypt y Certbot.

Ejecuta el siguiente comando dnf para instalar el servidor web Nginx. Cuando se te solicite, introduce para confirmar y pulsa INTRO.

sudo dnf install nginx

instalar nginx

Ahora, ejecuta el siguiente comando para iniciar y habilitar el servicio Nginx.

sudo systemctl start nginx
sudo systemctl enable nginx

Después, introduce el siguiente comando para verificar el servicio Nginx y asegurarte de que se está ejecutando.

sudo systemctl status nginx

Si el servicio Nginx se está ejecutando, deberías obtener una salida como ésta:

start enable verify nginx

A continuación, ejecuta el siguiente comando para abrir los puertos HTTP y HTTPS en tu servidor.

sudo firewall-cmd --add-service={http,https} --permanent
sudo firewall-cmd --reload

Comprueba la lista de puertos y servicios abiertos con el siguiente comando. Deberías ver que tanto HTTP como HTTPS están habilitados en firewalld.

sudo firewall-cmd --list-all

configurar firewalld

Configurar el servidor MariaDB

En esta sección, protegerás el servidor MariaDB con la utilidad mariadb-secure-installation y, a continuación, crearás una nueva base de datos y un nuevo usuario que se utilizarán para Etherpad.

Ejecuta el siguiente comando para empezar a asegurar el servidor MariaDB.

sudo mariadb-secure-installation

Una vez ejecutado el comando, se te preguntará por las siguientes configuraciones:

  • Cambia el método de autenticación para el usuario raíz de MariaDB a unix_socket. Introduce n para No.
    Configurar la contraseña raíz de MariaDB. Introduce y para confirmar y escribe la nueva contraseña raíz de MariaDB y repite.
    Desactivar el inicio de sesión remoto para el usuario raíz de MariaDB. Introduce y para confirmar.
    Eliminar la prueba de base de datos predeterminada de MariaDB. Introduce y para confirmar.
    Elimina el usuario anónimo de MariaDB. Introduce y para confirmar.
    Por último, vuelve a introducir y para recargar los privilegios de la tabla y aplicar los cambios.

Con el servidor MariaDB protegido, a continuación crearás una nueva base de datos y un nuevo usuario MariaDB.

Accede al servidor MariaDB utilizando el comando mariadb que se indica a continuación.

sudo mariadb -u root -p

Ejecuta las siguientes consultas para crear una nueva base de datos MariaDB y un nuevo usuario para Etherpad. En este ejemplo, crearás una nueva base de datos etherpad_lite_db y el usuario etherpaduser con la contraseña StrongPasswordEtherpadDB.

CREATE DATABASE etherpad_lite_db CHARACTER SET utf8mb4;
CREATE USER etherpaduser@localhost IDENTIFIED BY 'StrongPasswordEtherpadDB';
GRANT CREATE,ALTER,SELECT,INSERT,UPDATE,DELETE on etherpad_lite_db.* to etherpaduser@localhost;
FLUSH PRIVILEGES;

crear nueva base de datos y usuario

Ahora, ejecuta la siguiente consulta para verificar los privilegios del usuario MariaDB etherpaduser.

SHOW GRANTS FOR etherpaduser@localhost;
quit

Observarás que el usuario MariaDB etherpaduser tiene privilegios para acceder a la base de datos etherpad_lite_db.

mostrar privilegios del usuario mariadb

Escribe quit para salir de MariaDB.

Descarga e instalación de Etherpad

En esta sección, iniciarás la instalación de Etherpad creando el usuario del sistema, descargando el código fuente de Etherpad, instalando las dependencias para Etherpad, integrando Etherpad con la base de datos MariaDB y, a continuación, verificando la instalación ejecutándola a través de la línea de comandos.

En primer lugar, ejecuta el siguiente comando para crear un nuevo usuario y grupo del sistema‘etherpad‘. Este usuario se utilizará para ejecutar el servicio Etherpad.

sudo groupadd etherpad
sudo adduser -r -M -d /opt/etherpad-lite -g etherpad etherpad

Descarga el código fuente de Etherpad mediante git al directorio de destino /opt/etherpad-lite.

git clone --branch master https://github.com/ether/etherpad-lite.git /opt/etherpad-lite

Una vez descargado el código fuente de Etherpad, ejecuta el siguiente comando para cambiar la propiedad del directorio /opt/etherpad-lite al usuario y grupo«etherpad«.

sudo chown -R etherpad:etherpad /opt/etherpad-lite

crear usuario y descargar el código fuente de etherpad

A continuación, mueve el directorio de trabajo al directorio /opt/etherpad-lite e instala las dependencias de Etherpad utilizando el siguiente comando.

cd /opt/etherpad-lite
sudo su -s /bin/bash -c "./bin/installDeps.sh" etherpad

Tras ejecutar el comando, deberías obtener el proceso de instalación de la siguiente manera:

instala las dependencias de etherpad

Cuando termine la instalación, abre el archivo settings.json de configuración de Etherpad utilizando el siguiente comando del editor nano.

nano settings.json

Cambia el título de tu instalación de Etherpad.

  "title": "Etherpad AlmaLinux 9",

Cambia la dirección IP por defecto para que Etherpad se ejecute a localhost o 127.0.0.1.

  "ip": "127.0.0.1",
  "port": 9001,

Elimina la configuración por defecto de la base de datos que aparece a continuación.

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

Cambia la base de datos de detalles para utilizar el servidor MySQL/MariaDB de esta forma. Y asegúrate de cambiar el nombre de la base de datos, el usuario y la contraseña.

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

Guarda el archivo y sal del editor cuando hayas terminado.

A continuación, ejecuta el siguiente comando para verificar y ejecutar el Etherpad.

/bin/node --experimental-worker /opt/etherpad-lite/node_modules/ep_etherpad-lite/node/server.js

Si la configuración de la base de datos y la instalación de Etherpad se han realizado correctamente, se mostrará la siguiente salida:

comprobación de funcionamiento etherpad

Pulsa Ctrl+c para finalizar el proceso.

Ejecutar Etherpad como servicio Systemd

Con el Etherpad instalado, ahora vas a configurar Etherpad como un servicio systemd. Esto te permitirá ejecutar Etherpad en segundo plano y gestionarlo fácilmente a través de la línea de comandos systemctl.

Para empezar, crea un nuevo archivo de servicio systemd /lib/systemd/system/etherpad.service utilizando el siguiente comando del editor nano.

sudo nano /lib/systemd/system/etherpad.service

Introduce la siguiente configuración en el archivo.

[Unit]
Description=Etherpad-lite, the collaborative editor.
After=syslog.target network.target mariadb.service nginx.service
[Service]
Type=simple
User=etherpad
Group=etherpad
WorkingDirectory=/opt/etherpad-lite
Environment=NODE_ENV=production
ExecStart=/bin/node --experimental-worker /opt/etherpad-lite/node_modules/ep_etherpad-lite/node/server.js
# use mysql plus a complete settings.json to avoid Service hold-off time over, scheduling restart.
Restart=always

[Install]
WantedBy=multi-user.target

Guarda y cierra el archivo cuando hayas terminado.

Ahora, ejecuta el siguiente comando para recargar el gestor systemd y aplicar el archivo de servicio Etherpad a tu sistema.

sudo systemctl daemon-reload

A continuación, inicia y habilita el servicio Etherpad utilizando el siguiente comando.

sudo systemctl start etherpad
sudo systemctl enable etherpad

Verifica el servicio Etherpad utilizando el siguiente comando. Si el servicio Etherpad se está ejecutando, deberías obtener una salida como«activo (en ejecución)«.

sudo systemctl status etherpad

verificar el servicio etherpad

También puedes verificar la lista de puertos abiertos en tu sistema utilizando el siguiente comando. Y deberías ver que Etherpad utiliza el puerto 9001.

ss -tulpn | grep 9001

comprobar puerto etherpad

Configurar Nginx como proxy inverso

Llegados a este punto, el Etherpad está funcionando en el puerto 9001. Para hacerlo accesible a los usuarios finales, puedes utilizar Nginx, que se utilizará como proxy inverso. Antes de empezar, asegúrate de que tienes el nombre de dominio que se utilizará para Etherpad, y asegúrate de que has generado certificados SSL a través de Letsencrypt y Certbot.

Crea una nueva configuración de bloque de servidor Nginx /etc/nginx/conf.d/etherpad.conf utilizando el comando del editor nano que aparece a continuación.

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

Introduce la siguiente configuración y asegúrate de cambiar los detalles del nombre de dominio y la ruta de los certificados SSL.

# enforce HTTPS
server {
    listen       80;
    server_name  etherpad.hwdomain.io;
    return 301   https://$host$request_uri;
}
# we're in the http context here
map $http_upgrade $connection_upgrade {
default upgrade;
''      close;
}

server {
listen       443 ssl http2;
server_name  etherpad.hwdomain.io;

access_log  /var/log/nginx/eplite.access.log;
error_log   /var/log/nginx/eplite.error.log;

ssl_certificate      /etc/letsencrypt/live/etherpad.hwdomain.io/fullchain.pem;
ssl_certificate_key  /etc/letsencrypt/live/etherpad.hwdomain.io/privkey.pem;

ssl_session_timeout  5m;

ssl_protocols TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS";

location / {
proxy_pass         http://127.0.0.1:9001;
proxy_buffering    off; # be careful, this line doesn't override any proxy_buffering on set in a conf.d/file.conf
proxy_set_header   Host $host;
proxy_pass_header  Server;

# Note you might want to pass these headers etc too.
proxy_set_header    X-Real-IP $remote_addr; # https://nginx.org/en/docs/http/ngx_http_proxy_module.html
proxy_set_header    X-Forwarded-For $remote_addr; # EP logs to show the actual remote IP
proxy_set_header    X-Forwarded-Proto $scheme; # for EP to set secure cookie flag when https is used
proxy_http_version  1.1; # 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;
}
}

Guarda el archivo y cierra el editor cuando hayas terminado.

Ahora, ejecuta el siguiente comando para asegurarte de que tienes la configuración correcta y adecuada. Si es correcta, deberías recibir un mensaje como «Lasintaxis es correcta – la prueba se ha realizado correctamente«.

sudo nginx -t

A continuación, introduce el siguiente comando para reiniciar el servicio Nginx y aplicar los cambios.

sudo systemctl restart nginx

configurar nginx como proxy inverso

Después, inicia tu navegador web y visita el nombre de dominio de instalación de Etherpad (es decir: https://etherpad.hwdomain.io/). Deberías ver la página de inicio por defecto de tu editor colaborativo Etherpad.

Ahora crea un nuevo pad escribiendo el nombre del pad y haz clic en Aceptar.

crear nuevo pad

A continuación puedes ver que ya puedes empezar a utilizar Etherpad como editor colaborativo.

etehrpad editor colaborador

Conclusión

Enhorabuena, has completado la instalación de Etherpad con la base de datos MariaDB y el servidor web Nginx en un servidor AlmaLinux 9. Además, has asegurado Etherpad con certificados SSL. Ahora puedes empezar a utilizar Etherpad como editor colaborativo principal con tus amigos/grupos/equipo.

También te podría gustar...