Rocket.Chat Self-Hosted: Guia para Escalar Atendimento

10 min de leitura Comunicação Interna
Rocket.Chat Self-Hosted: Guia para Escalar Atendimento

Na era da transformação digital, a comunicação interna deixou de ser um suporte secundário para se tornar o coração da operação empresarial. Ferramentas proprietárias e baseadas em nuvem pública oferecem conveniência, mas trazem consigo preocupações crescentes sobre soberania de dados, conformidade regulatória (como a LGPD no Brasil) e custos recorrentes que podem escalar descontroladamente. É nesse contexto que a solução rocket chat self-hosted se destaca como uma alternativa robusta, segura e flexível para organizações que desejam manter o controle total sobre sua infraestrutura de comunicação.

O Rocket.Chat é uma plataforma de comunicação em tempo real open-source, escrita em JavaScript (Meteor) e utilizando MongoDB como banco de dados. Por ser auto-hospedável, ela permite a criação de um servidor de chat privado, integrado diretamente com os sistemas existentes da empresa, como LDAP, Active Directory ou SSO (Single Sign-On). Este tutorial técnico guia você pelo processo completo de instalação e configuração em um ambiente Linux, focado em escalabilidade e segurança para equipes de DevOps e infraestrutura.

1. Pré-requisitos e Arquitetura do Ambiente

Antes de iniciar a instalação do rocket chat vps, é fundamental garantir que o servidor atenda aos requisitos mínimos de hardware e software. Para ambientes produtivos com mais de 50 usuários simultâneos, recomenda-se uma configuração mínima de 4 vCPUs e 8GB de RAM. O sistema operacional deve ser uma distribuição Linux recente e suportada pela comunidade.

Neste tutorial, utilizaremos o Ubuntu Server 22.04 LTS (Jammy Jellyfish), devido à sua estabilidade e ampla documentação. A instalação será realizada via Docker, que é a maneira mais limpa, isolada e fácil de manter desta aplicação em produção.

Verifique as dependências do sistema:

sudo apt update
sudo apt upgrade -y

Instale o Docker Engine e o Docker Compose, que são essenciais para orquestrar os containers do Rocket.Chat e do MongoDB:

curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo apt install docker-compose-plugin -y

Após a instalação, verifique se o serviço está ativo e habilitado para iniciar com o boot do sistema:

sudo systemctl enable docker
sudo systemctl start docker

2. Configuração do Banco de Dados (MongoDB)

O Rocket.Chat depende fortemente do MongoDB para armazenar mensagens, configurações e metadados de usuários. Embora seja possível instalar o MongoDB localmente no mesmo servidor, a melhor prática em termos de escalabilidade é separar o banco de dados da aplicação ou usar volumes dedicados. Para simplificar este tutorial, utilizaremos um container Docker dedicado ao MongoDB, mas em produção de alta disponibilidade, considere um cluster MongoDB gerenciado ou replicado.

Crie um diretório para os dados do banco:

sudo mkdir -p /opt/mongodb/data

Inicie o container do MongoDB com autenticação ativada. A segurança é crítica; nunca exponha o MongoDB diretamente à internet sem autenticação.

sudo docker run -d \
  --name mongodb \
  -v /opt/mongodb/data:/data/db \
  -e MONGO_INITDB_ROOT_USERNAME=admin \
  -e MONGO_INITDB_ROOT_PASSWORD=senha_forte_aqui \
  -p 27017:27017 \
  mongo:latest

Nota de segurança: Substitua senha_forte_aqui por uma senha complexa gerada por um gerenciador de senhas. Em ambientes reais, evite expor a porta 27017 na internet; utilize uma rede Docker interna ou um proxy reverso com TLS.

3. Instalação do Rocket.Chat via Docker

Agora que a infraestrutura básica está pronta, vamos provisionar o servidor de chat privado. Utilizaremos o container oficial do Rocket.Chat. A configuração inicial requer variáveis de ambiente específicas para conectar ao MongoDB e definir as configurações de domínio.

Crie um arquivo docker-compose.yml na pasta /opt/rocket-chat para facilitar a gestão:

version: '3'
services:
  rocketchat:
    image: rocket.chat:latest
    restart: unless-stopped
    depends_on:
      - mongodb
    environment:
      - MONGO_URL=mongodb://admin:senha_forte_aqui@mongodb:27017/rocketchat?replicaSet=rs0
      - MONGO_OPLOG_URL=mongodb://admin:senha_forte_aqui@mongodb:27017/local?replicaSet=rs0
      - ROOT_URL=http://seu-dominio.com
      - ACCOUNTS_SETUPBLOCKED=true
    ports:
      - 3000:3000

No entanto, para uma instalação mais robusta e compatível com proxies reversos (Nginx/Caddy), é recomendável não mapear a porta diretamente para o host, mas sim rodar internamente. Vamos ajustar o comando de inicialização direto para este tutorial passo a passo:

sudo docker run --name rocketchat \
  -e ROOT_URL=http://localhost \
  -e MONGO_URL=mongodb://admin:senha_forte_aqui@localhost:27017/rocketchat \
  -e MONGO_OPLOG_URL=mongodb://admin:senha_forte_aqui@localhost:27017/local \
  -p 3000:3000 \
  --restart=always \
  rocket.chat

Aguardem alguns minutos. O Rocket.Chat leva tempo para inicializar o banco de dados e carregar os módulos da aplicação. Você pode verificar o log com:

sudo docker logs -f rocketchat

Quando a mensagem Server URL ready aparecer, o serviço está pronto.

4. Configuração Inicial via Interface Web

Acesse http://ip-do-seu-servidor:3000. Você será direcionado à tela de configuração inicial. Este passo é crítico para definir a identidade da sua plataforma de comunicação interna segura.

