O Rocket.Chat é um software gratuito de comunicação em grupo de código aberto e é o mais utilizado. Ele foi desenvolvido em JavaScript e usa a estrutura Meteor fullstack. É um servidor de bate-papo auto-hospedado e oferece chat por vídeo e conferência, compartilhamento de arquivos, sistemas de tickets de ajuda.

O Rocket.Chat ajuda sua equipe a se comunicar e compartilhar idéias a partir de dispositivos móveis e de desktop. Finalmente, é uma ótima solução para quem deseja hospedar seu próprio serviço de bate-papo.

Recursos:

*Bate-papo ao vivo, chamadas de vídeo e áudio e compartilhamento de tela. *Aplicativos móveis para Linux, Android, iOS, Windows e Mac. *Upload e compartilhamento de arquivos. *Tradução em tempo real.

Neste tutorial, explicaremos instruções passo a passo sobre como configurar o Rocket.Chat no servidor Ubuntu 18.04 com o Nginx como proxy reverso.

Pré-requisitos

Para seguir este tutorial, você precisará de um servidor Ubuntu 18.04 instalado, um usuário não-root comum com permissão sudo, um firewall básico habilitado para bloquear portas não essenciais, 2 GB de memória e um processador com 2 núcleos, além de um nome de domínio apontado para o endereço IP do servidor.

Quando você tiver uma conta disponível, efetue login como seu usuário não root para começar.

Instalando e configurando o MongoDB

Por padrão, o MongoDB não está disponível no repositório padrão do Ubuntu 18.04. Portanto, você precisará adicionar o repositório do MongoDB ao APT.

Primeiro, importe a chave pública do MongoDB executando o seguinte comando:

$

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

    

Executing: /tmp/apt-key-gpghome.jElLfN6iUC/gpg.1.sh --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4 gpg: key 68818C72E52529D4: public key "MongoDB 4.0 Release Signing Key packaging@mongodb.com" imported gpg: Total number processed: 1 gpg: imported: 1

Em seguida, adicione o repositório MongoDB com o seguinte comando:

$

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

Depois, atualize o repositório e instale MongoDB com o comando:

$$

sudo apt-get update -y sudo apt-get install mongodb-org -y

Você vai precisar configurar a réplica de MongoDB para melhorar a performance via Meteor Oplog.

Você pode fazer essa configuração editando /etc/mongod.conf

$

sudo nano /etc/mongod.conf

Adicione as seguintes linhas no fim do documento:

/etc/mongod.conf

replication: replSetName: "rs01"

$$

sudo systemctl start mongod sudo systemctl enable mongod

Para checar o status do MongoDB use o seguinte comando:

$

sudo systemctl status mongod

Output:

       

mongod.service - MongoDB Database Server Loaded: loaded (/lib/systemd/system/mongod.service; disabled; vendor preset: enabled) Active: active (running) since Tue 2019-07-16 04:32:43 UTC; 4s ago Docs: https://docs.mongodb.org/manual Main PID: 13607 (mongod) CGroup: /system.slice/mongod.service └─13607 /usr/bin/mongod --config /etc/mongod.conf

Jul 16 04:32:43 test.example.com systemd[1]: Started MongoDB Database Server.

Agora efetue login no MongoDB shell com o seguinte comando:

$

mongo

Depois, inicie a réplica com o seguinte comando:

$

> rs.initiate()

Você deve ver o seguinte arquivo de saída:

             

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

Instalar o Node.js

Você deve usar o Node.js para usar o Rocket.Chat, em uma versão a igual ou superior à 8.x. Logo, você terá que adicionar o Node.js em seu sistema.

Você pode fazer isso com o seguinte comando:

$

curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -

Depois, atualize o repositório e instale o Node.js e outros pacotes necessários com o comando seguinte:

$

sudo apt-get install nodejs npm build-essential curl software-properties-common graphicsmagick -y

