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

Introducció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 y
sudocon 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.comoetherpad.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:
- 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:
- sudo -u etherpad bash
- 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:
- 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:
- ./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:
- cd src
Luego instale el sqlite3paquete usando npm:
- 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:
- cd /opt/etherpad
Luego abra el archivo de configuración usando su editor de texto favorito:
- 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 :
- 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:
- 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:
- sudo systemctl daemon-reload
A continuación, habilite el etherpadservicio. Esto significa que el servicio se iniciará cada vez que se reinicie el servidor:
- sudo systemctl enable etherpad
Y por último podemos iniciar el servicio:
- sudo systemctl start etherpad
Compruebe que el servicio se inició correctamente mediante systemctl status:
- 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:
- sudo apt update
- sudo apt install nginx
Permitir tráfico a puertos 80y 443(HTTP y HTTPS) utilizando el perfil de aplicación UFW “Nginx Full”:
- 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:
- 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/:
- 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:
- 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:
- 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:
- 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:
- 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 .

Deja una respuesta