Cómo instalar el editor web colaborativo Etherpad en Ubuntu 20.04

Introducción

Índice
  1. Introducción
  • Prerrequisitos
  • Paso 1: Descarga y configuración de Etherpad
  • Paso 2: Creación de un servicio Systemd para Etherpad
  • Paso 3: Instalación y configuración de Nginx
  • Paso 4: Instalación de Certbot y configuración de certificados SSL
  • Conclusión
  • Etherpad es una aplicación web que permite la edición colaborativa de texto en tiempo real en el navegador. Está escrita en Node.js y puede alojarse en una variedad de plataformas y sistemas operativos.

    En este tutorial, instalaremos Etherpad en un servidor Ubuntu 20.04, utilizando el motor de base de datos SQLite para almacenar nuestros datos. También instalaremos y configuraremos Nginx para que actúe como un proxy inverso para la aplicación, y buscaremos e instalaremos certificados SSL de la autoridad de certificación Let’s Encrypt para habilitar conexiones HTTPS seguras a nuestra instancia de Etherpad.

    Nota: Si prefiere utilizar nuestro servicio App Platform para autohospedar Etherpad, consulte nuestro tutorial Implementar el editor web colaborativo de Etherpad en App Platform , donde creamos una aplicación de App Platform para ejecutar el contenedor Docker de Etherpad y conectarlo a una base de datos PostgreSQL administrada.

    Prerrequisitos

    Antes de comenzar este tutorial, necesitarás lo siguiente:

    • Un servidor Ubuntu 20.04, con un usuario habilitado que no sea root ysudo con el firewall UFW habilitado. Lea nuestra sección Configuración inicial del servidor con Ubuntu 20.04 para obtener más información sobre cómo configurar estos requisitos.
    • Node.js instalado, versión 14 o superior. Consulta la opción 2 de Cómo instalar Node.js en Ubuntu 20.04 para saber cómo instalar una versión actualizada de Node.js mediante paquetes NodeSource.
    • Un nombre de dominio que apunta a la dirección IP pública de su servidor. Debería ser algo como example.como etherpad.example.com, por ejemplo.

    Nota: Si utiliza DigitalOcean, nuestra documentación de DNS puede ayudarlo a configurar su nombre de dominio en el panel de control.

    Cuando tenga los requisitos previos establecidos, continúe con el Paso 1, donde descargaremos y configuraremos la aplicación Etherpad.

    Paso 1: Descarga y configuración de Etherpad

    Para instalar Etherpad, necesitará descargar el código fuente, instalar las dependencias y configurar systemd para ejecutar el servidor.

    Los mantenedores de Etherpad recomiendan ejecutar el software como su propio usuario, por lo que el primer paso será crear un nuevo usuario de Etherpadadduser usando el comando:

    1. sudo adduser --system --group --home /opt/etherpad etherpad

    Esto crea un --systemusuario, lo que significa que no puede iniciar sesión directamente y no tiene contraseña ni shell asignado. Le asignamos un directorio de inicio de /opt/etherpad, que es donde descargaremos y configuraremos el software Etherpad. También creamos un grupo Etherpad usando el --groupindicador.

    Ahora debe ejecutar algunos comandos como usuario etherpad . Para ello, utilizará el sudocomando para abrir un bashshell como usuario etherpad . Luego, cambiará los directorios ( cd) a /opt/etherpad:

    1. sudo -u etherpad bash
    2. cd /opt/etherpad

    El indicador de comandos de la consola se actualizará para mostrar que eres el usuario de Etherpad . Debería verse similar a .etherpad@host:~$

    Ahora clona el repositorio Etherpad /opt/etherpadusando Git:

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

    Esto extraerá la masterrama del código fuente de Etherpad al directorio actual ( .). Una vez hecho esto, ejecute installDeps.shel script de Etherpad para instalar las dependencias:

    1. ./bin/installDeps.sh

    Esto puede tardar un minuto. Cuando haya terminado, deberá instalar manualmente una última dependencia. Necesitamos cdingresar a la carpeta Etherpad srce instalar el sqlite3paquete para poder usar SQLite como nuestra base de datos.

    Primero, cambie al srcdirectorio:

    1. cd src

    Luego instale el sqlite3paquete usando npm:

    1. npm install sqlite3

    Su última tarea como usuario de Etherpad es actualizar el settings.jsonarchivo de Etherpad para que utilice SQLite como base de datos y funcione bien con Nginx. Vuelva al /opt/etherpaddirectorio:

    1. cd /opt/etherpad

    Luego abra el archivo de configuración usando su editor de texto favorito:

    1. nano settings.json

    El archivo tiene formato JSON, pero incluye comentarios detallados que explican cada configuración. Hay muchas cosas que se pueden configurar, pero por ahora nos interesan dos valores que actualizan la configuración de la base de datos:

    configuración.json

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

    Desplácese hacia abajo y busque la sección dbTypey dbSettings, que se muestra aquí. Actualice la configuración a sqlitey con un nombre de archivo de su elección, como el siguiente:

    configuración.json

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

    Por último, desplácese hacia abajo un poco más, busque la trustProxyconfiguración y actualícela a true:

    configuración.json

    "trustProxy": true,

    Guarde y cierre el archivo de configuración. nanoPuede guardar y cerrar escribiendo CTRL+O“then” ENTERpara guardar y “then CTRL+X” para salir.

    Una vez hecho esto, asegúrese de salir del shell del usuario etherpad :

    1. exit

    Volverás a tu shell de usuario normal.

    Etherpad está instalado y configurado. A continuación, crearemos un servicio systemd para iniciar y administrar el proceso Etherpad.

    Paso 2: Creación de un servicio Systemd para Etherpad

    Para iniciar Etherpad al arrancar y administrar el proceso mediante systemctl, necesitamos crear un archivo de servicio systemd. Abra el nuevo archivo en su editor de texto favorito:

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

    Vamos a crear una definición de servicio basada en la información de la wiki de documentación de Etherpad. La página Cómo implementar Etherpad Lite como servicio ofrece un ejemplo de configuración que solo necesita algunos cambios para que funcione.

    Agregue el siguiente contenido a su editor de texto, luego guarde y cierre el archivo:

    /etc/systemd/system/etherpad.servicio

    [Unit]Description=Etherpad, a collaborative web editor.After=syslog.target network.target[Service]Type=simpleUser=etherpadGroup=etherpadWorkingDirectory=/opt/etherpadEnvironment=NODE_ENV=productionExecStart=/usr/bin/node --experimental-worker /opt/etherpad/node_modules/ep_etherpad-lite/node/server.jsRestart=always[Install]WantedBy=multi-user.target

    Este archivo proporciona a systemd la información que necesita para ejecutar Etherpad, incluido el usuario y el grupo bajo el cual ejecutarlo, y el comando utilizado para iniciar el proceso ( ExecStart=...).

    Después de cerrar el archivo, vuelva a cargar el demonio systemd para incorporar la nueva configuración:

    1. sudo systemctl daemon-reload

    A continuación, habilite el etherpadservicio. Esto significa que el servicio se iniciará cada vez que se reinicie el servidor:

    1. sudo systemctl enable etherpad

    Y por último podemos iniciar el servicio:

    1. sudo systemctl start etherpad

    Compruebe que el servicio se inició correctamente mediante systemctl status:

    1. sudo systemctl status etherpad
    Output● etherpad.service - Etherpad, a collaborative web editor.     Loaded: loaded (/etc/systemd/system/etherpad.service; enabled; vendor preset: enabled)     Active: active (running) since Thu 2021-09-09 14:12:43 UTC; 18min ago   Main PID: 698 (node)      Tasks: 13 (limit: 1136)     Memory: 152.0M     CGroup: /system.slice/etherpad.service             └─698 /usr/bin/node --experimental-worker /opt/etherpad/node_modules/ep_etherpad-lite/node/server.js

    La salida debe indicar que el servicio es active (running).

    Etherpad se está ejecutando ahora, pero no está disponible para el público porque 9001el firewall bloquea el puerto. En el siguiente paso, haremos que Etherpad sea público configurando Nginx como un proxy inverso frente al proceso Etherpad.

    Paso 3: Instalación y configuración de Nginx

    Colocar un servidor web como Nginx delante de su servidor Node.js puede mejorar el rendimiento al descargar el almacenamiento en caché, la compresión y el servicio de archivos estáticos a un proceso más eficiente. Vamos a instalar Nginx y configurarlo para que envíe solicitudes a Etherpad, lo que significa que se encargará de entregar las solicitudes de sus usuarios a Etherpad y viceversa.

    Primero, actualice su lista de paquetes, luego instale Nginx usando apt:

    1. sudo apt update
    2. sudo apt install nginx

    Permitir tráfico a puertos 80y 443(HTTP y HTTPS) utilizando el perfil de aplicación UFW “Nginx Full”:

    1. sudo ufw allow "Nginx Full"
    OutputRule addedRule added (v6)

    A continuación, abra un nuevo archivo de configuración de Nginx en el /etc/nginx/sites-availabledirectorio. Lo llamaremos así, etherpad.confpero puede utilizar un nombre diferente:

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

    Pegue lo siguiente en el nuevo archivo de configuración y asegúrese de reemplazarlo your_domain_herecon el dominio que apunta a su servidor Etherpad. Será algo como etherpad.example.com, por ejemplo.

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

    server {    listen       80;    listen       [::]:80;    server_name  your_domain_here;    access_log  /var/log/nginx/etherpad.access.log;    error_log   /var/log/nginx/etherpad.error.log;    location / {        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 "upgrade";    }}

    Esta configuración se basa libremente en una configuración proporcionada en la wiki de Etherpad . Por ahora, es solo HTTP, ya que dejaremos que Certbot se encargue de configurar SSL en el siguiente paso. El resto de la configuración establece las ubicaciones de registro y luego pasa todo el tráfico a http://127.0.0.1:9001, la instancia de Etherpad que iniciamos en el paso anterior. También configuramos varios encabezados que son necesarios para un proxy con buen comportamiento y para que los websockets (conexiones HTTP persistentes que permiten la comunicación bidireccional en tiempo real) funcionen a través de un proxy.

    Guarde y cierre el archivo, luego habilite la configuración vinculándolo a /etc/nginx/sites-enabled/:

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

    Utilice nginx -tpara verificar que la sintaxis del archivo de configuración sea correcta:

    1. sudo nginx -t
    [secondary_lable Output]nginx: the configuration file /etc/nginx/nginx.conf syntax is oknginx: configuration file /etc/nginx/nginx.conf test is successful

    Y por último, recarga el nginxservicio para recoger la nueva configuración:

    1. sudo systemctl reload nginx

    Su sitio Etherpad ahora debería estar disponible en HTTP simple y se verá así:

    Ahora que tenemos nuestro sitio en funcionamiento a través de HTTP, es momento de asegurar la conexión con los certificados Certbot y Let’s Encrypt.

    Paso 4: Instalación de Certbot y configuración de certificados SSL

    Gracias a Certbot y a la autoridad de certificación gratuita Let’s Encrypt, agregar el cifrado SSL a nuestra aplicación Etherpad solo requerirá dos comandos.

    Primero, instale Certbot y su complemento Nginx:

    1. sudo apt install certbot python3-certbot-nginx

    A continuación, ejecute certbotel --nginxmodo y especifique el mismo dominio que utilizó en la server_nameconfiguración de Nginx:

    1. sudo certbot --nginx -d your_domain_here

    Se le pedirá que acepte los términos de servicio de Let’s Encrypt y que ingrese una dirección de correo electrónico.

    Luego, se te preguntará si deseas redirigir todo el tráfico HTTP a HTTPS. Depende de ti, pero en general es una opción recomendada y segura.

    Después de eso, Let’s Encrypt confirmará tu solicitud y Certbot descargará tu certificado:

    OutputCongratulations! You have successfully enabled https://etherpad.example.comYou should test your configuration at:https://www.ssllabs.com/ssltest/analyze.html?d=etherpad.example.com- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at:   /etc/letsencrypt/live/etherpad.example.com/fullchain.pem   Your key file has been saved at:   /etc/letsencrypt/live/etherpad.example.com/privkey.pem   Your cert will expire on 2021-12-06. To obtain a new or tweaked   version of this certificate in the future, simply run certbot again   with the "certonly" option. To non-interactively renew *all* of   your certificates, run "certbot renew" - Your account credentials have been saved in your Certbot   configuration directory at /etc/letsencrypt. You should make a   secure backup of this folder now. This configuration directory will   also contain certificates and private keys obtained by Certbot so   making regular backups of this folder is ideal. - If you like Certbot, please consider supporting our work by:   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate   Donating to EFF:                    https://eff.org/donate-le

    Certbot recargará automáticamente Nginx para adoptar la nueva configuración y los certificados. Recargue su sitio y debería cambiarlo a HTTPS automáticamente si eligió la opción de redireccionamiento.

    ¡Ya está! Prueba tu nuevo editor Etherpad e invita a algunos colaboradores.

    Conclusión

    En este tutorial configuramos Etherpad con certificados SSL de Nginx y Let’s Encrypt. Tu Etherpad ya está listo para usar, pero es posible que quieras realizar más configuraciones, como agregar usuarios autenticados, agregar complementos y personalizar la interfaz de usuario mediante máscaras .

    Su instancia de Etherpad respaldada por SQLite podrá manejar una cantidad moderada de usuarios activos, pero si anticipa un tráfico muy alto, es posible que desee configurar una base de datos MySQL o PostgreSQL.

    Todas estas opciones de configuración están documentadas en la wiki oficial de Etherpad .

    SUSCRÍBETE A NUESTRO BOLETÍN 
    No te pierdas de nuestro contenido ni de ninguna de nuestras guías para que puedas avanzar en los juegos que más te gustan.

    Deja una respuesta

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

    Subir

    Este sitio web utiliza cookies para mejorar tu experiencia mientras navegas por él. Este sitio web utiliza cookies para mejorar tu experiencia de usuario. Al continuar navegando, aceptas su uso. Mas informacion