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

Asistente de configuración de Rocket.Chat

Rocket.Chat es una aplicación de chat basada en la web escrita en JavaScript, que utiliza el marco completo de Meteor. Es una plataforma de colaboración de chat de código abierto que le permite comunicarse de forma segura en tiempo real a través de múltiples dispositivos. Es autohospedado y admite chat de voz y video, videoconferencia, uso compartido de archivos y mucho más. Tiene una aplicación de cliente disponible para todas las plataformas, incluidas Windows, macOS, Linux, Android e iOS.

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

requisitos previos

  • Un servidor con Ubuntu 20.04.
  • Un nombre de dominio válido apuntado con la IP de su servidor.
  • Se configura una contraseña de root en el servidor.

Empezando

Antes de comenzar, se recomienda actualizar los paquetes de su sistema a la última versión. Puede actualizarlos con el siguiente comando:

apt-get update -y

Una vez que su sistema esté actualizado, instale otras dependencias requeridas con el siguiente comando:

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

Una vez que todos los paquetes estén instalados, puede continuar con el siguiente paso.

Instalar Node.js

A continuación, deberá instalar Node.js versión 12 en su sistema. De forma predeterminada, no está disponible en el repositorio estándar de Ubuntu 20.04. Por lo tanto, deberá agregar el repositorio oficial de Node.js a su sistema. Puedes agregarlo con el siguiente comando:

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

Una vez que se agrega el repositorio, instale Node.js con el siguiente comando:

apt-get install nodejs -y

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

node -v

Deberías obtener el siguiente resultado:

v12.19.0

Una vez que haya terminado, puede continuar con el siguiente paso.

Instalar y configurar MongoDB

A continuación, deberá instalar el servidor MongoDB en su sistema. De forma predeterminada, la última versión de MongoDB no está disponible en el repositorio predeterminado de Ubuntu 20.04. Por lo tanto, deberá agregar el repositorio MongoDB en su sistema. Primero, descargue y agregue la clave GPG con el siguiente comando:

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

Deberías obtener el siguiente resultado:

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, agregue 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 agregado el repositorio, instale MongoDB con el siguiente comando:

apt-get install mongodb-org -y

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

systemctl start mongod
systemctl enable mongod

A continuación, deberá editar el archivo de configuración predeterminado de MongoDB y definir el conjunto de réplicas. Puedes hacerlo con el siguiente comando:

nano /etc/mongod.conf

Agregue las siguientes líneas:

replication:
  replSetName: "replica01"

Guarde y cierre el archivo, luego reinicie el servicio MongoDB para aplicar la configuración:

systemctl restart mongod

A continuación, inicie sesión en el shell de MongoDB y habilite la réplica con el siguiente comando:

mongo
> rs.initiate()

Deberías obtener el siguiente resultado:

{
	"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, salga del shell de MongoDB con el siguiente comando:

> exit

Una vez que haya terminado, puede continuar con el siguiente paso.

Instalar Rocket.Chat

A continuación, deberá crear un nuevo usuario para Rocket.Chat y agregarlo al grupo www-data. Puedes hacerlo usando el siguiente comando:

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

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

chmod 750 /opt/rocket

A continuación, cambie al usuario a Rocket.Chat y descargue la última versión de Rocket.Chat con el siguiente comando: Anuncio

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

Una vez que se complete la descarga, extraiga el archivo descargado con el siguiente comando:

tar -xvzf rocket.chat.tgz

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

mv bundle Rocket.Chat

A continuación, cambie el directorio al servidor Rocket.Chat e instale todas las dependencias de Node.js con el siguiente comando:

cd Rocket.Chat/programs/server
npm install

Una vez que todas las dependencias estén instaladas, puede salir del usuario de Rocket.Chat usando el siguiente comando:

exit

Crear un archivo de servicio de Systemd para Rocket.Chat

A continuación, deberá crear un archivo de servicio systemd para administrar el servicio Rocket.Chat. Puedes crearlo con el siguiente comando:

nano /etc/systemd/system/rocketchat.service

Agregue 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

Guarde y cierre el archivo y vuelva a cargar el demonio systemd con el siguiente comando:

systemctl daemon-reload

A continuación, inicie el servicio Rocket.Chat y habilítelo para que se inicie al reiniciar el sistema con el siguiente comando:

systemctl start rocketchat
systemctl enable rocketchat

Ahora puede verificar el estado de Rocket.Chat con el siguiente comando:

systemctl status rocketchat

Si todo está bien, debería obtener el siguiente resultado:

? 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, deberá configurar Nginx como un proxy inverso para Rocket.Chat. Para hacerlo, cree un archivo de configuración de host virtual Nginx con el siguiente comando:

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

Agregue 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;
    }
}

Guarde y cierre el archivo, luego active el host virtual Nginx con el siguiente comando:

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

A continuación, verifique Nginx en busca de cualquier error de sistema con el siguiente comando:

nginx -t

Deberías obtener el siguiente resultado:

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

Finalmente, reinicie el servicio Nginx para aplicar los cambios de configuración:

systemctl restart nginx

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

systemctl status nginx

Deberías obtener el siguiente resultado:

? 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 haya terminado, puede continuar con el 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. Abra su navegador web y acceda a Rocket.Chat usando la URL http://rocket.tudominio.com.Será redirigido a la siguiente página:

Asistente de configuración de Rocket.Chat

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

información de la organización

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

información del servidor

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

Registrar servidor

Acepte los Términos y la Política de privacidad y luego haga clic en el Continuar botón. Deberías ver la siguiente página.

Servidor Rocket.Chat listo

Haga clic en el Ve a tu espacio de trabajo botón. Serás redirigido al tablero de Rocket.Chat en la siguiente página:

Panel de Rocket.Chat

Conclusión

¡Felicidades! Ha instalado y configurado correctamente Rocket.Chat con Nginx como proxy inverso. Ahora puede instalar Rocket.Chat en el entorno de producción y comenzar a chatear con sus amigos y familiares.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *