Guia de tecnologias

Como instalar e configurar Rocket.Chat no Ubuntu 16.04 com Nginx

7 min read DevOps Atualizado 21 Oct 2025
Instalar Rocket.Chat no Ubuntu 16.04 com Nginx
Instalar Rocket.Chat no Ubuntu 16.04 com Nginx

Visão geral rápida

Rocket.Chat é uma solução de chat de código aberto para comunicação em equipe, semelhante ao Slack. Este tutorial cobre uma instalação manual em Ubuntu 16.04, usando MongoDB 3.2 (ReplicaSet), Node.js 4.5 e Nginx como proxy reverso com SSL. Destina-se a administradores de sistema e engenheiros DevOps que preferem controle total sobre o ambiente.

Importante: use domínios, IPs e credenciais adequados ao seu ambiente. Ajuste versões ao migrar para Ubuntu ou Rocket.Chat mais recentes.

Pré-requisitos

  • Ubuntu 16.04 LTS (servidor)
  • Acesso root ou sudo
  • Um domínio configurado (recomendado) ou IP público
  • Portas 80 e 443 abertas para HTTP/HTTPS

Etapas principais (resumo)

  1. Instalar dependências (curl, GraphicsMagick, build-essential)
  2. Instalar e configurar MongoDB 3.2 + ReplicaSet
  3. Instalar Node.js (via n) e npm — Rocket.Chat exige Node 4.5 (versões antigas do tutorial)
  4. Baixar e iniciar Rocket.Chat
  5. Instalar e configurar Nginx como reverse proxy com SSL
  6. Testar, criar admin e validar o fluxo HTTPS

Passo 1 - Instalar dependências do Rocket.Chat

Conecte-se ao servidor por SSH e obtenha privilégios root:

ssh [email protected]
sudo su

Atualize repositórios e instale pacotes necessários:

apt-get update
apt-get install curl graphicsmagick build-essential

Observação: GraphicsMagick é usado para manipulação de imagens (avatares, thumbnails).

Passo 2 - Instalar MongoDB

Rocket.Chat requer MongoDB. Neste tutorial usamos MongoDB 3.2 a partir do repositório oficial.

Adicione a chave do repositório MongoDB:

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

Adicione o repositório (linha longa):

echo \"deb http://repo.mongodb.org/apt/ubuntu \"$(lsb_release -sc)\"/mongodb-org/3.2 multiverse\" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list

Atualize e instale o pacote mongodb-org:

apt-get update
apt-get install mongodb-org

Habilite e inicie o serviço:

systemctl enable mongod
systemctl start mongod

Por padrão, o MongoDB escuta na porta 27017.

Passo 3 - Configurar ReplicaSet do MongoDB

O Rocket.Chat se beneficia de um ReplicaSet para suporte ao oplog, que é usado para atualizar o aplicativo em tempo real.

Edite o arquivo de configuração (/etc/mongod.conf) e permita ligação além do localhost. Abra com o editor (vim):

vim /etc/mongod.conf

Localize a seção net e comente a linha bindIp para permitir conexões externas (ajuste conforme sua política de rede):

net:
    port: 27017
    #bindIp: 127.0.0.1

Adicione a seção de replicação no arquivo (replSetName = rs0):

#replication:
replication:
   oplogSizeMB: 1
   replSetName: rs0

Salve e reinicie o MongoDB:

systemctl restart mongod

Inicie um shell do MongoDB e inicialize o ReplicaSet:

export LC_ALL=C
mongo
rs.initiate()

Exemplo de saída esperada:

{
  \"info2\" : \"no configuration specified. Using a default configuration for the set\",
  \"me\" : \"nyanko-sensei:27017\",
  \"ok\" : 1
}

Importante: garanta que o campo ok seja 1. Se for outro número, verifique logs do mongod (/var/log/mongodb/mongod.log).

Configurar ReplicaSet do MongoDB

Passo 4 - Instalar npm e Node.js

O Rocket.Chat (na versão do tutorial) requer Node.js 4.5. Vamos instalar npm/nodejs do repositório e em seguida o utilitário n para gerir versões.

apt-get install nodejs npm

Instale o gerenciador de versões n globalmente:

npm install -g n

Instale a versão requerida do Node.js (4.5):

sudo n 4.5

Verifique as versões instaladas:

node --version
npm -v

Gerenciar versão do NodeJS com o comando n

Nota: versões modernas do Rocket.Chat exigem Node e MongoDB mais recentes; antes de atualizar, consulte a documentação oficial.

Passo 5 - Instalar o servidor Rocket.Chat

Faça o download e extraia o bundle do Rocket.Chat para /var/www/

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

Crie a pasta de destino e mova o bundle:

