Cómo instalar Etherpad con Nginx y SSL en Debian 11

1 mar 2022 10 min di lettura
Cómo instalar Etherpad con Nginx y SSL en Debian 11
Tabla de contenidos

Introducción

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 su equipo, es accesible desde cualquier lugar y en cualquier momento porque Etherpad es un editor de texto basado en la web.

Todos los cambios en Etherpad se realizan en tiempo real y etherpad también admite el control de versiones y el formateo integrado para equipos. Etherpad es un editor altamente personalizable con soporte para varios complementos. Y también admite formatos de documentos modernos como doc, pdf, odt, markdown, etc.

En este tutorial, instalará y configurará el editor colaborativo en tiempo real de Etherpad en Debian 11 Bullseye. Este tutorial utiliza MariaDB como base de datos y el servidor web Nginx como proxy inverso con HTTPS seguro habilitado. Eventualmente, tendrá la red Ethernet instalada y asegurada mediante el cifrado seguro HTTPS.

Si desea instalar Etherpad en un servidor remoto, continúe leyendo; de lo contrario, omita el primer párrafo "Conexión al servidor" y lea el siguiente.

Conexión al servidor

Para acceder al servidor, necesita saber la dirección IP. También necesitará su nombre de usuario y contraseña para la autenticación. Para conectarse al servidor como root escriba el siguiente comando:

ssh [email protected]_DEL_SERVER

A continuación, deberá ingresar la contraseña de usuario raíz.

Si no está usando el usuario raíz, puede iniciar sesión con otro nombre de usuario usando el mismo comando, luego cambie la raíz a su nombre de usuario :

ssh [email protected]_DEL_SERVER

A continuación, se le pedirá que introduzca su contraseña de usuario.

El puerto estándar para conectarse a través de ssh es 22 , si su servidor usa un puerto diferente, deberá especificarlo usando el parámetro -p , luego escriba el siguiente comando:

ssh [email protected]_DEL_SERVER -p PORTA

Requisitos previos

Para completar este tutorial, primero necesitará los siguientes requisitos:

  • Un servidor Debian 11, puede usar 1 GB de RAM para realizar pruebas. Para la producción, puede utilizar varios recursos, según el entorno y el uso.
  • Un usuario no root con privilegios de root. Opcionalmente, puede utilizar el usuario raíz.
  • Un nombre de dominio para instalar y asegurarse de que apunte a la dirección IP del servidor. En este ejemplo usaremos el dominio ' etherpad.example.io '.

Cuando tenga todos estos requisitos previos, vaya a la primera sección para comenzar la instalación.

Instalar dependencias de paquetes

Etherpad es una aplicación web basada en Node.js. Al momento de escribir, la última versión de Etherpad es xxx y requiere al menos la versión 14.x de Node.js. En esta sección, instalará algunas dependencias de paquetes, incluido Node.js en el servidor Debian 11.

Primero, actualice la lista de índice de paquetes, luego instale las dependencias de compilación ejecutando el siguiente comando:

sudo apt update
sudo apt install gzip git curl python libssl-dev pkg-config gcc g++ make build-essential -y

En este tutorial, instalará Node.js desde el repositorio de Nodesource, que proporciona varias versiones de Node.js. Este tutorial utiliza la versión 16.x de Node.js para la instalación de Etherpad.

Ahora, ejecute el siguiente comando para agregar el repositorio de Node.js a su sistema. Este comando agregará automáticamente el repositorio de Nodesource para actualizar el índice del paquete:

curl -sL https://deb.nodesource.com/setup_16.x | sudo -E bash -

Luego, instale Node.js 16.x desde el repositorio de Nodesource ejecutando el siguiente comando:

sudo apt install nodejs -y

Una vez completada la instalación, verifique la versión de Node.js con el siguiente comando:

node --version

Recibirá una salida con la versión del nodo instalado.

