Preparación
Antes de comenzar la instalación, asegúrese de tener los siguientes requisitos:
- Un servidor AlmaLinux 9 con un usuario no root y privilegios sudo.
- Un nombre de dominio apuntado a la dirección IP del servidor.
- Certificados SSL generados a través de Letsecnrypt y Certbot.
Ahora que tiene los requisitos necesarios, procedamos con la instalación.
Instalación de Dependencias
Para instalar Etherpad, necesitamos instalar algunas dependencias primero. Estas dependencias incluyen herramientas de desarrollo, Node.js y NPM, servidor MariaDB, y servidor web Nginx. Repasemos cada paso.
Instalación de Herramientas de Desarrollo
Las herramientas de desarrollo son esenciales para compilar y construir software en su servidor AlmaLinux. Para instalar las herramientas de desarrollo necesarias, ejecute el siguiente comando:
sudo dnf group install "Development Tools"
Después de que la instalación esté completa, puede verificar la instalación ejecutando el siguiente comando:
gcc --version
Instalación de Node.js y NPM
Etherpad está escrito principalmente en Node.js, por lo que necesitamos instalar el entorno de ejecución de Node.js y NPM (Node Package Manager). AlmaLinux 9 proporciona Node.js v16 por defecto, que es compatible con Etherpad. Para instalar Node.js y NPM, ejecute el siguiente comando:
sudo dnf install nodejs npm
Una vez que la instalación esté completa, verifique la instalación comprobando las versiones de Node.js y NPM:
node --version npm --version
Instalación del Servidor MariaDB
Etherpad puede usar SQLite como su base de datos predeterminada, pero para implementaciones más grandes, se recomienda usar MariaDB o MySQL. Para instalar el servidor MariaDB, ejecute el siguiente comando:
sudo dnf install mariadb-server
Después de que la instalación esté completa, inicie y habilite el servicio MariaDB:
sudo systemctl start mariadb sudo systemctl enable mariadb
Verifique el estado del servicio MariaDB:
sudo systemctl status mariadb
Instalación del Servidor Web Nginx
Nginx actuará como un proxy inverso para Etherpad, permitiendo que sea accesible para los usuarios finales. Antes de instalar Nginx, asegúrese de tener un nombre de dominio apuntado a la dirección IP de su servidor y certificados SSL generados a través de Letsecnrypt y Certbot.
Para instalar Nginx, ejecute el siguiente comando:
sudo dnf install nginx
Inicie y habilite el servicio Nginx:
sudo systemctl start nginx sudo systemctl enable nginx
Verifique el estado del servicio Nginx:
sudo systemctl status nginx
Abra los puertos HTTP y HTTPS en su servidor:
sudo firewall-cmd --add-service={http,https} --permanent sudo firewall-cmd --reload
Verifique la lista de puertos abiertos y servicios:
sudo firewall-cmd --list-all
Configuración del Servidor MariaDB
Antes de proceder con la instalación de Etherpad, necesitamos asegurar el servidor MariaDB y crear una nueva base de datos y un usuario para Etherpad.
Asegurando el Servidor MariaDB
Para asegurar el servidor MariaDB, utilizaremos el utilitario mariadb-secure-installation
. Ejecute el siguiente comando para iniciar el proceso de instalación segura:
sudo mariadb-secure-installation
Durante el proceso de instalación segura, se le pedirá que configure lo siguiente:
- Cambie el método de autenticación para el usuario root de MariaDB a
unix_socket
. Ingresen
para No. - Configure una nueva contraseña para el usuario root de MariaDB. Ingrese
y
para confirmar e ingrese una nueva contraseña. - Deshabilite el inicio de sesión remoto para el usuario root de MariaDB. Ingrese
y
para confirmar. - Elimine la base de datos de prueba predeterminada. Ingrese
y
para confirmar. - Elimine las cuentas de usuario anónimas. Ingrese
y
para confirmar. - Recargue los privilegios de la tabla para aplicar los cambios. Ingrese
y
para confirmar.
Creación de una Nueva Base de Datos y Usuario
Después de asegurar el servidor MariaDB, crearemos una nueva base de datos y un usuario específicamente para Etherpad. Para crear una nueva base de datos y un usuario, siga estos pasos:
- Inicie sesión en el servidor MariaDB como el usuario root:
sudo mariadb -u root -p
- Ejecute las siguientes consultas para crear una nueva base de datos y usuario:
CREATE DATABASE etherpad_lite_db CHARACTER SET utf8mb4; CREATE USER etherpaduser@localhost IDENTIFIED BY 'StrongPasswordEtherpadDB'; GRANT CREATE,ALTER,SELECT,INSERT,UPDATE,DELETE on etherpad_lite_db.* to etherpaduser@localhost; FLUSH PRIVILEGES;
- Verifique los privilegios para el usuario de MariaDB:
SHOW GRANTS FOR etherpaduser@localhost;
- Salga del servidor MariaDB:
quit
Descargando e Instalando Etherpad
Ahora que tenemos todas las dependencias necesarias y un servidor MariaDB seguro, podemos proceder con la descarga e instalación de Etherpad.
Creando un Usuario del Sistema
Antes de descargar Etherpad, creemos un usuario del sistema específicamente para ejecutar el servicio Etherpad. Ejecute los siguientes comandos:
sudo groupadd etherpad sudo adduser -r -M -d /opt/etherpad-lite -g etherpad etherpad
Descargando el Código Fuente de Etherpad
Para descargar el código fuente de Etherpad, ejecute el siguiente comando:
sudo git clone --branch master https://github.com/ether/etherpad-lite.git/opt/etherpad-lite
Instalando las Dependencias de Etherpad
Muévase al directorio de trabajo de Etherpad:
cd /opt/etherpad-lite
Instale las dependencias de Etherpad:
sudo su -s /bin/bash -c "./bin/installDeps.sh" etherpad
Configurando Etherpad
Abra el archivo de configuración de Etherpad:
sudo nano settings.json
Actualice las siguientes configuraciones:
- Cambie el título de su instalación de Etherpad:
"title": "Etherpad AlmaLinux 9",
- Cambie la dirección IP predeterminada para Etherpad a localhost o 127.0.0.1:
"ip": "127.0.0.1", "port": 9001,
- Elimine la configuración de la base de datos predeterminada:
/* *"dbType": "dirty", *"dbSettings": { * "filename": "var/dirty.db" *}, */
- Agregue los detalles para la base de datos MariaDB:
"dbType" : "mysql", "dbSettings" : { "user": "etherpaduser", "host": "localhost", "port": 3306, "password": "StrongPasswordEtherpadDB", "database": "etherpad_lite_db", "charset": "utf8mb4" },
Guarde y cierre el archivo.
Ejecutando Etherpad
Para verificar la instalación de Etherpad, ejecute el siguiente comando:
/bin/node --experimental-worker /opt/etherpad-lite/node_modules/ep_etherpad-lite/node/server.js
Si la instalación es exitosa, verá la salida indicando que Etherpad está en ejecución.
Presione Ctrl+C para terminar el proceso.
Ejecutando Etherpad como un Servicio Systemd
Para ejecutar Etherpad como un servicio systemd, necesitamos crear un archivo de servicio systemd.
Cree el archivo:
sudo nano /lib/systemd/system/etherpad.service
Pegue la siguiente configuración en el archivo:
[Unit] Description=Etherpad-lite, the collaborative editor. After=syslog.target network.target mariadb.service nginx.service [Service] Type=simple User=etherpad Group=etherpad WorkingDirectory=/opt/etherpad-lite Environment=NODE_ENV=production ExecStart=/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
Guarde y cierre el archivo.
Recargue el administrador systemd y aplique el archivo de servicio Etherpad:
sudo systemctl daemon-reload
Inicie y habilite el servicio Etherpad:
sudo systemctl start etherpad sudo systemctl enable etherpad
Verifique el servicio Etherpad:
sudo systemctl status etherpad
Para verificar la lista de puertos abiertos en su sistema:
sudo ss -tulpn | grep 9001
Etherpad ahora se está ejecutando como un servicio systemd.
Configurando Nginx como un Proxy Inverso
Para hacer Etherpad accesible para los usuarios finales, configuraremos Nginx como un proxy inverso.
Cree un archivo de configuración de bloque de servidor Nginx:
sudo nano /etc/nginx/conf.d/etherpad.conf
Pegue la siguiente configuración en el archivo:
# enforce HTTPS server { 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; 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; } }
Guarde y cierre el archivo.
Compruebe si la configuración de Nginx es correcta:
sudo nginx -t
Reinicie el servicio Nginx:
sudo systemctl restart nginx
Ahora, puede acceder a Etherpad visitando su nombre de dominio (por ejemplo, https://etherpad.example.io). Debería ver la página de inicio predeterminada de Etherpad.
Para soluciones de alojamiento en la nube confiables y escalables, considere los servicios de Linux SSD VPS de Shape.host. Shape.host ofrece soluciones de alojamiento en la nube seguras y eficientes para potenciar a las empresas con una colaboración sin interrupciones y una productividad mejorada. Visite Shape.host para aprender más sobre sus servicios de alojamiento y lleve su colaboración al siguiente nivel.