Após instalar o Node.js, execute os comandos seguintes para instalar a versão recomendada do Node.js:

$

sudo npm install -g inherits n

Output:

     

​ /usr/local/bin/n -> /usr/local/lib/node_modules/n/bin/n /usr/local/lib ├── inherits@2.0.4 └── n@4.1.0

Depois, instale a versão recomendada do Node.js com o comando seguinte:​

$

n 8.11.4

Output:

install : node-v8.11.4
  mkdir : /usr/local/n/versions/node/8.11.4
  fetch : https://nodejs.org/dist/v8.11.4/node-v8.11.4-linux-x64.tar.gz

######################################################################################################################################## 100.0% installed : v8.11.4

Instale o Rocket Chat

Antes de instalar o Rocket.Chat, você vai precisar criar um novo usuário e grupo para poder executá-lo.

Você pode criá-los com os seguintes comandos:

$

sudo useradd -m -U -r -d /opt/rocket rocket

Depois, adicione o usuário rocket ao grupo www-data, para que o Nginx possa acessar o Rocket.Chat.

$$

sudo usermod -a -G rocket www-data sudo chmod 750 /opt/rocket

Depois, faça login com o usuário rocket e faça download da última versão estável do Rocket.Chat com o comando seguinte:

$$

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

Agora, extraia o arquivo baixado com o comando seguinte:

$

tar zxf rocket.chat.tgz

Renomeie o diretório extraído para Rocket.Chat com o comando seguinte:

$

mv bundle Rocket.Chat

Depois, instale todos os pacotes necessários usando o comando npm como mostrado abaixo:

$$

cd Rocket.Chat/programs/server npm install

Agora você tem o Rocket.Chat instalado e configurado. Logo, vamos testar a instalação do Rocket.Chat.

Para isso, ajuste o ambiente com o comando seguinte:

$$$$

export PORT=3000 export ROOT_URL=http://0.0.0.0:3000/ export MONGO_URL=mongodb://localhost:27017/rocketchat export MONGO_OPLOG_URL=mongodb://localhost:27017/local?replSet=rs01

Depois, mude o diretório para Rocket.Chat e inicie o servidor Rocket.Chat com o comando seguinte:

$$

cd ../../ node main.js

Se tudo estiver certo, o arquivo de saída deve ser similar ao arquivo abaixo:

                   

Using GridFS for custom sounds storage Using GridFS for custom emoji storage ➔ System ➔ startup ➔ +---------------------------------------------+ ➔ | SERVER RUNNING | ➔ +---------------------------------------------+ ➔ | | ➔ | Rocket.Chat Version: 1.2.1 | ➔ | NodeJS Version: 8.11.4 - x64 | ➔ | MongoDB Version: 4.0.10 | ➔ | MongoDB Engine: wiredTiger | ➔ | Platform: linux | ➔ | Process Port: 3000 | ➔ | Site URL: http://0.0.0.0:3000/ | ➔ | ReplicaSet OpLog: Enabled | ➔ | Commit Hash: 7475d7628a | ➔ | Commit Branch: HEAD | ➔ | | ➔ +---------------------------------------------+

Depois, saia do rocket user com o seguinte comando:

$

exit

Criando o arquivo Systemd Service para o Rocket.Chat

Depois, você vai precisar criar um arquivo Systemd para administrar o Rocket.Chat service. Você pode fazer isso com o comando seguinte:

$

sudo nano /etc/systemd/system/rocketchat.service

Adicione as linhas seguintes:

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

[Install] WantedBy=multi-user.target

Salve e feche o arquivo. Depois, inicie o Rocket.Chat e programe-o para iniciar depois que o sistema for ligado, por meio do comando seguinte:

$$$

sudo systemctl daemon-reload sudo systemctl start rocketchat sudo systemctl enable rocketchat

Agora você pode verificar o serviço Rocket.Chat com o comando seguinte:

$

sudo systemctl status rocketchat

Output:

       

