Cómo instalar Etherpad en Debian 12

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 versionado y formato integrado para equipos. Etherpad es un editor altamente personalizable con el soporte de varios plugins. Y también soporta formatos modernos de documentos como doc, pdf, odt, markdown, etc.

Esta guía te mostrará cómo instalar el editor colaborativo Etherpad en un servidor Debian 12. Te mostraremos la instalación de Etherpad con el servidor de base de datos MariaDB y el servidor web Nginx, también la seguridad de Etherpad con UFW (Uncomplicated Firewall) y SSL mediante Certbot y Letsencrypt.

Requisitos previos

Para completar esta guía, asegúrate de que tienes lo siguiente:

  • Un servidor Debian 12.
  • Un usuario no root con privilegios de administrador.
  • Un nombre de dominio que apunte a la dirección IP de tu servidor.

Instalación de dependencias

Etherpad es un software de código abierto para editores colaborativos escrito en JavaScript. Para instalar Etherpad, debes instalar el tiempo de ejecución de JavaScript en tu servidor Debian.

En el primer paso, instalarás las siguientes dependencias para Etherpad:

  • Node.js 18: un tiempo de ejecución de JavaScript para ejecutar Etherpad, que está escrito en JavaScript.
  • Npm: el gestor de paquetes de Node.js.
  • Servidor MariaDB: como base de datos para Etherpad.
  • Servidor web Nginx: como proxy inverso para Etherpad.

Sigamos adelante.

Ejecuta el siguiente comando apt update para actualizar y refrescar tu índice de paquetes Debian.

sudo apt update

actualizar repo

A continuación, instala las dependencias de los paquetes mediante el siguiente comando apt install. Introduce y para confirmar y pulsa ENTER para proceder a la instalación.

sudo apt install mariadb-server nginx ufw nodejs npm gzip git curl python3 libssl-dev

instalar dependencias

Una vez instaladas las dependencias, comprueba la versión de Node.js mediante el siguiente comando nodejs. Deberías obtener que Node.18 está instalado.

nodejs --version

comprobar nodejs

A continuación, comprueba el estado del servicio mariadb mediante los siguientes comandos systemctl. Deberías obtener que el servicio mariadb está habilitado y se ejecutará automáticamente al arrancar el sistema, y que el estado del servicio mariadb es en ejecución.

sudo systemctl is-enabled mariadb
sudo systemctl status mariadb

comprobar mariadb

Por último, comprueba el servicio nginx utilizando el siguiente comando. Asegúrate de que el servicio nginx se está ejecutando y está habilitado. Si está habilitado, el servicio se iniciará automáticamente al arrancar el sistema.

sudo systemctl is-enabled nginx
sudo systemctl status nginx

comprobar nginx

Configurar UFW (Cortafuegos sin complicaciones)

Después de instalar las dependencias, ahora vas a configurar UFW (Uncomplicated Firewall) para asegurar tu instalación de Etherpad. Si antes has instalado UFE, continúa configurando UFW.

Primero, ejecuta el siguiente comando para habilitar el perfil OpenSSH y permitir la conexión SSH. A continuación, inicia y habilita UFW (Cortafuegos sin complicaciones).

sudo ufw allow OpenSSH
sudo ufw enable

Cuando se te solicite, introduce y para iniciar y habilitar UFW. Si lo consigues, deberías obtener una salida como ésta:

activar ufw

A continuación, ejecuta el siguiente comando ufw para obtener los perfiles de cortafuegos disponibles y habilita el perfil«Nginx Full» para abrir los puertos HTTP y HTTPS.

sudo ufw app list
sudo ufw allow "Nginx Full"

Por último, recarga UFW para aplicar los cambios y verificar las reglas y perfiles habilitados en UFW.

sudo ufw reload
sudo ufw status

Deberías ver que la UFW está activa con los perfiles OpenSSH y Nginx Full habilitados.

configuración ufw

Configurar el servidor de base de datos MariaDB

En la siguiente sección, asegurarás tu servidor MariaDB mediante la utilidad mariadb-secure-installation y crearás una nueva base de datos y un nuevo usuario para Etherpad.

Ejecuta el comando mariadb-secure-installation que se indica a continuación para asegurar el servidor MariaDB. La utilidad mariadb-secure-installation te permite establecer la contraseña de root para MariaDB y aplicar algunos ajustes básicos de seguridad a tu servidor MariaDB.

sudo mariadb-secure-installation

