O Rocket.Chat é uma das soluções de comunicação interna mais robustas e flexíveis disponíveis no mercado open source. Para profissionais de TI e administradores de sistemas, optar por uma versão self-hosted (auto-hospedada) não é apenas uma questão de controle de dados, mas também uma oportunidade para otimizar custos de infraestrutura e garantir a conformidade com políticas rigorosas de segurança corporativa. Este tutorial técnico detalha o processo completo de instalação e configuração do Rocket.Chat em um ambiente VPS Linux, focando na escalabilidade e na estabilidade do serviço.
A arquitetura moderna do Rocket.Chat permite o uso de containers Docker, o que simplifica drasticamente a gestão de dependências, atualizações e backups. Ao invés de lidar com compilações complexas de Node.js e MongoDB diretamente no sistema operacional host, utilizaremos uma abordagem baseada em imagens oficiais, garantindo um ambiente isolado e reproduzível.
Pré-requisitos de Infraestrutura
Antes de iniciar o processo de instalação, é fundamental garantir que a infraestrutura base esteja preparada. A escolha correta da instância na sua VPS impactará diretamente na performance do chat, especialmente quando o número de usuários simultâneos crescer.
Recomendamos os seguintes mínimos para um ambiente de produção estável com até 50 usuários ativos:
- Sistema Operacional: Ubuntu Server 22.04 LTS ou Debian 11/12 (ambos amplamente suportados pela comunidade Docker).
- Recurso de CPU: Mínimo de 2 vCPUs dedicadas.
- Memória RAM: 4 GB são suficientes para o banco de dados e a aplicação, mas 8 GB oferecem margem para picos de uso e caching eficiente.
- Armazenamento: SSD ou NVMe com pelo menos 20 GB livres. O Rocket.Chat armazena histórico de mensagens e arquivos anexados; disco rápido é crucial para latência baixa.
- Banda Larga: Conexão dedicada estável, preferencialmente com upload simétrico se a equipe for grande.
Além do hardware, você precisará de um domínio registrado (ex: chat.suaempresa.com.br) e acesso root ou sudo à sua VPS. A configuração de DNS deve apontar o subdomínio para o IP público da sua VPS antes de prosseguir.
Passo 1: Preparação do Ambiente Linux
O primeiro passo é garantir que o sistema operacional esteja atualizado e com as dependências básicas instaladas. Abra seu terminal SSH e conecte-se à sua instância.
sudo apt update && sudo apt upgrade -y
sudo apt install curl gnupg lsb-release -y
Com o sistema atualizado, precisamos instalar o Docker Engine e o Docker Compose. A maneira mais segura é utilizar o repositório oficial da Docker.
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
Adicione o repositório ao seu sistema:
echo "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Agora, instale os pacotes do Docker:
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
Verifique a instalação para garantir que o daemon está rodando corretamente:
sudo docker --version
sudo docker compose version
Passo 2: Estruturação do Projeto e Docker Compose
Agora que o ambiente está pronto, vamos criar a estrutura de diretórios para o projeto Rocket.Chat. Isso facilita a manutenção e o backup dos dados persistentes.
sudo mkdir -p /opt/rocket-chat/data
cd /opt/rocket-chat
Crie um arquivo chamado docker-compose.yml. Este arquivo orquestra os contêineres da aplicação e do banco de dados. Utilize o editor de sua preferência, como o nano:
sudo nano docker-compose.yml
Cole a seguinte configuração no arquivo. Esta versão utiliza volumes para persistência dos dados do MongoDB e configurações básicas de rede:
version: '3'
services:
rocketchat:
image: rocket.chat:latest
restart: unless-stopped
volumes:
- /opt/rocket-chat/uploads:/app/uploads
environment:
- ROOT_URL=http://chat.suaempresa.com.br
- MONGO_URL=mongodb://mongo:27017/rocketchat
- MONGO_OPLOG_URL=mongodb://mongo:27017/local
- DEPLOY_METHOD=docker
depends_on:
- mongo
ports:
- 3000:3000
mongo:
image: mongo:4.4
restart: unless-stopped
volumes:
- /opt/rocket-chat/data/db:/data/db
- /opt/rocket-chat/data/db-init:/docker-entrypoint-initdb.d
command: mongod --oplogSize 128 --replSet rs0 --storageEngine=mmapv1
mongo-init-replica:
image: mongo:4.4
depends_on:
- mongo
entrypoint: [ 'sh', '-c', 'for i in $(seq 1 30); do mongo mongo/mongo:27017 --eval "rs.initiate()" && break; echo "Waiting for MongoDB..."; sleep 5; done' ]
Atenção: Substitua http://chat.suaempresa.com.br pela URL real do seu domínio. Isso é crítico para a geração de tokens de autenticação e links corretos nas notificações.
Salve o arquivo (no nano, pressione Ctrl+O, Enter, e depois Ctrl+X) e inicie os contêineres:
sudo docker compose up -d
Aguarde alguns minutos enquanto o MongoDB inicializa e replica. Você pode acompanhar o log com:
sudo docker compose logs -f rocketchat
Passo 3: Configuração de Segurança e Reverse Proxy
Expor a porta 3000 diretamente na internet não é uma prática recomendada para produção. O ideal é utilizar um Reverse Proxy (como Nginx ou Traefik) que gerencie o tráfego HTTPS e redirecione as requisições para o container Docker.
Neste tutorial, utilizaremos o Nginx com Let's Encrypt para garantir certificados SSL gratuitos e seguros.
Instale o Nginx:
sudo apt install nginx certbot python3-certbot-nginx -y
Configure o bloco de servidor do Nginx. Crie um arquivo no diretório sites-available:
sudo nano /etc/nginx/sites-available/rocketchat
Insira a seguinte configuração, ajustando os caminhos dos certificados conforme necessário:
server {
listen 80;
server_name chat.suaempresa.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-Nginx-Proxy true;
proxy_cache_bypass $http_upgrade;
}
}
Habilite o site e teste a configuração:
sudo ln -s /etc/nginx/sites-available/rocketchat /etc/nginx/sites-enabled/
sudo nginx -t
Se o teste for positivo, reinicie o Nginx e obtenha o certificado SSL:
sudo systemctl restart nginx
sudo certbot --nginx -d chat.suaempresa.com.br
O Certbot irá pedir para confirmar se deseja redirecionar todo o tráfego HTTP para HTTPS. Selecione a opção 2 (Redirecionar). Isso garante que toda a comunicação interna seja criptografada.
Passo 4: Configuração Inicial e Otimização
Acesse https://chat.suaempresa.com.br. A interface de configuração inicial do Rocket.Chat será exibida. Siga os passos:
- Crie a conta de Administrador Global.
- Configure o nome da organização e o domínio.
- Defina as preferências de idioma (Português - Brasil).
Após o login, vá em Administração do Sistema > Configurações para ajustar parâmetros críticos:
- Accounts: Configure políticas de senha fortes e autenticação em dois fatores (2FA) se necessário.
- Message: Ajuste o tempo de retenção de mensagens se houver conformidade regulatória específica.
- File Storage: Certifique-se de que o armazenamento está configurado corretamente. Para escalabilidade futura, considere integrar com um serviço de Object Storage (como MinIO ou AWS S3) para não sobrecarregar o disco local da VPS.
Passo 5: Estratégias de Escalabilidade e Manutenção
O Rocket.Chat single-node é poderoso, mas a verdadeira escalabilidade vem da distribuição de carga. À medida que sua empresa cresce, considere as seguintes estratégias de infraestrutura:
Multicasting e Redis: Para clusters com múltiplos nós do Rocket.Chat, o Redis é essencial para gerenciar sessões e broadcast de mensagens em tempo real. Adicione um serviço Redis ao seu docker-compose.yml e configure a variável REDIS_URL.
Balanceamento de Carga: Utilize o Nginx ou HAProxy como balanceador de carga na frente de múltiplas instâncias do container rocketchat. Certifique-se de que as sessões são mantidas (sticky sessions) ou compartilhadas via Redis.
Backup Automatizado:
A perda de dados é inaceitável. Crie um script de backup simples para rodar diariamente via Cron:
#!/bin/bash
DATE=$(date +%F)
BACKUP_DIR="/opt/rocket-chat/backups"
mkdir -p $BACKUP_DIR
# Backup do MongoDB
sudo docker exec rocketchat_mongo_1 mongodump --out /data/db-backup
sudo cp -r /data/db-backup $BACKUP_DIR/mongo-$DATE.gz
gunzip $BACKUP_DIR/mongo-$DATE.gz 2>/dev/null || mv $BACKUP_DIR/mongo-backup $BACKUP_DIR/mongo-$DATE
# Backup dos uploads
sudo tar -czf $BACKUP_DIR/uploads-$DATE.tar.gz /opt/rocket-chat/uploads/
Configure este script para rodar semanalmente e envie os arquivos resultantes para um local externo (S3, Google Drive ou outra VPS) usando rclone ou rsync.
Conclusão
Instalar o Rocket.Chat em uma VPS Linux utilizando Docker é um processo que combina facilidade de implementação com poderosas capacidades de personalização. Ao seguir este tutorial, você estabeleceu não apenas um servidor de chat, mas uma plataforma de comunicação segura, privada e sob seu controle total.
Lembre-se que a manutenção contínua — atualizações de imagem Docker, patches de segurança do Nginx e monitoramento de recursos da VPS — é vital para garantir a disponibilidade do serviço. Com a infraestrutura adequada, o Rocket.Chat escala bem para atender desde pequenas equipes até grandes corporações, tornando-se uma peça central na estratégia de comunicação interna moderna.
Para dúvidas específicas sobre configurações avançadas ou integração com LDAP/Active Directory, consulte a documentação oficial do Rocket.Chat e os fóruns da comunidade técnica.