mkdir -p /var/www/
mv bundle Rocket.Chat
mv Rocket.Chat /var/www/

Instale dependências do servidor e defina variáveis de ambiente necessárias, depois execute:

cd /var/www/Rocket.Chat/
cd programs/server/
npm install

cd ../../
export ROOT_URL=http://192.168.1.110:3000/
export MONGO_URL=mongodb://nyanko-sensei:27017/rocketchat?replicaSet=rs0
export PORT=3000
node main.js

Substitua 192.168.1.110 pelo IP ou domínio do seu servidor.

Instalar o servidor Rocket.Chat no Ubuntu 16.04

Abra no navegador http://192.168.1.110:3000 para acessar a interface inicial.

Rocket.Chat instalado e funcionando

Passo 6 - Instalar e configurar Nginx como reverse proxy com HTTPS

Executar Rocket.Chat atrás de Nginx permite TLS, cache e melhor integração com headers X-Forwarded. Vamos configurar um certificado autoassinado (substitua por Let’s Encrypt em produção).

Instale o Nginx:

apt-get install nginx

Crie a pasta para SSL:

mkdir -p /etc/nginx/ssl/
cd /etc/nginx/ssl/

Gere um certificado autoassinado e proteja a chave:

openssl req -new -x509 -days 365 -nodes -out /etc/nginx/ssl/rocket-chat.crt -keyout /etc/nginx/ssl/rocket-chat.key
chmod 400 rocket-chat.key

Crie o arquivo de vhost em /etc/nginx/sites-available/rocket-chat e cole a configuração abaixo:

# Upstreams
upstream backend {
    server 127.0.0.1:3000;
}

# Redirect Options
server {
  listen 80;
  server_name rocket-chat.co;
  # enforce https
  return 301 https://$server_name$request_uri;
}

# HTTPS Server
server {
    listen 443;
    server_name rocket-chat.co;

    error_log /var/log/nginx/rocketchat.access.log;

    ssl on;
    ssl_certificate /etc/nginx/ssl/rocket-chat.crt;
    ssl_certificate_key /etc/nginx/ssl/rocket-chat.key;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # don't use SSLv3 (POODLE)

    location / {
        proxy_pass http://192.168.1.110: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-Forward-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forward-Proto http;
        proxy_set_header X-Nginx-Proxy true;

        proxy_redirect off;
    }
}

Substitua rocket-chat.co e os IPs pelo seu domínio/IP. Em produção, recomendamos usar certbot/Let’s Encrypt em vez de certificados autoassinados.

Ative o site e teste a configuração do Nginx:

ln -s /etc/nginx/sites-available/rocket-chat /etc/nginx/sites-enabled/rocket-chat
nginx -t

Se não houver erros, reinicie o Nginx:

systemctl restart nginx

Passo 7 - Testes e criação da conta admin

Atualize as variáveis de ambiente para usar o ROOT_URL com HTTPS e reinicie o Rocket.Chat (ou execute em foreground para testes):

cd /var/www/Rocket.Chat/
export ROOT_URL=https://rocket-chat.co
export MONGO_URL=mongodb://nyanko-sensei:27017/rocketchat?replicaSet=rs0
export PORT=3000
node main.js

Acesse https://rocket-chat.co (ou seu domínio) e registre a primeira conta usando o link “Register a new account” na tela inicial. Crie o usuário administrador e confirme o SITE-URL quando solicitado.

Rocket.Chat com Nginx

Rocket.Chat sobre SSL

Criar uma conta admin

Confirmar uso do novo URL do site

Registrar nome de usuário

Dashboard inicial após criar o admin:

Painel do Rocket.Chat

Boas práticas, segurança e operação

Important: o guia original usa versões antigas. Antes de colocar em produção, planeje atualização: use Ubuntu LTS suportado, MongoDB e Node.js compatíveis com sua versão do Rocket.Chat.

  • TLS: prefira Let’s Encrypt para certificados gratuitos e renovação automática com certbot.
  • Firewall: limite acesso ao MongoDB (porta 27017) apenas a hosts confiáveis.
  • Process manager: execute Rocket.Chat com systemd, PM2 ou outro process manager para reinício automático e logs centralizados.
  • Backups: faça backups regulares do banco MongoDB (mongodump) e do diretório /var/www/Rocket.Chat.
  • Atualizações: teste upgrades em ambiente de staging: atualizar Rocket.Chat pode exigir nova versão de Node/Mongo.

Exemplo mínimo de systemd unit para Rocket.Chat

[Unit]
Description=Rocket.Chat Server
After=network.target mongod.service