En esta sección, instaló las dependencias del paquete para Etherpad y Node.js versión 16.x desde el repositorio de Nodesource. A continuación, instalará y configurará la base de datos MariaDB.

Instalar y configurar la base de datos MariaDB

En esta sección, instalará la base de datos MariaDB en el servidor Debian 11. Luego establecerá la contraseña raíz para MariaDB y finalmente creará una nueva base de datos y un usuario para Etherpad.

De forma predeterminada, los paquetes de MariaDB están disponibles en el repositorio de Debian 11. Ejecute el siguiente comando para instalarlo:

sudo apt install mariadb-server -y

Cuando se complete la instalación de MariaDB, se ejecutará y habilitará automáticamente.

MariaDB proporciona una herramienta de línea de comandos que lo ayuda a implementar MariaDB de forma segura, incluida la configuración de la contraseña raíz para MariaDB. Ejecute el comando ' mysql_secure_installation ' como se muestra a continuación:

mysql_secure_installation

Ahora se le harán algunas preguntas relacionadas con la implementación de MariaDB y se le pedirá que configure la contraseña de root.

El usuario raíz predeterminado para mariaDB no tiene contraseña, presione ENTER .

Enter current password for root (enter for none):
OK, successfully used password, moving on...

Ahora se le pedirá que cambie el método de autenticación usando ' unix_socket ', escriba ' Y ' para aceptar.

Switch to unix_socket authentication [Y/n] Y
Enabled successfully!
Reloading privilege tables..
 ... Success!

Escriba ' Y ' para establecer una nueva contraseña de root para MariaDB. Luego ingrese su contraseña segura y repita.

Change the root password? [Y/n] Y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
 ... Success!

La instalación predeterminada de MariaDB viene con un usuario anónimo. Escriba ' Y ' para eliminarlo.

Remove anonymous users? [Y/n] Y
 ... Success!

Ahora, deshabilite el acceso remoto para el usuario root de MariaDB. ' Y ' estar de acuerdo.

Disallow root login remotely? [Y/n] Y
 ... Success!

Luego, escriba ' Y ' para aceptar y eliminar la base de datos de " prueba " predeterminada y todos los privilegios sobre ella.

Remove test database and access to it? [Y/n] Y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Finalmente, vuelva a cargar los privilegios de la tabla para aplicar una nueva configuración. Escriba ' Y ' para aceptar y presione ENTER .

Reload privilege tables now? [Y/n] Y
 ... Success!

Una vez completada toda la configuración, recibirá el mensaje de salida como '¡ Todo listo ! 'como a continuación.

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

de MariaDB ahora debería ser segura.¡Todo listo! Si completó todos los pasos anteriores, la

Luego, ejecute el siguiente comando para acceder al shell de MariaDB. Se le pedirá la contraseña raíz de MariaDB. Ingresa tu contraseña:

mysql -u root -p

Ahora, cree una nueva base de datos y un nuevo usuario para Etherpad ejecutando las siguientes consultas. Este ejemplo creará una nueva base de datos ' etherpad_lite_db' con el usuario ' etherpaduser' y la contraseña ' StrongPasswordEtherpadDB'. Asegúrate de cambiar tu contraseña:

CREATE DATABASE etherpad_lite_db;
CREATE USER [email protected] IDENTIFIED BY 'StrongPasswordEtherpadDB';
GRANT CREATE,ALTER,SELECT,INSERT,UPDATE,DELETE on etherpad_lite_db.* to [email protected];

A continuación, vuelva a cargar todos los privilegios de la tabla para aplicar una nueva configuración, luego ejecute la consulta ' exit ' para cerrar sesión en el shell de mariaDB:

FLUSH PRIVILEGES;
EXIT

En esta sección, completó la instalación y configuración de la base de datos MariaDB en Debian 11. Además, creó la base de datos y el usuario para Ethernet. A continuación, descargará el código fuente de Etherpad y lo instalará.

Instalar y configurar el Etherpad

