Cómo instalar el servidor Rocket.Chat en Rocky Linux
Rocket.Chat es un servidor de chat de código abierto desarrollado en JavaScript utilizando el framework Meteor.js. Te permite comunicarte de forma segura en tiempo real a través de múltiples dispositivos. Permite a las empresas y organizaciones construir su propio servidor de chat para las comunicaciones internas con sus empleados. Se integra con canales sociales, chatbots, redes sociales y aplicaciones de productividad. Permite monitorizar flujos de trabajo DevOps con integraciones a través de Bitbucket, Jira, GitLab, Confluence, Bamboo, etc. Está disponible en múltiples plataformas de escritorio y móviles. Hay dos ediciones de Rocket.Chat disponibles, una es una edición comunitaria gratuita y la otra es una edición empresarial.
En este tutorial, instalaremos la edición comunitaria gratuita del servidor Rocket.Chat en una máquina Rocky Linux.
Requisitos previos
- Un servidor que ejecute Rocky Linux con un mínimo de 1 GB de RAM para un servidor de hasta 200 usuarios, y hasta 50 usuarios activos simultáneamente. Si quieres alojar a más de 200 usuarios, debes optar por un servidor con un mínimo de 2 GB de RAM.
- Un nombre de dominio que apunte al servidor. Para nuestro tutorial, utilizaremos el dominio
rocketchat.example.com
. - Un usuario no usuario con privilegios de root.
- SELinux está desactivado.
- Todo está actualizado.
$ sudo dnf update
- Instala los paquetes de utilidades básicas. Puede que algunos ya estén instalados.
$ sudo dnf install wget curl nano unzip yum-utils -y
Paso 1 – Configurar el cortafuegos
El primer paso es configurar el cortafuegos. Rocky Linux utiliza el cortafuegos Firewalld. Comprueba el estado del cortafuegos.
$ sudo firewall-cmd --state running
El cortafuegos funciona con diferentes zonas, y la zona pública es la que utilizaremos por defecto. Enumera todos los servicios y puertos activos en el cortafuegos.
$ sudo firewall-cmd --permanent --list-services
Debería mostrar la siguiente salida.
cockpit dhcpv6-client ssh
Moodle necesita los puertos HTTP y HTTPS para funcionar. Ábrelos.
$ sudo firewall-cmd --add-service=http --permanent $ sudo firewall-cmd --add-service=https --permanent
Recarga el cortafuegos para aplicar los cambios.
$ sudo firewall-cmd --reload
Paso 2 – Instalar Docker y Docker Compose
Rocky Linux incluye una versión antigua de Docker. Para instalar la última versión, instala primero el repositorio oficial de Docker.
$ sudo yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo
Instala la última versión de Docker.
$ sudo dnf install docker-ce docker-ce-cli containerd.io
Activa y ejecuta el demonio Docker.
$ sudo systemctl enable docker --now
Comprueba que se está ejecutando.
docker.service - Docker Application Container Engine Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled) Active: active (running) since Sat 2022-08-20 22:35:19 UTC; 1s ago Docs: https://docs.docker.com Main PID: 82575 (dockerd) Tasks: 7 Memory: 31.1M CGroup: /system.slice/docker.service ??82575 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock ...
Por defecto, Docker requiere privilegios de root. Si quieres evitar utilizar sudo
cada vez que ejecutes el comando docker
, añade tu nombre de usuario al grupo docker
.
$ sudo usermod -aG docker $(whoami)
Tendrás que salir del servidor y volver a entrar como el mismo usuario para activar este cambio o utilizar el siguiente comando.
$ su - ${USER}
Confirma que tu usuario se ha añadido al grupo Docker.
$ groups navjot wheel docker
Paso 3 – Instala Docker Compose
Docker Compose está disponible como plugin. Comprueba la última versión de Docker Compose disponible en su página de versiones de Github. En el momento de escribir este tutorial, la última versión disponible es la 2.10.0.
Crea el directorio para los plugins de Docker.
$ mkdir ~/.docker/cli-plugins -p
Descarga el plugin Docker compose en el directorio.
$ curl -SL https://github.com/docker/compose/releases/download/v2.10.0/docker-compose-linux-x86_64 -o ~/.docker/cli-plugins/docker-compose
Establece los permisos para que el plugin sea ejecutable.
$ chmod +x ~/.docker/cli-plugins/docker-compose
Verifica la instalación.
$ docker compose version
Obtendrás el siguiente resultado.
Docker Compose version v2.10.0
Paso 4 – Instala RocketChat
Crea un directorio para almacenar los archivos Docker.
$ mkdir ~/rocketchat
Cambia al directorio.
$ cd ~/rocketchat
Crea y abre el archivo Rocketchat Docker compose para editarlo.
$ nano docker-compose.yml
Pega en él el siguiente código.
volumes: mongodb_data: rocketchat-uploads: services: rocketchat: image: registry.rocket.chat/rocketchat/rocket.chat:5.0.4 restart: on-failure volumes: - rocketchat-uploads:/app/uploads environment: MONGO_URL: mongodb://mongodb:27017/rocketchat?replicaSet=rs0 MONGO_OPLOG_URL: mongodb://mongodb:27017/local?replicaSet=rs0 ROOT_URL: https://rocketchat.example.com PORT: 3000 DEPLOY_METHOD: docker Accounts_UseDNSDomainCheck: 'false' MAIL_URL: 'smtps://AmazonSESuser:[email protected]:587' depends_on: - mongodb expose: - 3000 ports: - 3000:3000 healthcheck: test: > /usr/local/bin/node -e ' const http = require("http"); const options = { host: "localhost", port: 3000, path: "/api/info", timeout: 2000 }; const healthCheck = http.request(options, (res) => { console.log(`HEALTHCHECK STATUS: $${res.statusCode}`); if (res.statusCode == 200) { process.exit(0); } else { process.exit(1); } }); healthCheck.on("error", function (err) { console.error("ERROR"); process.exit(1); }); healthCheck.end();' interval: 10s timeout: 5s retries: 3 start_period: 60s mongodb: image: bitnami/mongodb:4.4 restart: on-failure volumes: - mongodb_data:/bitnami/mongodb environment: MONGODB_REPLICA_SET_MODE: primary MONGODB_REPLICA_SET_NAME: rs0 MONGODB_PORT_NUMBER: 27017 MONGODB_INITIAL_PRIMARY_HOST: mongodb MONGODB_INITIAL_PRIMARY_PORT_NUMBER: 27017 MONGODB_ADVERTISED_HOSTNAME: mongodb MONGODB_ENABLE_JOURNAL: 'true' ALLOW_EMPTY_PASSWORD: 'yes' healthcheck: test: echo 'db.runCommand("ping").ok' | mongo mongodb:27017/test --quiet interval: 10s timeout: 5s retries: 3 start_period: 60s
Guarda el archivo pulsando Ctrl + X e introduciendo Y cuando se te solicite.
Inicia el contenedor Docker.
$ docker compose up -d
Comprueba el estado de los contenedores para asegurarte de que funcionan correctamente.
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 59cd748e684f registry.rocket.chat/rocketchat/rocket.chat:5.0.4 "docker-entrypoint.s…" 2 minutes ago Up 2 minutes (healthy) 0.0.0.0:3000->3000/tcp, :::3000->3000/tcp rocketchat-rocketchat-1 1fdabedf8681 bitnami/mongodb:4.4 "/opt/bitnami/script…" 2 minutes ago Up 2 minutes (healthy) 27017/tcp rocketchat-mongodb-1
También puedes utilizar el siguiente comando para comprobar el estado.
$ docker compose ps NAME COMMAND SERVICE STATUS PORTS rocketchat-mongodb-1 "/opt/bitnami/script…" mongodb running (healthy) 27017/tcp rocketchat-rocketchat-1 "docker-entrypoint.s…" rocketchat running (healthy) 0.0.0.0:3000->3000/tcp, :::3000->3000/tcp
En este punto, puedes comprobar tu instalación iniciando la URL http://rocketchat.example.com:3000
o http://<serverIPaddress>:3000
en el navegador. El siguiente paso es configurar SSL y poner la instalación detrás de un servidor proxy.
Paso 5 – Instalar SSL
Para instalar un certificado SSL utilizando Let’s Encrypt, necesitamos instalar la herramienta Certbot.
En primer lugar, necesitas descargar e instalar el repositorio EPEL.
$ sudo dnf install epel-release
Ejecuta los siguientes comandos para instalar Certbot.
$ sudo dnf install certbot
Generar el certificado SSL.
$ sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d rocketchat.example.com
El comando anterior descargará un certificado en el directorio /etc/letsencrypt/live/rocketchat.example.com
de tu servidor.
Genera un certificado de grupo Diffie-Hellman.
$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096
Crea un directorio raíz web de desafío para la renovación automática de Let’s Encrypt.
$ sudo mkdir -p /var/lib/letsencrypt
Crea un Cron Job para renovar el SSL. Se ejecutará cada día para comprobar el certificado y renovarlo si es necesario. Para ello, primero, crea el archivo /etc/cron.daily/certbot-renew
y ábrelo para editarlo.
$ sudo nano /etc/cron.daily/certbot-renew
Pega el siguiente código.
#!/bin/sh certbot renew --cert-name rocketchat.example.com --webroot -w /var/lib/letsencrypt/ --post-hook "systemctl reload nginx"
Guarda el archivo pulsando Ctrl + X e introduciendo Y cuando te lo pida.
Cambia los permisos del archivo de tareas para que sea ejecutable.
$ sudo chmod +x /etc/cron.daily/certbot-renew
Paso 6 – Instalar y configurar Nginx
Vamos a instalar la última versión de Nginx. Crea y abre el archivo /etc/yum.repos.d/nginx.repo
para editarlo.
$ sudo nano /etc/yum.repos.d/nginx.repo
Pega en él las siguientes líneas.
[nginx-stable] name=nginx stable repo baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=1 enabled=1 gpgkey=https://nginx.org/keys/nginx_signing.key module_hotfixes=true [nginx-mainline] name=nginx mainline repo baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/ gpgcheck=1 enabled=0 gpgkey=https://nginx.org/keys/nginx_signing.key module_hotfixes=true
Guarda el archivo pulsando Ctrl + X e introduciendo Y cuando se te pida.
Instala Nginx.
$ sudo dnf install nginx
Verifica la instalación.
$ nginx -v nginx version: nginx/1.22.0
Activa e inicia el servicio Nginx.
$ sudo systemctl enable nginx --now
Crea y abre el archivo /etc/nginx/conf.d/rocket.conf
para editarlo.
$ sudo nano /etc/nginx/conf.d/rocket.conf
Pega en él el siguiente código.
# Redirect all non-encrypted to encrypted server { listen 80; listen [::]:80; server_name rocketchat.example.com; return 301 https://$host$request_uri; } # HTTPS Server server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name rocketchat.example.com; access_log /var/log/nginx/rocketchat_access.log main; error_log /var/log/nginx/rocketchat_error.log; ssl_certificate /etc/letsencrypt/live/rocketchat.example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/rocketchat.example.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/rocketchat.example.com/chain.pem; ssl_dhparam /etc/ssl/certs/dhparam.pem; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384'; ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:20m; ssl_session_tickets off; ssl_session_timeout 180m; ssl_stapling on; ssl_stapling_verify on; location / { proxy_pass http://rocketchat.example.com:3000/; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto https; proxy_set_header X-Nginx-Proxy true; proxy_redirect off; } }
Una vez terminado, guarda el archivo pulsando Ctrl + X e introduciendo Y cuando se te pida. La configuración anterior permite a Nginx actuar como servidor proxy y enlazarse al puerto 3000 en localhost.
Abre el archivo /etc/nginx/nginx.conf
para editarlo.
$ sudo nano /etc/nginx/nginx.conf
Añade la siguiente línea antes de la línea include /etc/nginx/conf.d/*.conf;
.
server_names_hash_bucket_size 64;
Guarda el archivo pulsando Ctrl + X e introduciendo Y cuando se te solicite.
Verifica la sintaxis del archivo de configuración de Nginx.
$ sudo nginx -t nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Reinicia el servicio Nginx para habilitar la nueva configuración.
$ sudo systemctl restart nginx
Paso 7 – Acceder y configurar RocketChat
Inicia la URL https://rocketchat.example.com
en tu navegador y aparecerá la siguiente pantalla de configuración.
Rellena tus datos de administrador y pulsa el botón Siguiente para continuar. A continuación, se te pedirá que introduzcas los datos de la organización.
Rellena los datos de tu organización y pulsa el botón Siguiente para continuar. Se te pedirá que registres tu servidor de chat en Rocket Cloud si quieres acceder a las aplicaciones del mercado y a más funciones.
Rellena los datos y haz clic en Registrar si estás interesado. Si no, haz clic en el enlace Continuar como autónomo para continuar. Si te has registrado en Nube, se enviará un correo de verificación.
Haz clic en el enlace del correo de verificación para comprobar tu registro.
Tras la verificación, accederás al panel de control de Rocket Chat.
Configurar los ajustes SMTP
Visita la página de administración haciendo clic en la imagen de tu perfil en la parte superior izquierda de la página y haciendo clic en el enlace Administración.
Haz clic en el enlace Configuración de la barra lateral izquierda.
En la página de configuración, escribe Correo electrónico en el cuadro de búsqueda para que aparezca el botón Correo electrónico.
Haz clic en el botón Abrir bajo la sección Correo electrónico para abrir la página de configuración del correo electrónico. En la página siguiente, despliega la sección SMTP de la página.
Rellena los datos SMTP y pulsa el botón Guardar cambios en la parte superior derecha para activar el botón Enviar un correo de prueba a mi usuario. Se te pedirá tu contraseña para guardar la configuración SMTP.
Para nuestro tutorial, utilizaremos Amazon SES como servidor de correo con 587 como puerto. Desmarca el botón situado encima del botón Pool. La función del botón es ignorar TLS, pero no está etiquetado correctamente.
Deberías haber recibido un correo de prueba similar si todo se ha configurado correctamente.
Iniciar sesión en Rocket.Chat Cloud
Para utilizar las funciones de Rocket.Chat Cloud, tienes que iniciar sesión. Visita el menú Administración >> Servicios de Conectividad y te aparecerá la siguiente página.
Haz clic en el botón Iniciar sesión en Rocket.Chat Cloud para iniciar el proceso. Accederás a la página de inicio de sesión, donde se te pedirá que introduzcas el identificador de correo electrónico con el que te registraste durante el proceso de configuración.
Haz clic en el enlace Enviar inicio de sesión para continuar. Recibirás un correo electrónico con el enlace de inicio de sesión.
Haz clic en el enlace de inicio de sesión para completar el proceso. Se te pedirá que autorices a tu servidor a iniciar sesión con la cuenta Cloud.
Haz clic en el botón Autorizar para proceder y volver a la página de Servicios de Conectividad. Ya has iniciado sesión en la nube.
Instalar y utilizar aplicaciones en la nube de Rocket.Chat
Ahora puedes instalar aplicaciones en la Nube a través de la página Administración >> Aplicaciones. Vamos a instalar la aplicación GIPHY en nuestro servidor. Haz clic en el botón Obtener para proceder a la instalación.
Para configurar la aplicación, haz clic en el nombre de la aplicación en la página Aplicaciones y accederás a la página de detalles de la aplicación. Desde ahí, puedes configurar los ajustes y empezar a utilizar la aplicación.
Rellena los ajustes y haz clic en el botón Guardar cambios para completar la configuración de la aplicación.
Vuelve al panel de Rocket Chat y visita el tablón de mensajes. Para utilizar la aplicación GIPHY, escribe /giphy <search term>
y verás un montón de GIFs relacionados con tu consulta.
Pulsa el botón Intro para enviar el GIF a la pantalla de mensajes.
Paso 8 – Copia de seguridad y restauración de Rocket Chat
Hacer una copia de seguridad de Rocket Chat requiere que hagas una copia de seguridad de la base de datos MongoDB.
Detén el contenedor Docker.
$ docker compose down
Ejecuta el siguiente comando para listar la etiqueta de la imagen docker MongoDB.
$ docker ps -a
Para nuestro tutorial, la etiqueta de la imagen MongoDB es rocketchat_mongo_1
. Ejecuta el siguiente comando para exportar la base de datos a un archivo.
$ docker exec rocketchat_mongo_1 sh -c 'mongodump --archive' > db.dump
Para restaurar la base de datos, utiliza el siguiente comando.
$ docker exec -i <database_name> sh -c 'mongorestore --archive' < db.dump
Paso 9 – Actualizar Rocket Chat
Actualizar Rocket Chat requiere que sigas algunos comandos. Los datos no se ven afectados por el proceso de actualización. Extrae la última versión de la imagen de Rocket Chat.
$ docker pull registry.rocket.chat/rocketchat/rocket.chat:latest
Detén el cubo existente.
$ docker compose stop rocketchat
Elimina el contenedor existente.
$ docker compose rm rocketchat
Inicia Rocket Chat creando un nuevo contenedor.
$ docker compose up -d rocketchat
Conclusión
Con esto concluye nuestro tutorial sobre la instalación del servidor Rocket.Chat en una máquina Rocky Linux 8. Si tienes alguna pregunta, publícala en los comentarios a continuación.