GNU/Linux >> Tutoriales Linux >  >> Debian

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

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, además, etherpad admite el control de versiones y el formateo integrado para los equipos. Etherpad es un editor altamente personalizable con el soporte de 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 backend de la base de datos y el servidor web Nginx como un proxy inverso con HTTPS seguro habilitado. Al final, tendrá el Etherpad instalado y protegido a través del cifrado seguro HTTPS.

Requisitos

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

  • Un servidor Debian 11, para probar puede usar 1 GB de RAM. Para la producción, puede usar más recursos, según su entorno y uso.
  • Un usuario no root con privilegios de root. Opcionalmente, puede usar el usuario root.
  • Un nombre de dominio para la instalación y asegúrese 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, continúe con la primera sección para comenzar la instalación.

Instalación de dependencias de paquetes

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

1. Primero, actualice su 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

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

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

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

3. A continuación, instale Node.js 16.x desde el repositorio de Nodesource ejecutando el siguiente comando.

sudo apt install nodejs -y

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

node --version

Recibirás un resultado como 'bla, bla'.

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

Instalación y configuración de la base de datos MariaDB

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

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

2. 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 manera 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 raíz.

3. El usuario root predeterminado para mariaDB no tiene contraseña, presione ENTER .

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

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

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

5. Escriba 'Y ' para configurar 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!

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

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

7. Ahora, deshabilite el inicio de sesión remoto para el usuario root de MariaDB. Escriba 'Y ' para estar de acuerdo.

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

8. A continuación, escriba 'Y ' para aceptar y eliminar la base de datos predeterminada 'test ' y todos los privilegios encima.

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

9. Por último, 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!

Cuando se complete toda la configuración, recibirá un mensaje de salida como '¡Todo listo! ' como se muestra 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!

10. A continuación, ejecute el siguiente comando para iniciar sesión en el shell de MariaDB. Se le pedirá la contraseña raíz de MariaDB. Ingrese su contraseña.

mysql -u root -p

11. 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 contraseña 'StrongPasswordEtherpadDB '. Asegúrese de cambiar la 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];

12. Después de eso, vuelva a cargar todos los privilegios de las tablas para aplicar una nueva configuración, luego ejecute la consulta 'salir' 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 Etherpad. A continuación, descargará el código fuente de Etherpad y lo instalará.

Instalar y configurar 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 archivo systemd para Etherpad. Al final, el Etherpad se ejecutará como un servicio systemd.

1. 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 '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

2. Ahora, navegue hasta el directorio '/opt ' y clone la fuente de Etherpad usando el comando git.

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

3. Después de eso, cambie la propiedad del directorio 'etherpad-lite' al usuario 'etherpad ' y grupo 'etherpad '.

sudo chown -R etherpad:etherpad etherpad-lite

4. Ahora navegue al directorio 'etherpad-lite/ ' e instale todas las dependencias de Node.js usando el script de instalación 'installDeps.sh' como a continuación. La secuencia de comandos del instalador 'installDeps.sh ' se ejecutará como un usuario no root 'etherpad'.

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

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

A continuación, modifique el archivo 'settings.json ' para configurar su instalación de Etherpad. Puede usar un editor nano para editar ese archivo o usar su editor preferido.

nano settings.json

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

  "title": "Etherpad Johndoe",

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

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

De forma predeterminada, Etherpad utiliza SQLite como base de datos. Comenta 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"
  },

Guarde y salga del archivo.

A continuación, 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 al 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. El 'ExecStart=.. La opción ' 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

Después de eso, 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 resultado similar a la captura de pantalla a continuación. El servicio etherpad ahora está 'activo (en ejecución) ', se iniciará automáticamente al iniciar el sistema y se está ejecutando en el servidor local con el puerto predeterminado '9001 '.

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

Instalación y configuración de Nginx

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

1. Al principio, instale los paquetes de Nginx ejecutando el siguiente comando.

sudo apt install nginx -y

2. 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 'ufw ' comando a continuación.

sudo ufw allow "Nginx Full"

Recibirá el siguiente resultado.

Rule added
Rule added (v6)

3. A continuación, cree un nuevo archivo de host virtual Nginx 'etherpad ' en el directorio '/etc/nginx/sites-disponible/ '. Créelo usando un editor nano o su editor preferido.

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 propia 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 Nginx redirigirá automáticamente cualquier tráfico de HTTP al protocolo HTTPS seguro. Para la depuración en caso de que tenga un error, consulte el archivo de registro '/var/log/nginx/eplite.error.log '. Todas las solicitudes de los clientes se enviarán al backend 'proxy_pass ' la aplicación Etherpad que se ejecuta en el puerto localhost 9001.

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

5. A continuación, ejecute el comando 'nginx -t' para verificar la configuración de nginx. Este comando verificará cualquier error de sintaxis en la configuración.

sudo nginx -t

Recibirá la salida como se muestra a continuación. El mensaje de salida 'la sintaxis es correcta ' significa que no tiene ningún error.

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

6. Por último, 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.

Verificar la instalación de Etherpad

1. 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 como se muestra a continuación.

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

Ahora verá el editor de colaboración en tiempo real de Etherpad como se muestra a continuación.

Conclusión

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

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


Debian
  1. Cómo instalar Phorum con Nginx en Debian 9

  2. Cómo instalar Textpattern CMS con Nginx en Debian 10

  3. Cómo instalar y asegurar MariaDB en Debian 11

  4. Cómo instalar y configurar Mariadb 10 en Debian 11

  5. Cómo instalar WonderCMS con Nginx en Debian 11

Cómo instalar Nextcloud 10 con Nginx en Debian 8

Cómo instalar Drupal con Nginx y Let's Encrypt SSL en Debian 11

Cómo instalar Joomla con Nginx y Let's Encrypt SSL en Debian 11

Cómo instalar WordPress con Nginx y Let's Encrypt SSL en Debian 11

Cómo instalar phpBB con LEMP (Nginx, MariaDB y PHP) en Debian 11 Bullseye

Cómo instalar phpMyAdmin con Nginx en Debian 11