Cómo instalar el servidor Rocket.Chat con Nginx en Ubuntu 20.04

Rocket.Chat es una aplicación de chat basada en la web y escrita en JavaScript, que utiliza el framework full-stack Meteor. Es una plataforma de colaboración de chat de código abierto que te permite comunicarte de forma segura en tiempo real a través de múltiples dispositivos. Es autoalojado y soporta chat de voz y vídeo, videoconferencia, intercambio de archivos y mucho más. Tiene una aplicación cliente disponible para todas las plataformas, incluyendo Windows, macOS, Linux, Android e iOS.

En este tutorial, te mostraremos cómo instalar Rocket.Chat en un servidor Ubuntu 20.04.

Requisitos previos

  • Un servidor con Ubuntu 20.04.
  • Un nombre de dominio válido apuntado con la IP de tu servidor.
  • Una contraseña de root configurada el servidor.

Cómo empezar

Antes de empezar, se recomienda actualizar los paquetes de tu sistema a la última versión. Puedes actualizarlos con el siguiente comando:

apt-get update -y

Una vez actualizado tu sistema, instala otras dependencias necesarias con el siguiente comando:

apt-get install nginx gnupg2 git unzip build-essential curl software-properties-common graphicsmagick -y

Una vez instalados todos los paquetes, puedes pasar al siguiente paso.

Instalar Node.js

A continuación, tendrás que instalar la versión 12 de Node.js en tu sistema. Por defecto, no está disponible en el repositorio estándar de Ubuntu 20.04. Así que tendrás que añadir el repositorio oficial de Node.js a tu sistema. Puedes añadirlo con el siguiente comando:

curl -sL https://deb.nodesource.com/setup_12.x | bash -

Una vez añadido el repositorio, instala Node.js con el siguiente comando:

apt-get install nodejs -y

Después de instalar Node.js, verifica la versión instalada de Node.js con el siguiente comando:

node -v

Deberías obtener la siguiente salida:

v12.19.0

Una vez que hayas terminado, puedes pasar al siguiente paso.

Instalar y configurar MongoDB

A continuación, tendrás que instalar el servidor MongoDB en tu sistema. Por defecto, la última versión de MongoDB no está disponible en el repositorio por defecto de Ubuntu 20.04. Así que tendrás que añadir el repositorio de MongoDB en tu sistema. Primero, descarga y añade la clave GPG con el siguiente comando:

apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4

Deberías obtener la siguiente salida:

Executing: /tmp/apt-key-gpghome.Ku2thT4UnL/gpg.1.sh --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4
gpg: key 68818C72E52529D4: public key "MongoDB 4.0 Release Signing Key <[email protected]>" imported
gpg: Total number processed: 1
gpg:               imported: 1

A continuación, añade el repositorio oficial de MongoDB con el siguiente comando:

add-apt-repository 'deb [arch=amd64] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.0 multiverse'

Una vez añadido el repositorio, instala MongoDB con el siguiente comando:

apt-get install mongodb-org -y

Después de instalar MongoDB, inicia el servicio MongoDB y habilítalo para que se inicie al reiniciar el sistema:

systemctl start mongod
systemctl enable mongod

A continuación, tendrás que editar el archivo de configuración por defecto de MongoDB y definir el conjunto de réplicas. Puedes hacerlo con el siguiente comando:

nano /etc/mongod.conf

Añade las siguientes líneas:

replication:
  replSetName: "replica01"

Guarda y cierra el archivo y luego reinicia el servicio MongoDB para aplicar la configuracióng:

systemctl restart mongod

A continuación, entra en el shell de MongoDB y habilita la réplica con el siguiente comando:

mongo
> rs.initiate()

Deberías obtener la siguiente salida:

{
	"info2" : "no configuration specified. Using a default configuration for the set",
	"me" : "127.0.0.1:27017",
	"ok" : 1,
	"operationTime" : Timestamp(1605081439, 1),
	"$clusterTime" : {
		"clusterTime" : Timestamp(1605081439, 1),
		"signature" : {
			"hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
			"keyId" : NumberLong(0)
		}
	}
}

A continuación, sal del shell de MongoDB con el siguiente comando:

> exit

Una vez que hayas terminado, puedes pasar al siguiente paso.

Instalar Rocket.Chat

A continuación, tendrás que crear un nuevo usuario para Rocket.Chat y añadirlo al grupo www-data. Puedes hacerlo con el siguiente comando:

useradd -m -U -r -d /opt/rocket rocket --shell /bin/bash
usermod -a -G rocket www-data

A continuación, da los permisos adecuados al directorio /opt/rocket:

chmod 750 /opt/rocket

A continuación, cambia el usuario a Rocket.Chat y descarga la última versión de Rocket.Chat con el siguiente comando:

su - rocket
curl -L https://releases.rocket.chat/latest/download -o rocket.chat.tgz

Una vez completada la descarga, extrae el archivo descargado con el siguiente comando:

tar -xvzf rocket.chat.tgz

A continuación, cambia el nombre del directorio extraído por Rocket.Chat con el siguiente comando:

mv bundle Rocket.Chat

A continuación, cambia el directorio por Rocket.Chat server e instala todas las dependencias de Node.js con el siguiente comando

cd Rocket.Chat/programs/server
npm install

Una vez instaladas todas las dependencias, puedes salir del usuario Rocket.Chat con el siguiente comando:

exit

Crear un archivo de servicio Systemd para Rocket.Chat

A continuación, tendrás que crear un archivo de servicio systemd para gestionar el servicio Rocket.Chat. Puedes crearlo con el siguiente comando:

nano /etc/systemd/system/rocketchat.service