En esta sección, instalará Etherpad desde el código fuente, luego lo configurará con MariaDB como base de datos y creará un nuevo sistema de archivos para Etherpad. Eventualmente, Ethernet se ejecutará como un servicio systemd.

Antes de descargar el código fuente de Etherpad, creará un nuevo usuario ' etherpad' en su sistema. Este usuario se utilizará para ejecutar el script de instalación de Etherpad y ejecutar el servicio de Etherpad.

Ejecute el comando ' adduser' a continuación para crear un nuevo usuario ' etherpad'. Además, defina el directorio de inicio en ' / opt / etherpad-lite '. Este directorio se utilizará para almacenar todas las fuentes de Etherpad:

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

Ahora ve al directorio ' /opt' y clona la fuente de Etherpad usando el comando git.

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

A continuación, cambie la propiedad del directorio 'etherpad-lite' al usuario ' etherpad ' y al grupo ' etherpad ':

sudo chown -R etherpad:etherpad etherpad-lite

Ahora vaya al directorio ' etherpad-lite / ' e instale todas las dependencias de Node.js usando el script de instalación ' ' como se muestra a continuación. El script de instalación 'installDeps.sh ' se ejecutará como usuario no root 'etherpad':installDeps.sh

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

Espere a que se complete la instalación de todas las dependencias del paquete.

Luego, edite el settings.jsonarchivo ' ' para configurar la instalación de Etherpad. Puede usar un editor nano para editar ese archivo o usar su editor favorito:

nano settings.json

En la parte superior de la línea, cambie el título a su título. Este ejemplo usa el título ' Entherpad Johndoe ':

  "title": "Etherpad Johndoe",

En este tutorial, el Etherpad se ejecutará con el proxy inverso Nginx. Y es bueno para la seguridad ejecutar Etherpad en el host local. Ahora, cambia la configuración . ' ip :' in ' 127.0.0.1' Con esta configuración, Ethernet solo se ejecutará en localhost:

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

De forma predeterminada, Ethernet utiliza SQLite como su base de datos. Comente todas estas líneas para deshabilitar:

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

Ahora, ingrese la configuración de la base de datos MariaDB a continuación. Y asegúrese 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"
  },

Guardar y salir del archivo.

Luego, cree un nuevo archivo de servicio systemd ' etherpad.service' en el directorio ' / etc / systemd / system '. Este archivo contendrá todos los detalles de configuración que Etherpad necesita para funcionar correctamente en el servidor. Créalo usando un editor nano:

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

Agregue la siguiente configuración en el archivo:

[Unit]
Description=Etherpad-lite, the collaborative editor.
After=syslog.target network.target