Etapa 4.1: Configuração do Site

  • Site Name: Defina o nome da organização (ex: "Comunicação TechCorp").
  • URL Base: Certifique-se de que a URL está correta. Se estiver atrás de um proxy, ajuste para o domínio público.
  • Tokens e Webhooks: Deixe as configurações padrão por enquanto.

Etapa 4.2: Criação da Conta de Super Usuário

  • Insira um nome de usuário, nome completo e email para a conta administrativa.
  • Crie uma senha forte.
  • O Rocket.Chat irá criar automaticamente o primeiro canal chamado all e a conta do administrador.

Após concluir, você terá acesso ao painel administrativo. Neste momento, sua instalação está funcional, mas ainda exposta via HTTP não criptografado na porta 3000. Para produção, isso é inaceitável.

5. Segurança e Proxy Reverso com Nginx

Para transformar seu rocket chat self-hosted em uma solução profissional, é necessário configurar um proxy reverso que gerencie o HTTPS (TLS/SSL) e encaminhe as requisições para o container Docker. Utilizaremos o Certbot da Let's Encrypt para obter certificados gratuitos.

Instale o Nginx e o Certbot:

sudo apt install nginx certbot python3-certbot-nginx -y

Configure um bloco de servidor no Nginx. Crie o arquivo /etc/nginx/sites-available/rocketchat:

server {
    listen 80;
    server_name chat.suempresa.com.br;

    location / {
        proxy_pass http://localhost:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-Port $server_port;
        proxy_set_header X-Pusher-AppId "rocket-chat";
        proxy_set_header X-Pusher-Key "rocket-chat";
    }
}

Habilite a configuração e teste o Nginx:

sudo ln -s /etc/nginx/sites-available/rocketchat /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx

Agora, obtenha o certificado SSL. Certifique-se de que o domínio aponta para o IP do servidor:

sudo certbot --nginx -d chat.suempresa.com.br

O processo interativo irá configurar automaticamente o redirecionamento HTTP para HTTPS e recarregar o Nginx. Atualize a variável ROOT_URL no seu container do Rocket.Chat para refletir o novo domínio https:

sudo docker exec -it rocketchat bash
# Dentro do container:
meteor mongo --eval "db.settings.update({key:'allowAnonymousRead'}, {$set:{value:true}})"
exit

Nota: Em versões mais recentes, a atualização de variáveis de ambiente requer a reinicialização do container ou uso de ferramentas como docker update. A forma mais segura é parar o container, atualizar o arquivo de configuração e iniciar novamente.

6. Integração com LDAP/Active Directory

Para empresas, a gestão manual de usuários é inviável. A integração com diretórios corporativos via LDAP ou SAML permite que os funcionários façam login com suas credenciais existentes, facilitando o onboarding e offboarding automatizado.

No painel administrativo do Rocket.Chat, navegue até Administração > Servidor > Autenticação. Selecione LDAP.

Preencha os campos com as informações do seu servidor LDAP/AD:

  • Host: IP ou FQDN do controlador de domínio.
  • Port: Geralmente 389 (LDAP) ou 636 (LDAPS - recomendado).
  • DN Search: Distinguished Name usado para buscar usuários (ex: ou=users,dc=empresa,dc=com,dc=br).
  • Field Mapping: Mapeie os campos do LDAP para o Rocket.Chat (username, email, displayName).

Realize um teste de conexão. Se bem-sucedido, ative a sincronização automática. Agora, seu servidor de chat privado está integrado à identidade corporativa.

7. Manutenção e Backup Automatizado

A infraestrutura moderna exige automação. O backup do Rocket.Chat consiste em duas partes: o banco de dados MongoDB e os arquivos anexados (uploads).

Crie um script de backup simples em /opt/backup-rocket.sh:

#!/bin/bash
BACKUP_DIR="/backups/rocketchat"
DATE=$(date +%Y%m%d_%H%M%S)
MONGO_USER="admin"
MONGO_PASS="senha_forte_aqui"

mkdir -p $BACKUP_DIR

# Backup do MongoDB
docker exec mongodb mongodump --username=$MONGO_USER --password=$MONGO_PASS --authenticationDatabase admin --out /tmp/mongo-backup-$DATE
mv /tmp/mongo-backup-$DATE $BACKUP_DIR/

# Backup dos uploads (ajuste o caminho conforme seu volume)
tar -czf $BACKUP_DIR/uploads-$DATE.tar.gz -C /opt/rocketchat-uploads .

# Limpeza de backups antigos (manter últimos 7 dias)
find $BACKUP_DIR -type f -mtime +7 -delete

Torne o script executável e agende via Cron:

sudo chmod +x /opt/backup-rocket.sh
echo "0 2 * * * /opt/backup-rocket.sh" | sudo crontab -

Conclusão

Implementar um rocket chat self-hosted é mais do que apenas instalar software; é uma decisão estratégica de infraestrutura. Ao assumir o controle da sua plataforma de comunicação, você garante a conformidade com políticas de privacidade, reduz custos operacionais de longo prazo e cria um ambiente customizável que se adapta à cultura da sua organização.

Este tutorial cobriu desde a preparação do ambiente Linux até a integração avançada com LDAP. Lembre-se de monitorar o uso de recursos (CPU/RAM) e manter as atualizações do Docker e do sistema operacional em dia para garantir a segurança contínua do seu servidor de chat privado. Para escalas maiores, considere adicionar balanceadores de carga e filas de mensagens (Redis) para lidar com picos de tráfego na sua comunicação interna segura.

Compartilhar: Link copiado!
Esse tutorial foi útil?

Comentários (0)

Seja o primeiro a comentar.

Deixe seu comentário

Seu comentário será analisado antes de ser publicado.

0/2000