Durante el proceso, se te pedirán algunos cambios en la configuración de MariaDB. Introduce Y para aplicar la configuración o n para no.

  • Pulsa ENTER cuando te pregunte por la contraseña raíz de MariaDB.
    Introduce n cuando te pregunte por el método de autenticación unix_socket.
    Introduce Y para establecer una nueva contraseña para el usuario raíz de MariaDB. A continuación, introduce la nueva contraseña y repite.
    Introduce Y para eliminar el usuario anónimo por defecto de MariaDB.
    A continuación, introduce Y de nuevo para desactivar el inicio de sesión remoto para el usuario raíz de MariaDB.
    Introduce Y para eliminar la prueba de base de datos por defecto de MariaDB.
    Por último, introduce Y de nuevo para recargar los privilegios de tabla y aplicar los cambios.

Una vez asegurado el servidor MariaDB, crearás una nueva base de datos y un nuevo usuario que utilizará Etherpad.

Ejecuta el siguiente comando de cliente mariadb para iniciar sesión en el servidor MariaDB. Introduce la contraseña de tu usuario raíz de MariaDB.

sudo mariadb -u root -p

Tras iniciar sesión, ejecuta las siguientes consultas para crear una nueva base de datos etherpad_lite_db y un usuario etherpaduser. asegúrate de cambiar la contraseña StrongPasswordEtherpadDB por la nueva contraseña de tu base de datos.

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

crear base de datos

Ahora verifica el usuario MariaDB etherpaduser mediante la siguiente consulta para asegurarte de que el usuario etherpaduser puede acceder a la base de datos etherpad_lite_db.

SHOW GRANTS FOR etherpaduser@localhost;

Asegúrate de que tienes una salida como la siguiente, que confirma que el usuario etherpaduser puede acceder a la base de datos etherpad_lite_db.

comprobar usuario

Escribe quit para salir del servidor MariaDB y terminar el paso.

Descarga y configuración de Etherpad

En esta sección, descargarás el código fuente de Etherpad e instalarás sus dependencias. Después, también configurarás Etherpad para que se ejecute sólo en localhost y configurarás Etherpad con el servidor MariaDB.

Ejecuta el siguiente comando para añadir un nuevo usuario de sistema etherpad con el directorio raíz por defecto /opt/etherpad-lite.

sudo adduser --system --no-create-home --home=/opt/etherpad-lite --group etherpad

Ahora descarga el código fuente de Etherpad mediante git al directorio /opt/etherpad-lite y cambia la propiedad del directorio /opt/etherpad-lite al usuario y grupo etherpad. Esto permitirá al usuario etherpad acceder al código fuente.

cd /opt && git clone --branch master https://github.com/ether/etherpad-lite.git 
sudo chown -R etherpad:etherpad /opt/etherpad-lite

crear usuario descargar etherpad

A continuación, ve al directorio /opt/etherpad-lite y ejecuta el script ./bin/run.sh para preparar el entorno del sistema para la instalación de Etherpad. Esto instalará las dependencias necesarias para Etherpad y ejecutará Etherpad con la configuración predeterminada.

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

Instalación de las dependencias de Node.js.

dependencias de etherpad

Una vez instaladas las dependencias, Etherpad debería ejecutarse con la configuración por defecto, y a continuación se muestra la salida que deberías obtener.

etherpad está en marcha

Pulsa Ctrl+c para terminar el proceso de Etherpad. Modificarás el archivo settings. json de configuración de Etherpad para configurar tu instalación.

Abre el archivo settings.json utilizando el siguiente comando del editor nano.

nano settings.json

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

  "title": "Etherpad Debian 12",

Cambia la ip a localhost o 127.0.0.1 para ejecutar Etherpad sólo en localhost.

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

Comenta la sección dbType para desactivar la configuración por defecto de la base de datos. También puedes eliminar las siguientes líneas.

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

Añade una nueva configuración dbType con mysql como base de datos por defecto para tu instalación de Etherpad. Asegúrate de cambiar los detalles del nombre de la base de datos, el usuario y la contraseña en la siguiente configuración.

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

Guarda los cambios y cierra el editor cuando hayas terminado.

Ejecutar Etherpad como servicio Systemd

Tras instalar y configurar Etherpad, crearás un nuevo archivo de servicio systemd para Etherpad. Esto te permitirá ejecutar Etherpad en segundo plano y gestionarlo fácilmente mediante la utilidad systemctl.

Crea un nuevo archivo de servicio systemd /etc/systemd/system/etherpad.service utilizando el editor nano.

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

Introduce la siguiente configuración para ejecutar Etherpad en segundo plano como un servicio systemd.

[Unit]
Description=Etherpad-lite, the collaborative editor.
After=syslog.target network.target mariadb.service
[Service]
Type=simple
User=etherpad
Group=etherpad
WorkingDirectory=/opt/etherpad-lite
Environment=NODE_ENV=production
ExecStart=/usr/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

Cuando hayas terminado, guarda el archivo y sal del editor.

A continuación, ejecuta el siguiente comando systemctl para recargar el gestor systemd y aplicar los nuevos servicios systemd.

sudo systemctl daemon-reload

