Rocket.Chat es una plataforma de comunicación de equipo de código abierto, una alternativa de Slack autohospedada. Está desarrollado utilizando el marco Meteor y proporciona varias funciones, incluido el chat de la mesa de ayuda, el intercambio de archivos, las videoconferencias, los mensajes de voz, la API y más.
Rocket.Chat es una solución perfecta para empresas y comunidades que desean alojar su propio sistema de chat.
En este tutorial, le mostraremos cómo implementar Rocket.Chat en un servidor Ubuntu 18.04 y configurar Nginx como un proxy inverso SSL.
Requisitos previos #
Antes de continuar con este tutorial, asegúrese de tener los siguientes requisitos previos.
- Servidor Ubuntu 18.04. De acuerdo con los requisitos oficiales del sistema Rocket.Chat, necesita al menos 1 G de RAM.
- Un nombre de dominio que apunta a la dirección IP de su servidor. Usaremos
chat.example.com
. - Nginx instalado siguiendo este tutorial.
- Tienes un certificado SSL instalado para tu dominio. Puede generar un certificado SSL gratuito de Let's Encrypt siguiendo este tutorial.
Instalando Node.js #
Comience actualizando la lista de paquetes de su sistema:
sudo apt update
Instale Node.js, npm y todas las demás dependencias necesarias para crear paquetes npm desde la fuente:
sudo apt install nodejs npm build-essential curl software-properties-common graphicsmagick
Al momento de escribir este artículo, la versión recomendada de Node.js para Rocket.Chat es Node.js v8.11.3.
Vamos a usar n
, un paquete npm que nos permite administrar de forma interactiva las versiones de Node.js.
Ejecute los siguientes comandos para instalar n
y la versión recomendada de Node.js:
sudo npm install -g inherits n
sudo n 8.11.3
Instalando MongoDB #
MongoDB es una base de datos orientada a documentos NoSQL y Rocket.Chat la utiliza como almacén de datos.
Instalaremos MongoDB desde los repositorios oficiales de MongoDB.
Importe la clave pública de MongoDB y habilite el repositorio oficial de MongoDB con el siguiente comando:
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4
sudo add-apt-repository 'deb [arch=amd64] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.0 multiverse'
Una vez que el repositorio apt esté habilitado, actualice la lista de paquetes e instale MongoDB escribiendo:
sudo apt update
sudo apt install mongodb-org
Una vez completada la instalación, habilite e inicie el servicio MongoDB:
sudo systemctl start mongod
sudo systemctl enable mongod
Crear nuevo número de usuario del sistema
Para crear un nuevo usuario y grupo llamado rocket
, que ejecutará la instancia de Rocket.Chat, escriba:
sudo useradd -m -U -r -d /opt/rocket rocket
Agrega los www-data
usuario al nuevo grupo de usuarios y cambie el /opt/rocket
permisos de directorio para que Nginx pueda acceder a la instalación de Rocket.Chat:
sudo usermod -a -G rocket www-data
sudo chmod 750 /opt/rocket
Instalando Rocket.Chat #
Cambiar al usuario rocket
:
sudo su - rocket
Los siguientes comandos asumen que actualmente está operando como usuario rocket
.
Descarga la última versión estable de Rocket.Chat con curl:
curl -L https://releases.rocket.chat/latest/download -o rocket.chat.tgz
Una vez que se complete la descarga, extraiga el archivo y cambie el nombre del directorio a Rocket.Chat
:
tar zxf rocket.chat.tgz
mv bundle Rocket.Chat
Cambia a Rocket.Chat/programs/server
e instale todos los paquetes npm necesarios:
cd Rocket.Chat/programs/server
npm install
Para probar nuestra instalación antes de crear la unidad systemd y configurar un proxy inverso con Nginx, estableceremos las variables de entorno requeridas e iniciaremos el servidor Rocket.Chat
export PORT=3000
export ROOT_URL=http://0.0.0.0:3000/
export MONGO_URL=mongodb://localhost:27017/rocketchat
Vuelva a cambiar a Rocket.Chat
directorio e inicie el Rocket.Chat
servidor emitiendo los siguientes comandos:
cd ../../
node main.js
Si no hay errores, debería ver el siguiente resultado:
➔ +---------------------------------------------+
➔ | SERVER RUNNING |
➔ +---------------------------------------------+
➔ | |
➔ | Rocket.Chat Version: 0.71.1 |
➔ | NodeJS Version: 8.11.3 - x64 |
➔ | Platform: linux |
➔ | Process Port: 3000 |
➔ | Site URL: http://0.0.0.0:3000/ |
➔ | ReplicaSet OpLog: Disabled |
➔ | Commit Hash: e73dc78ffd |
➔ | Commit Branch: HEAD |
➔ | |
➔ +---------------------------------------------+
Detenga el servidor Rocket.Chat con CTRL+C
.
Vuelva a su usuario sudo escribiendo exit
y continúa con los siguientes pasos.
Crea una unidad Systemd #
Para ejecutar Rocket.Chat como un servicio, crearemos un rocketchat.service
archivo de unidad en el /etc/systemd/system/
directorio.
sudo nano /etc/systemd/system/rocketchat.service
Pegue el siguiente contenido:
/etc/systemd/system/rocketchat.service[Unit]
Description=Rocket.Chat server
After=network.target nss-lookup.target mongod.target
[Service]
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=rocketchat
User=rocket
Environment=MONGO_URL=mongodb://localhost:27017/rocketchat ROOT_URL=https://chat.example.com PORT=3000
ExecStart=/usr/local/bin/node /opt/rocket/Rocket.Chat/main.js
[Install]
WantedBy=multi-user.target
Notifique a systemd que hemos creado un nuevo archivo de unidad e inicie el servicio Rocket.Chat ejecutando:
sudo systemctl daemon-reload
sudo systemctl start rocketchat
Verifique el estado del servicio escribiendo:
sudo systemctl status rocketchat
* rocketchat.service - Rocket.Chat server
Loaded: loaded (/etc/systemd/system/rocketchat.service; disabled; vendor preset: enabled)
Active: active (running) since Wed 2018-11-07 14:36:24 PST; 5s ago
Main PID: 12693 (node)
Tasks: 10 (limit: 2319)
CGroup: /system.slice/rocketchat.service
`-12693 /usr/local/bin/node /opt/rocket/Rocket.Chat/main.js
Finalmente, habilite el servicio Rocket.Chat para que se inicie automáticamente en el momento del arranque con el siguiente comando:
sudo systemctl enable rocketchat
Configurar un proxy inverso con Nginx #
Si siguió nuestras guías sobre cómo instalar Nginx en Ubuntu 18.04 y cómo asegurar Nginx con Let's Encrypt en Ubuntu 18.04, ya debería tener Nginx instalado y configurado con certificado SSL.
Ahora necesitamos crear un nuevo bloque de servidor Nginx para la instalación de Rocket.Chat.
Abre tu editor de texto y crea el siguiente archivo:
sudo nano /etc/nginx/sites-available/chat.example.com.conf
/etc/nginx/sites-available/chat.example.com.confupstream rocketchat_backend {
server 127.0.0.1:3000;
}
server {
listen 80;
server_name chat.example.com;
include snippets/letsencrypt.conf;
return 301 https://chat.example.com$request_uri;
}
server {
listen 443 ssl http2;
server_name chat.example.com;
ssl_certificate /etc/letsencrypt/live/chat.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/chat.example.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/chat.example.com/chain.pem;
include snippets/ssl.conf;
access_log /var/log/nginx/chat.example.com-access.log;
error_log /var/log/nginx/chat.example.com-error.log;
location / {
proxy_pass http://rocketchat_backend/;
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-Forward-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forward-Proto http;
proxy_set_header X-Nginx-Proxy true;
proxy_redirect off;
}
}
Habilite el nuevo bloque de servidor creando un enlace simbólico desde el archivo al directorio de sitios habilitados:
sudo ln -s /etc/nginx/sites-available/chat.example.com.conf /etc/nginx/sites-enabled/
Vuelva a cargar el servicio Nginx para que los cambios surtan efecto:
sudo systemctl reload nginx
Configurando Rocket.Chat #
Abra su navegador y escriba:http://chat.example.com
.
Suponiendo que la instalación sea exitosa, se le presentará el Asistente de configuración de Rocket.Chat que lo guiará a través de la configuración de su primer usuario administrador, la configuración de su organización y el registro de su servidor para recibir notificaciones automáticas gratuitas y más.
La primera sección del asistente de configuración inicial le pedirá que configure su usuario administrador:
Una vez que haya terminado de ingresar la información del administrador, haga clic en Continue
y en el siguiente paso ingrese la información de su organización:
La tercera sección del asistente de configuración inicial le pedirá que ingrese la información del servidor:
En el siguiente paso, se le preguntará si desea utilizar las puertas de enlace y los proxies preconfigurados de Rocket.Chat. Al seleccionar esta opción, tendrá acceso al mercado de aplicaciones de Rocket.Chat y otras funciones, como las notificaciones automáticas, funcionarán de inmediato. .
Haga su elección, haga clic en Continue
y será redirigido a la siguiente página que indica que su espacio de trabajo está listo para usar:
Haz clic en Go to your workspace
y será redirigido al panel de control de Rocket.Chat con la sesión iniciada como usuario administrador.