● rocketchat.service - Rocket.Chat server Loaded: loaded (/etc/systemd/system/rocketchat.service; disabled; vendor preset: enabled) Active: active (running) since Tue 2019-07-16 05:29:10 UTC; 2min 24s ago Main PID: 11161 (node) Tasks: 10 (limit: 1114) CGroup: /system.slice/rocketchat.service └─11161 /usr/local/bin/node /opt/rocket/Rocket.Chat/main.js

Jul 16 05:31:23 ubuntu1804 rocketchat[11161]: ➔ | MongoDB Version: 4.0.10 | Jul 16 05:31:23 ubuntu1804 rocketchat[11161]: ➔ | MongoDB Engine: wiredTiger | Jul 16 05:31:23 ubuntu1804 rocketchat[11161]: ➔ | Platform: linux | Jul 16 05:31:23 ubuntu1804 rocketchat[11161]: ➔ | Process Port: 3000 | Jul 16 05:31:23 ubuntu1804 rocketchat[11161]: ➔ | Site URL: http://0.0.0.0:3000/ | Jul 16 05:31:23 ubuntu1804 rocketchat[11161]: ➔ | ReplicaSet OpLog: Enabled | Jul 16 05:31:23 ubuntu1804 rocketchat[11161]: ➔ | Commit Hash: 7475d7628a | Jul 16 05:31:23 ubuntu1804 rocketchat[11161]: ➔ | Commit Branch: HEAD | Jul 16 05:31:23 ubuntu1804 rocketchat[11161]: ➔ | | Jul 16 05:31:23 ubuntu1804 rocketchat[11161]: ➔ +---------------------------------------------+

Configure Nginx como um Proxy Reverso

Depois, você vai precisar instalar e configurar o Nginx como um proxy reverso para encaminhar solicitações de clientes ao servidor backend do Rocket.Chat.

Primeiramente, instale o Nginx com o seguinte comando:

$

sudo apt-get install nginx -y

Depois, crie um servidor Nginx para Rocket.Chat com o comando seguinte:

$

sudo nano /etc/nginx/conf.d/rocketchat.conf

Adicione as linhas seguintes:

/etc/nginx/conf.d/rocketchat.conf

upstream rocketchat { server 127.0.0.1:3000; }

server { listen 80; server_name test.example.com; access_log /var/log/nginx/test.example.com-access.log; error_log /var/log/nginx/test.example.com-error.log;

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

}

Salve e feche o arquivo. Então, confira o Nginx para checar se há algum erro de sintaxe. Use o seguinte comando:

$

sudo nginx -t

Output:

  

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

Finalmente, reinicie o serviço Nginx para aplicar todas as alterações de configuração:

$

sudo systemctl restart nginx

Acesse a Interface Web do Rocket.Chat

Agora, abra seu navegador web e digite a URL http://test.example.com. Você será redirecionado para a páguina seguinte:

rocketchat-admin-info

Digite seu nome, usuário admin, senha e endereço de e-mail. Depois, clique em Continue. Você deve ver a seguinte página:

rocketchat-organization-info

Digite o nome de sua empresa e clique no botão Continue. Você deve ver a seguinte página: rocketchat-server-info

Digite as informações de seu servidor e clique em Continue. Você deve ver a seguinte página: rocketchat-register-server

Agora, registe o seu servidor e clique em Continue. Você deve ver a página seguinte:

rocketchat-is-ready

Agora, clique em ”Go to your workspace”. Você será redirecionado à página do painel de controle do Rocket.Chat, assim como na imagem seguinte:

rocketchat-dashboard

Conclusão

Parabéns! Você instalou e configurou o Rocket.Chat em um Ubuntu 18.04 com Nginx sendo um proxy reverso com sucesso! Agora você conseguirá hospedar seu próprio chat, criar mais canais, adicionar membros e começar conversas entre si. Para mais informações, você pode verificar o arquivo oficial do Rocket.Chat em RocketChat Doc