[Service]
Type=simple
Environment=ROOT_URL=https://rocket-chat.co
Environment=MONGO_URL=mongodb://nyanko-sensei:27017/rocketchat?replicaSet=rs0
Environment=PORT=3000
WorkingDirectory=/var/www/Rocket.Chat
ExecStart=/usr/bin/node main.js
Restart=always
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=rocketchat

[Install]
WantedBy=multi-user.target

(Adapte paths e usuário para rodar como um usuário não-root.)

Backup e restauração rápida do MongoDB

  • Fazer dump:
mongodump --db rocketchat --out /var/backups/mongodump-$(date +%F)
  • Restaurar:
mongorestore --db rocketchat /path/to/dump/rocketchat

Checklist baseado em papéis

Admin de sistema

  • Instalar e configurar serviços (MongoDB, Node, Nginx)
  • Configurar firewall e backups
  • Criar unit systemd/PM2

DevOps

  • Automatizar deploy (Ansible/Chef/Puppet)
  • Monitorar SLI/SLO (uptime, latência)
  • Planejar upgrades e migrações

Segurança

  • Forçar HTTPS e HSTS
  • Restringir acesso ao MongoDB
  • Rotacionar chaves/credenciais

Runbook de incidentes (resumo)

  1. Verifique status dos serviços:
systemctl status mongod
systemctl status nginx
systemctl status rocketchat
  1. Verifique logs:
  • Rocket.Chat: logs definidos pelo process manager
  • MongoDB: /var/log/mongodb/mongod.log
  • Nginx: /var/log/nginx/
  1. Se o MongoDB falhar: restaurar último dump ou reiniciar serviço. Se o ReplicaSet estiver com problemas, use mongo shell e rs.status().

  2. Rollback: restaurar versão anterior do bundle em /var/www/Rocket.Chat e reiniciar processo.

Maturidade e alternativas

  • Se você precisa de alta disponibilidade: use múltiplas réplicas MongoDB em nós separados, balanceador de carga e instâncias Rocket.Chat em múltiplos hosts.
  • Alternativas gerenciadas: Rocket.Chat Cloud (serviço pago) ou soluções SaaS (Slack, Microsoft Teams) caso não queira gerenciar infra.

Compatibilidade e migração

  • Versões recentes do Rocket.Chat exigem Node 12+ e MongoDB 4+. Antes de atualizar, consulte as notas de release oficiais.
  • Migrar de Ubuntu 16.04 para 18.04/20.04: primeiro atualize em um ambiente de teste; migrações do sistema podem quebrar dependências do Node.

1-linha de glossário

  • ReplicaSet: conjunto de instâncias MongoDB que mantém cópias dos dados para alta disponibilidade e suporte ao oplog.
  • ROOT_URL: URL base do Rocket.Chat usada em links e para validação do site.
  • oplog: log de operações do MongoDB usado para replicação e atualizações em tempo real.

Caixa de fatos (valores-chave)

  • Porta padrão MongoDB: 27017
  • Porta padrão Rocket.Chat no tutorial: 3000
  • Node.js usado no tutorial: 4.5 (versão antiga; ver compatibilidade)
  • Ubuntu alvo do tutorial: 16.04 LTS
  • TLS/HTTPS: portas 80 (redirecionamento) e 443 (HTTPS)

Problemas comuns e como resolver

  • Problema: “ok” diferente de 1 ao rs.initiate
    • Verifique /etc/mongod.conf, portas e logs do mongod.
  • Problema: Nginx retorna 502/504
    • Verifique se o Rocket.Chat está escutando na porta esperada e se o proxy_pass aponta para o endereço correto.
  • Problema: mensagens não atualizam em tempo real
    • Verifique o oplog do MongoDB e se MONGO_URL aponta para um ReplicaSet com ?replicaSet=rs0

Referências


Resumo: este guia cobre a instalação manual do Rocket.Chat no Ubuntu 16.04 com MongoDB ReplicaSet e Nginx TLS. Inclui práticas operacionais, backup, runbook e checklists para colocar o serviço em produção com segurança.

Autor
Edição

Materiais semelhantes

Instalar e usar Podman no Debian 11
Containers

Instalar e usar Podman no Debian 11

Apt‑pinning no Debian: guia prático
Administração de sistemas

Apt‑pinning no Debian: guia prático

Injete FSR 4 com OptiScaler em qualquer jogo
Tecnologia

Injete FSR 4 com OptiScaler em qualquer jogo

DansGuardian e Squid com NTLM no Debian Etch
Infraestrutura

DansGuardian e Squid com NTLM no Debian Etch

Corrigir erro de instalação no Android
Android

Corrigir erro de instalação no Android

KNetAttach: Pastas de Rede remota no KDE
KDE

KNetAttach: Pastas de Rede remota no KDE