Añade las siguientes líneas:

[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=http://rocket.yourdomain.com PORT=3000
ExecStart=/usr/bin/node /opt/rocket/Rocket.Chat/main.js

[Install]
WantedBy=multi-user.target

Guarda y cierra el archivo y recarga el demonio systemd con el siguiente comando:

systemctl daemon-reload

A continuación, inicia el servicio Rocket.Chat y permite que se inicie al reiniciar el sistema con el siguiente comando

systemctl start rocketchat
systemctl enable rocketchat

Ahora puedes comprobar el estado de Rocket.Chat con el siguiente comando:

systemctl status rocketchat

Si todo está bien, deberías obtener la siguiente salida:

? rocketchat.service - Rocket.Chat server
     Loaded: loaded (/etc/systemd/system/rocketchat.service; disabled; vendor preset: enabled)
     Active: active (running) since Wed 2020-11-11 07:58:01 UTC; 24s ago
   Main PID: 19951 (node)
      Tasks: 11 (limit: 4691)
     Memory: 508.7M
     CGroup: /system.slice/rocketchat.service
             ??19951 /usr/bin/node /opt/rocket/Rocket.Chat/main.js

Nov 11 07:58:21 ubuntu2004 rocketchat[19951]: ? |      MongoDB Version: 4.0.21                             |
Nov 11 07:58:21 ubuntu2004 rocketchat[19951]: ? |       MongoDB Engine: wiredTiger                         |
Nov 11 07:58:21 ubuntu2004 rocketchat[19951]: ? |             Platform: linux                              |
Nov 11 07:58:21 ubuntu2004 rocketchat[19951]: ? |         Process Port: 3000                               |
Nov 11 07:58:21 ubuntu2004 rocketchat[19951]: ? |             Site URL: http://rocket.yourdomain.com  |
Nov 11 07:58:21 ubuntu2004 rocketchat[19951]: ? |     ReplicaSet OpLog: Enabled                            |
Nov 11 07:58:21 ubuntu2004 rocketchat[19951]: ? |          Commit Hash: e37d7ba8ed                         |
Nov 11 07:58:21 ubuntu2004 rocketchat[19951]: ? |        Commit Branch: HEAD                               |
Nov 11 07:58:21 ubuntu2004 rocketchat[19951]: ? |                                                          |
Nov 11 07:58:21 ubuntu2004 rocketchat[19951]: ? +----------------------------------------------------------+

Configurar Nginx para Rocket.Chat

A continuación, tendrás que configurar Nginx como proxy inverso para Rocket.Chat. Para ello, crea un archivo de configuración de host virtual Nginx con el siguiente comando:

nano /etc/nginx/sites-available/rocketchat.conf

Añade las siguientes líneas:

upstream myrocketchat {
  server 127.0.0.1:3000;
}

server {
    listen 80;
    server_name rocket.yourdomain.com;

    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;

    location / {
        proxy_pass http://myrocketchat/;
        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;
    }
}

Guarda y cierra el archivo y luego activa el host virtual Nginx con el siguiente comando:

ln -s /etc/nginx/sites-available/rocketchat.conf /etc/nginx/sites-enabled/

A continuación, verifica que Nginx no tenga ningún error systex con el siguiente comando:

nginx -t

Deberías obtener la siguiente salida:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Por último, reinicia el servicio Nginx para aplicar los cambios de configuración:

systemctl restart nginx

También puedes verificar el estado del servicio Nginx con el siguiente comando:

systemctl status nginx

Deberías obtener la siguiente salida:

? nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: active (running) since Wed 2020-11-11 07:59:39 UTC; 4s ago
       Docs: man:nginx(8)
    Process: 20034 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
    Process: 20047 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
   Main PID: 20051 (nginx)
      Tasks: 3 (limit: 4691)
     Memory: 3.5M
     CGroup: /system.slice/nginx.service
             ??20051 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
             ??20052 nginx: worker process
             ??20053 nginx: worker process

Nov 11 07:59:39 ubuntu2004 systemd[1]: Starting A high performance web server and a reverse proxy server...
Nov 11 07:59:39 ubuntu2004 systemd[1]: Started A high performance web server and a reverse proxy server.

Una vez que hayas terminado, puedes pasar al siguiente paso.

Acceder a Rocket.Chat

En este punto, Rocket.Chat está instalado y configurado. Es hora de acceder a la interfaz web de Rocket.Chat. Abre tu navegador web y accede a Rocket.Chat utilizando la URL http://rocket.yourdomain.com.You se te redirigirá a la siguiente página:

Asistente de configuración de Rocket.Chat

Proporciona tu nombre de administrador, tu correo electrónico y tu contraseña y haz clic en el botón Continuar. Deberías ver la siguiente página:

Información de la organización

Proporciona tu tipo de organización, nombre, industria, tamaño, país y haz clic en el botón Continuar. Deberías ver la siguiente página:

Información del servidor

Proporciona el nombre de tu sitio, el idioma, el tipo de servidor y haz clic en el botón Continuar. Deberías ver la siguiente página:

Registrar el servidor

Acepta las Condiciones y la Política de Privacidad y haz clic en el botón Continuar. Deberías ver la siguiente página.

Servidor Rocket.Chat listo

Haz clic en el botón Ir a tu espacio de trabajo. Serás redirigido al panel de control de Rocket.Chat en la siguiente página:

Panel de control de Rocket.Chat

Conclusión

Enhorabuena! has instalado y configurado con éxito Rocket.Chat con Nginx como proxy inverso. Ahora puedes instalar Rocket.Chat en el entorno de producción y empezar a chatear con tus amigos y familiares.

También te podría gustar...