Ahora inicia y activa el servicio etherpad mediante el siguiente comando systemctl. El Etherpad debería ejecutarse en segundo plano como un servicio systemd y se iniciará automáticamente al arrancar el sistema.

sudo systemctl start etherpad
sudo systemctl enable etherpad

ejecutar etherpad como servicio

Por último, verifica el servicio etherpad ejecutando el siguiente comando para asegurarte de que el etherpad se está ejecutando.

sudo systemctl status etherpad

La siguiente salida confirma que el servicio etherpad se está ejecutando, y que lo está haciendo en localhost con el puerto 9001.

comprobar etherpad

Introduce el siguiente comando ss para asegurarte de que el puerto 9001 es utilizado por la aplicación Node.js, que es Etherpad.

ss -tulpn | grep 9001

Llegados a este punto, Etherpad ya está instalado, pero para sacarle el máximo partido tendrás que configurar Nginx como proxy inverso y asegurar Etherpad mediante certificados SSL/TLS.

puerto de control

Configurar Nginx como proxy inverso

En esta sección, crearás un nuevo bloque de servidor Nginx que se utilizará como proxy inverso para Etherpad. Por tanto, asegúrate de que tienes el nombre de dominio apuntando a la dirección IP de tu servidor Debian antes de empezar.

Crea una nueva configuración de bloque de servidor Nginx /etc/nginx/sites-available/etherpad.conf utilizando el comando nano.

sudo nano /etc/nginx/sites-available/etherpad.conf

Introduce la siguiente configuración y asegúrate de cambiar el nombre de dominio por tu dominio de etherpad.

server {
    listen       80;
    server_name  etherpad.hwdomain.io;
access_log  /var/log/nginx/eplite.access.log;
error_log   /var/log/nginx/eplite.error.log;

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 sal del editor cuando hayas terminado.

A continuación, ejecuta el siguiente comando para activar el archivo de bloque del servidor etherpad.conf y verificar las configuraciones generales de Nginx.

sudo ln -s /etc/nginx/sites-available/etherpad.conf /etc/nginx/sites-enabled/
sudo nginx -t

Si la configuración de Nginx es correcta y adecuada, deberías obtener una salida como la sintaxis es correcta – la prueba se ha realizado correctamente.

configurar proxy inverso nginx

Ahora ejecuta el siguiente comando systemctl para reiniciar Nginx y aplicar los cambios.

sudo systemctl restart nginx

Por último, para asegurarte de que la configuración de Nginx es correcta, visita tu nombre de dominio de Etherpad (es decir: http://etherpad.hwdomain.io/) utilizando tu navegador web preferido. Si se ha realizado correctamente, deberías ver la pantalla de Etherpad.

Proteger Etherpad con certificados SSL/TLS

Tras configurar Nginx como proxy inverso, ahora asegurarás Etherpad con certificados SSL/TLS que se generarán a través de Certbot y Letsencrypt. También configurarás la redirección automática de HTTP a HTTPS dentro de Etherpad mediante el plugin Certbot Nginx.

Ejecuta el siguiente comando apt install para instalar Cetbot y el plugin Cetbot Nginx. Introduce y para confirmar y pulsa ENTER para proceder con la instalación.

sudo apt install certbot python3-certbot-nginx

instalar certbot

Una vez instalado Certbot, ejecuta el siguiente comando certbot para generar el Letsencrypt SSL/TLS para tu nombre de dominio Etherpad. Asegúrate de cambiar el nombre de dominio y la dirección de correo electrónico en el siguiente comando.

sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d etherpad.hwdomain.io

Una vez finalizado el proceso, los nuevos certificados SSL estarán disponibles en el directorio /etc/letsencrypt/live/domain.com. Y la configuración del bloque del servidor Nginx para Etherpad se configurará automáticamente con HTTPS.

Inicia tu navegador web y visita tu nombre de dominio Etherpad (es decir: http://etherpad.hwdomain.io/). Serás redirigido automáticamente a la conexión segura HTTPS, que se configura mediante el plugin Certbot Nginx.

Ahora introduce el nuevo nombre del pad para asegurarte de que puedes crear un nuevo pad o documento. Haz clic en Aceptar para confirmar.

crear nuevo pad

Una vez creado el pad, disfruta de la colaboración documental autoalojada a través de Etherpad.

etherpad como editor colaborativo

Conclusión

Ya está. Has completado la instalación de Etherpad en tu máquina Debian 12. Has instalado Etherpad con el servidor de base de datos MariaDB y el servidor web Nginx. También has asegurado tu Etherpad con certificados SSL/TLS de Letsencrypt y UFW (Uncomplicated Firewall.

A partir de aquí, ya puedes utilizar Etherpad como editor colaborativo con tu amigo. O también puedes instalar plugins/addons de Etherpad para aprovechar la funcionalidad que se adapte a tus necesidades.

También te podría gustar...