[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

Este archivo de servicio se ejecutará como usuario y grupo 'etherpad'. Y notará la opción '' Environment=NODE_ENV=production, lo que significa que la aplicación Etherpad se ejecutará en el entorno de producción. La opción '' ExecStart=..es el comando predeterminado para ejecutar la aplicación Etherpad.

Guarde y cierre el archivo.

Ahora, vuelva a cargar el administrador systemd para aplicar un nuevo archivo de servicio:

sudo systemctl daemon-reload

Luego, inicie y habilite el servicio etherpad, luego verifique su estado ejecutando el siguiente comando:

sudo systemctl enable --now etherpad
sudo systemctl status etherpad

Recibirá un mensaje de que el servicio de etherpad ahora está ' activo (en ejecución) ', se iniciará automáticamente en el arranque del sistema y se está ejecutando en el host local con el puerto predeterminado ' 9001 '.

En este punto, ha completado la instalación de Etherpad. A continuación, instalará Nginx configurándolo como un proxy inverso para la aplicación Etherpad.

Instalar y configurar Nginx

Para el entorno de producción, siempre se recomienda colocar un proxy inverso delante de la aplicación. Aumentará el rendimiento y la seguridad de sus aplicaciones. En esta sección, instalará y configurará el servidor web Nginx como proxy inverso. Eventualmente, tendrá el Etherpad ejecutándose bajo su nombre de dominio y protegido con el protocolo HTTPS.

Inicialmente, instale los paquetes de Nginx ejecutando el siguiente comando:

sudo apt install nginx -y

Ahora, si tiene el firewall UFW en su sistema Debian. Permita el acceso público a los puertos HTTP y HTTPS (80 y 443) ejecutando el siguiente comando ' ufw ':

sudo ufw allow "Nginx Full"

Recibirá el siguiente resultado:

Rule added
Rule added (v6)

Luego, cree un nuevo archivo de host virtual Nginx ' etherpad' en el directorio ' / etc / nginx / sites-available / '. Créalo usando un editor nano o tu editor favorito:

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

Copie y pegue la siguiente configuración en el archivo. Además, reemplace su nombre de dominio y la ruta del certificado SSL con su información. Para los certificados SSL, puede generar certificados SSL libremente usando Letsencrypt:

# enforce HTTPS
server {
    listen       80;
    listen       [::]:80;
    server_name  etherpad.example.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;
    listen       [::]:443 ssl http2;
    server_name  etherpad.example.io;

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

    ssl_certificate      /etc/letsencrypt/live/etherpad.example.io/fullchain.pem;
    ssl_certificate_key  /etc/letsencrypt/live/etherpad.example.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;
    }
}

Este archivo de host virtual de Nginx redirigirá automáticamente el tráfico de HTTP al protocolo HTTPS seguro. Para la depuración en caso de error, verifique el archivo de registro ' /var/log/nginx/eplite.error.log '. Todas las solicitudes de los clientes se enviarán a la proxy_passaplicación backend '' Etherpad que se ejecuta en el puerto localhost 9001:

Guarde y cierre el archivo, luego active la configuración del host virtual creando un enlace simbólico del archivo ' etherpad' al directorio ' /etc/nginx/sites-enabled ':

sudo ln -s /etc/nginx/sites-available/etherpad /etc/nginx/sites-enabled/

Luego, ejecute el comando ' nginx -t' para verificar la configuración de nginx. Este comando verificará si hay errores de sintaxis en la configuración.

sudo nginx -t

Recibirá la salida como se muestra a continuación. El mensaje de salida " la sintaxis está bien " significa que no tiene errores:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful.

Finalmente, reinicie el servicio Nginx para aplicar un nuevo archivo de host virtual Nginx:

sudo systemctl restart nginx

En esta sección, ha completado la instalación y configuración de Nginx como proxy inverso para la aplicación Etherpad. Su Etherpad ya está disponible en http://etherpad.example.io .

Comprobar la instalación de la Ethernet

Abra su navegador web y escriba el nombre de dominio ' http://etherpad.example.io/ ' en la dirección. Y será redirigido automáticamente a la conexión HTTPS segura.

Para crear un nuevo pad, ingrese el nombre del pad en la columna y haga clic en el botón ' Aceptar '.

Ahora verá el editor de colaboración en tiempo real de Etherpad.

Conclusión

En este tutorial, instaló y configuró el editor colaborativo en tiempo real de Etherpad en el servidor Debian 11. Además, instaló y configuró Nginx como un proxy inverso para la aplicación Etherpad.

Ahora está listo para usar etherpad como editor de colaboración en su equipo. Para obtener más información sobre Etherpad, consulte la documentación oficial de Etherpad.

Únase a la conversación

Buy me a coffeeBuy me a coffee

Apóyenos si le gusta nuestro contenido. Gracias.

Genial! A continuación, complete el pago para obtener acceso completo a Noviello.it.
Bienvenido de nuevo! Has iniciado sesión correctamente.
Te has suscrito correctamente a Noviello.it.
Éxito! Su cuenta está completamente activada, ahora tiene acceso a todo el contenido.
Éxito! Su información de facturación ha sido actualizada.
Su facturación no se actualizó.