Cómo instalar el editor colaborativo en tiempo real Etherpad en Ubuntu 18.04
Etherpad es un editor colaborativo en tiempo real basado en Node.js. Es un editor colaborativo de código abierto, basado en la web para el acceso de múltiples usuarios, con la capacidad de importar/exportar a varios formatos de archivos de oficina y un editor en línea altamente personalizable.
En este tutorial, te guiaré paso a paso para instalar y configurar Etherpad-lite en el servidor Ubuntu 18.04. Instalaremos Etherpad-lite con MySQL como base de datos, el servidor web Nginx como proxy inverso y habilitaremos la conexión segura HTTPS en él.
Requisitos previos
- Servidor Ubuntu 18.04
- Privilegios de root
¿Qué vamos a hacer?
- Instalar las dependencias de los paquetes
- Instalar Nodejs
- Instalar y configurar MySQL
- Descargar Etherpad
- Configurar Etherpad
- Configurar Etherpad como servicio
- Configurar Nginx como proxy inverso para Etherpad
- Configurar el cortafuegos UFW
- Prueba de
Paso 1 – Instalar las dependencias de los paquetes
El primer paso que haremos en esta guía es instalar todas las dependencias de los paquetes para la instalación de Nodejs.
Ejecuta el siguiente comando apt.
sudo apt install gzip git curl python libssl-dev pkg-config gcc g++ make build-essential -y
Espera a que se instalen todos.
Paso 2 – Instalar Nodejs
Etherpad requiere Node.js >= 6.9, y en este paso instalaremos Nodejs 9.11 que se puede instalar desde el repositorio nodesource.
Añade el repositorio de Nodejs de nodesource e instala el paquete Node.js utilizando los siguientes comandos.
curl -sL https://deb.nodesource.com/setup_9.x | sudo -E bash -
sudo apt install -y nodejs
Después de esto, comprueba los comandos nodejs y npm.
nodejs --version
npm --version
El Node.js v9.11 ha sido instalado en el servidor Ubuntu 18.04.
Paso 3 – Instalar y configurar MySQL
En este tutorial, utilizaremos MySQL como base de datos para Etherpad.
Instala el servidor de bases de datos MySQL utilizando el comando apt que aparece a continuación.
sudo apt install mysql-server mysql-client
Una vez completada la instalación, inicia el servicio mysql y habilítalo para que se inicie siempre al arrancar el sistema.
sudo systemctl start mysql
sudo systemctl enable mysql
El servidor MySQL ha sido instalado.
A continuación, configuraremos la contraseña de root de mysql y crearemos una nueva base de datos y un nuevo usuario para nuestra instalación de etherpad.
Para configurar la contraseña raíz de MySQL, ejecuta el siguiente comando.
mysql_secure_installation
Escribe tu contraseña fuerte de root de mysql.
Ahora entra en el shell de mysql utilizando el usuario root.
mysql -u root -p
Crea una nueva base de datos llamada ‘etherpad_db’ y el usuario ‘hakase’, y ejecuta las consultas mysql que aparecen a continuación.
create database etherpad_db;
grant all privileges on etherpad_db.* to hakase@localhost identified by 'Hakase321@#';
flush privileges;
La base de datos MySQL para la instalación de etherpad ha sido creada.
Paso 4 – Descargar Etherpad
En este paso, crearemos un nuevo usuario y descargaremos el código fuente de etherpad.
Crea un nuevo usuario llamado ‘etherpad’ y accede a él.
useradd -m -s /bin/bash etherpad
su - etherpad
Ahora clona el repositorio de etherpad.
git clone git://github.com/ether/etherpad-lite.git
Ve al directorio ‘etherpad-lite/’ y ejecuta el script bash para iniciar etherpad.
cd etherpad-lite/
bin/run.sh
Obtendrás el resultado que se muestra a continuación.
Abre tu navegador web y escribe la dirección IP del servidor con el puerto ‘9001’.
http://192.168.33.10:9001/
Y verás la página de inicio de etherpad.
Vuelve a tu terminal y pulsa ‘Ctrl+c’ para salir de la aplicación.
Paso 5 – Configurar Etherpad
En este paso, haremos la configuración básica del editor colaborativo etherpad.
Accede al usuario de etherpad y ve al directorio ‘etherpad-lite’.
su - etherpad
cd etherpad-lite/
Edita la configuración ‘settings.json’ utilizando el editor vim.
vim settings.json
Cambia la dirección ip a ‘127.0.0.1’ o localhost, porque ejecutaremos el etherpad en el proxy inverso Nginx.
"ip": "127.0.0.1",
"port" : 9001,
Ahora desactiva la base de datos sucia por defecto añadiendo el comentario ‘/* …. */’, y pega la configuración de la base de datos MySQL.
/*
"dbType" : "dirty",
"dbSettings" : {
"filename" : "var/dirty.db"
},
*/
Configuración de la base de datos MySQL.
"dbType" : "mysql",
"dbSettings" : {
"user" : "hakase",
"host" : "localhost",
"port" : 3306,
"password": "Hakase321@#",
"database": "etherpad_db",
"charset" : "utf8mb4"
},
A continuación, habilitaremos el usuario admin eliminando el comentario de esas líneas y cambiaremos el valor de la contraseña con una nueva contraseña.
"users": {
"admin": {
// "password" can be replaced with "hash" if you install ep_hash_auth
"password": "hakase123@#",
"is_admin": true
},
"user": {
// "password" can be replaced with "hash" if you install ep_hash_auth
"password": "aqwe123@#",
"is_admin": false
}
},
Guarda y sal.
La configuración básica de etherpad se ha completado.
Paso 6 – Configurar Etherpad como servicio
Ahora vamos a ejecutar etherpad como un servicio systemd en nuestro sistema ubuntu.
Ve al directorio ‘/etc/systemd/system’ y crea un nuevo archivo de servicio llamado ‘etherpad.service’.
cd /etc/systemd/system/
vim etherpad.service
Pega las configuraciones de abajo.
[Unit]
Description=Etherpad-lite, the collaborative editor.
After=syslog.target network.target
[Service]
Type=simple
User=etherpad
Group=etherpad
WorkingDirectory=/home/etherpad/etherpad-lite
Environment=NODE_ENV=production
ExecStart=/usr/bin/nodejs /home/etherpad/etherpad-lite/node_modules/ep_etherpad-lite/node/server.js
Restart=always # use mysql plus a complete settings.json to avoid Service hold-off time over, scheduling restart.
[Install]
WantedBy=multi-user.target
Guarda y sal.
Vuelve a cargar las listas de servicios de systemd.
sudo systemctl daemon-reload
Inicia el servicio etherpad y habilítalo para que se inicie cada vez al arrancar el sistema.
sudo systemctl start etherpad
sudo systemctl enable etherpad
Y el ether está en marcha como servicio en localhost ip con el puerto 9001 por defecto.
Comprueba el servicio con los siguientes comandos.
sudo systemctl status etherpad
netstat -plntu
Paso 7 – Instalar y configurar Nginx como proxy inverso
En este paso, instalaremos y configuraremos el servidor web Nginx como proxy inverso para el servicio etherpad.
Instala el servidor web nginx utilizando el comando apt que aparece a continuación.
sudo apt install nginx -y
Una vez completada la instalación, ve al directorio ‘/etc/nginx/sites-available’ y crea un nuevo host virtual ‘etherpad’.
cd /etc/nginx/sites-available/
vim etherpad
Pega las configuraciones de abajo.
server {
listen 80;
server_name pad.hakase.io;
rewrite ^(.*) https://$server_name$1 permanent;
}
# we're in the http context here
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
server {
listen 443;
server_name pad.hakase.io;
access_log /var/log/nginx/eplite.access.log;
error_log /var/log/nginx/eplite.error.log;
ssl on;
ssl_certificate /etc/nginx/ssl/fullchain.pem;
ssl_certificate_key /etc/nginx/ssl/privkey.pem;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 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://localhost:9001/;
proxy_set_header Host $host;
proxy_pass_header Server;
# be careful, this line doesn't override any proxy_buffering on set in a conf.d/file.conf
proxy_buffering off;
proxy_set_header X-Real-IP $remote_addr; # http://wiki.nginx.org/HttpProxyModule
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_set_header Host $host; # pass the host header
proxy_http_version 1.1; # recommended with keepalive connections
# WebSocket proxying - from http://nginx.org/en/docs/http/websocket.html
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
}
}
Guarda y sal.
Nota:
- Asegúrate de cambiar la ruta del SSL con tus propios certificados ssl.
- Cambia el dominio de etherpad ‘pad.hakase.io’ por tu propio nombre de dominio.
Ahora activa el host virtual de etherpad y prueba la configuración.
ln -s /etc/nginx/sites-available/etherpad /etc/nginx/sites-enabled/
nginx -t
Asegúrate de que no hay ningún error, y luego inicia el servicio nginx y habilítalo para que se inicie siempre al arrancar el sistema.
sudo systemctl restart nginx
sudo systemctl enable nginx
La instalación y configuración de Nginx como proxy inverso de etherpad se ha completado con éxito.
Paso 8 – Configurar el cortafuegos UFW
Para la configuración del cortafuegos, sólo queremos abrir los servicios de puerto SSH, HTTP y HTTPS.
Ejecuta los siguientes comandos ufw.
sudo fuw allow ssh
sudo ufw allow http
sudo ufw allow https
A continuación, activa el cortafuegos ufw.
sudo ufw enable
Y la configuración del cortafuegos ufw se ha completado.
Paso 9 – Prueba
Abre tu navegador web y escribe el nombre de dominio de etherpad, el mío:http://pad.hakase.io/
Ahora serás redirigido a la conexión segura HTTS.
Crea un nuevo pad escribiendo el nombre del pad en la casilla y haz clic en el botón «Aceptar».
Y obtendrás el editor de Etherpad como se indica a continuación.
A continuación, abre la URL del administrador de etherpad. La mía eshttps://pad.hakase.io/admin/
Se te pedirá el nombre de usuario y la contraseña del administrador. Escribe tu propio usuario y contraseña, y haz clic en el botón Iniciar sesión.
Y obtendrás la página de administración de Etherpad por defecto que aparece a continuación.
– Configuración de Etherpad settings.json
– Administrador de plugins de Etherpad
La instalación de Etherpad con MySQL y el proxy inverso Nginx en Ubuntu 18.04 se ha completado con éxito.