O Rocket.Chat é uma aplicação de chat de código aberto e auto-hospedável que compete com plataformas como o Teams e o Slack. Proporciona aos administradores um controlo detalhado sobre permissões e configuração de papéis, organização de salas/canais, canais privados/públicos, discussões de grupo privadas, chats privados 1 a 1, integração de áudio/vídeo com sistemas como o Jitsi Meet, e muito mais.
Para uma empresa, especialmente no setor dos serviços tecnológicos, a comunicação interna e com os clientes é crucial para o sucesso. Um sistema como o Rocket.Chat pode abrir canais de comunicação para si, para a sua equipa e para os seus clientes, permitindo interações rápidas e em tempo real.
O que vai precisar
- Um servidor para executar o Rocket.Chat (idealmente com Linux)
- Docker/Docker Compose instalado
- Um domínio/subdomínio para o seu sistema de chat
- Um Proxy Reverso
- Cerca de 30 minutos do seu tempo.
Instalação através de um Script Simples
Pode instalar facilmente o Docker-CE, Docker-Compose, Portainer-CE e o Nginx Proxy Manager usando este script de instalação rápida que criei e mantenho no GitHub. Basta usar o comando:
wget https://gitlab.com/bmcgonag/docker_installs/-/raw/main/install_docker_nproxyman.sh
para descarregar o script para o seu host pretendido.
Altere as permissões para tornar o script executável:
chmod +x ./install_docker_nproxyman.sh
e, em seguida, execute o script com o comando:
./install_docker_nproxyman.sh
Quando o script for executado, ele pedirá que selecione o sistema operativo do host e, depois, perguntará quais os softwares que deseja instalar.
Simplesmente introduza ‘y’ para cada item que deseja instalar.
Em algum momento, poderá ser solicitado que introduza a sua palavra-passe de superutilizador (sudo).
Deixe o script concluir a instalação.
Nesta fase, poderá querer sair da sessão e voltar a entrar, pois isso permitirá que utilize os comandos docker e docker-compose sem precisar de sudo.
Instalar Rocket.Chat
Primeiro, precisamos de descarregar dois ficheiros: o ficheiro docker-compose (compose.yaml) e o ficheiro .env de exemplo que eles fornecem. Podemos fazer isso com a ferramenta wget no terminal.
Vamos criar um diretório para a nossa instalação do Rocket.Chat e mover-nos para lá:
mkdir -p docker/rocketchat
cd docker/rocketchat
Agora, podemos descarregar os dois ficheiros para o nosso diretório rocketchat:
wget https://raw.githubusercontent.com/RocketChat/Docker.Official.Image/master/compose.yml -O compose.yaml
wget https://raw.githubusercontent.com/RocketChat/Docker.Official.Image/master/env.example -O .env
Em seguida, precisamos de configurar algumas variáveis de ambiente de acordo com as nossas necessidades para esta instância do Rocket.Chat. Podemos editar o ficheiro .env usando o editor nano no terminal, ou pode usar qualquer outro editor de texto que prefira:
nano .env
Dentro do ficheiro .env, precisamos de descomentar algumas linhas. Para isso, removemos o símbolo de hashtag (#) no início das linhas que precisamos de editar. Veja o exemplo abaixo e faça as suas alterações de forma semelhante.
Configuração do Rocket.Chat
# Versão do Rocket.Chat
# ver:- https://github.com/RocketChat/Rocket.Chat/releases
#RELEASE=
# Endpoint do MongoDB (incluir o parâmetro ?replicaSet=)
#MONGO_URL=
# Endpoint do MongoDB para a base de dados local
#MONGO_OPLOG_URL=
# IP para ligar o processo
#BIND_IP=
# URL usada para aceder à sua instância do Rocket.Chat
ROOT_URL=https://chat.<o seu domínio>.<org/com/net>
# Porta na qual o Rocket.Chat funciona (dentro do container)
PORT=3000
# Porta no host para ligação
HOST_PORT=3000
Configuração do MongoDB
# Versão da imagem do MongoDB
MONGODB_VERSION=5.0
# Ver:- https://hub.docker.com/r/bitnami/mongodb
Configuração do Traefik (se ativado)
# Versão da imagem do Traefik
#TRAEFIK_RELEASE=
# Domínio para https (alterar ROOT_URL e BIND_IP conforme necessário)
#DOMAIN=
# Email para notificações de certificado
#LETSENCRYPT_EMAIL=
No ficheiro acima, removi o símbolo de hashtag nas linhas de ROOT_URL, PORT, HOST_PORT e MONGODB_VERSION. Deve fazer o mesmo. Se usar o proxy reverso Traefik, descomente e preencha esses itens também. Eu uso o Nginx Proxy Manager, por isso, esses itens podem permanecer comentados.
Para o ROOT_URL, deve introduzir o URL que deseja que os utilizadores usem para aceder ao site. Por exemplo, defini o meu como “https://chat.sysmainit.com”.
PORT e HOST_PORT podem ser ambos definidos como 3000, a menos que já tenha algo a correr na porta 3000 no sistema, nesse caso deve alterar o HOST_PORT para outra porta, e depois certificar-se de usar esse número de porta na configuração do seu proxy reverso.
Depois de fazer as alterações necessárias, pode guardar o ficheiro com CTRL + O, depois pressione Enter para confirmar, e finalmente feche o editor nano com CTRL + X.
A seguir, vamos abrir rapidamente o ficheiro compose.yaml com o nano e fazer uma pequena modificação lá também.
NOTA: Esta alteração só é necessária se não estiver a usar o proxy reverso Traefik. Se usar o Traefik, então NÃO faça esta alteração.
nano compose.yaml
Neste ficheiro, queremos remover a secção para o proxy reverso Traefik. Se estiver a usar o Traefik como seu proxy reverso, pode deixar essa parte como está.
volumes:
mongodb_data: { driver: local }
services:
rocketchat:
image: registry.rocket.chat/rocketchat/rocket.chat:${RELEASE:-latest}
restart: always
labels:
traefik.enable: "true"
traefik.http.routers.rocketchat.rule: Host(${DOMAIN:-})
traefik.http.routers.rocketchat.tls: "true"
traefik.http.routers.rocketchat.entrypoints: https
traefik.http.routers.rocketchat.tls.certresolver: le
environment:
MONGO_URL: "${MONGO_URL:-\
mongodb://${MONGODB_ADVERTISED_HOSTNAME:-mongodb}:${MONGODB_INITIAL_PRIMARY_PORT_NUMBER:-27017}/\
${MONGODB_DATABASE:-rocketchat}?replicaSet=${MONGODB_REPLICA_SET_NAME:-rs0}}"
MONGO_OPLOG_URL: "${MONGO_OPLOG_URL:\
-mongodb://${MONGODB_ADVERTISED_HOSTNAME:-mongodb}:${MONGODB_INITIAL_PRIMARY_PORT_NUMBER:-27017}/\
local?replicaSet=${MONGODB_REPLICA_SET_NAME:-rs0}}"
ROOT_URL: ${ROOT_URL:-http://localhost:${HOST_PORT:-3000}}
PORT: ${PORT:-3000}
DEPLOY_METHOD: docker
DEPLOY_PLATFORM: ${DEPLOY_PLATFORM:-}
REG_TOKEN: ${REG_TOKEN:-}
depends_on:
- mongodb
expose:
- ${PORT:-3000}
ports:
- "${BIND_IP:-0.0.0.0}:${HOST_PORT:-3000}:${PORT:-3000}"
mongodb:
image: docker.io/bitnami/mongodb:${MONGODB_VERSION:-5.0}
restart: always
volumes:
- mongodb_data:/bitnami/mongodb
environment:
MONGODB_REPLICA_SET_MODE: primary
MONGODB_REPLICA_SET_NAME: ${MONGODB_REPLICA_SET_NAME:-rs0}
MONGODB_PORT_NUMBER: ${MONGODB_PORT_NUMBER:-27017}
MONGODB_INITIAL_PRIMARY_HOST: ${MONGODB_INITIAL_PRIMARY_HOST:-mongodb}
MONGODB_INITIAL_PRIMARY_PORT_NUMBER: ${MONGODB_INITIAL_PRIMARY_PORT_NUMBER:-27017}
MONGODB_ADVERTISED_HOSTNAME: ${MONGODB_ADVERTISED_HOSTNAME:-mongodb}
MONGODB_ENABLE_JOURNAL: ${MONGODB_ENABLE_JOURNAL:-true}
ALLOW_EMPTY_PASSWORD: ${ALLOW_EMPTY_PASSWORD:-yes}
Do acima, queremos remover estas linhas:
labels:
traefik.enable: "true"
traefik.http.routers.rocketchat.rule: Host(${DOMAIN:-})
traefik.http.routers.rocketchat.tls: "true"
traefik.http.routers.rocketchat.entrypoints: https
traefik.http.routers.rocketchat.tls.certresolver: le
No nano, pode colocar o cursor na linha com “labels:”, e depois usar a combinação de teclas CTRL + K para remover a linha inteira. Continue pressionando CTRL + K repetidamente até que todas essas linhas sejam eliminadas.
A seguir, vamos alterar a linha de mapeamento de volumes para que a nossa base de dados MongoDB seja mantida dentro da nossa pasta rocketchat. Para isso, altere a linha que diz:
- mongodb_data:/bitnami/mongodb
para:
- ./mongodb_data:/bitnami/mongodb
Isto manterá o nosso compose.yaml, .env e os dados do MongoDB todos nesta pasta, o que facilita a compactação e o backup conforme necessário.
Agora, guarde as alterações com CTRL + O, depois pressione Enter para confirmar, e saia do editor nano com CTRL + X.
Finalmente, estamos prontos para descarregar as imagens para a nossa instância do Rocket.Chat.
docker compose pull
Enquanto as imagens são descarregadas, seja paciente. Pode demorar algum tempo, uma vez que as imagens podem ser grandes e depois precisam de ser extraídas (descomprimidas).
Depois de descarregar as imagens, precisamos de fazer mais uma coisa. Baseado na minha experiência, vamos criar agora a pasta “mongodb_data” e dar-lhe as permissões apropriadas:
mkdir mongodb_data
chmod 777 ./mongodb_data
Vamos iniciar o sistema com o comando:
docker compose up -d && docker compose logs -f
Isto é, na verdade, dois comandos concatenados com &&
. Primeiro, dizemos ao docker para iniciar os containers e depois dizemos que queremos ver os logs enquanto o sistema arranca. Podemos parar de ver os logs usando a combinação de teclas CTRL + C.
Quando o sistema estiver a funcionar, verá uma grande quantidade de texto. Procure por erros. Se não houver erros, pode parar de seguir os logs. Dê ao sistema alguns minutos para ficar completamente operacional.
Agora, só precisamos de configurar o nosso proxy reverso.
Podemos abrir o Nginx Proxy Manager e adicionar um novo Proxy Host. Neste caso, estou a usar o IP através da minha VPN Netbird, mas pode usar o IP da rede local ou o IP público, se preferir. Só precisa de garantir que “chat.seudominio.org” está a apontar para a sua instância do Nginx Proxy Manager. O Nginx tratará do encaminhamento a partir daí.
No nosso novo Proxy Host, vamos nomear a nossa entrada com o nome de domínio que queremos que as pessoas usem para aceder ao nosso site. No meu caso, inseri “chat.sysmainit.com”. Deve usar o seu domínio.
Depois, insira o IP que deseja que o Nginx Proxy Manager use para alcançar o servidor onde o Rocket.Chat está a funcionar. Depois, insira a porta que configurou para a variável HOST_PORT. No meu caso, defini 3000, então é isso que vou inserir.
Agora, ative as duas opções para “Block Common Exploits” e “Websocket Support”.
Em seguida, selecione o separador SSL e, no menu suspenso que diz ‘None’, selecione ‘Request a New Certificate’. A seguir, ative as opções para ‘Force SSL’, ‘HTTP/2 Support’, ‘HSTS’ para ambas as entradas, depois certifique-se de que o seu email está preenchido e aceite os termos de serviço do LetsEncrypt.
Clique no botão ‘Save’. Deverá ver a nova adição de proxy a ser fechada automaticamente após cerca de 30 segundos. Se não receber nenhum erro no pop-up, o seu proxy está pronto. Pode agora clicar na entrada no Nginx Proxy Manager ou simplesmente aceder ao site no seu navegador moderno favorito.
Ser-lhe-á apresentada uma página para criar uma conta para o seu primeiro utilizador. Este utilizador será um administrador do sistema com todos os privilégios necessários para gerir o seu servidor.
Com o Rocket.Chat, pode transformar a comunicação interna da sua empresa, melhorando a colaboração e a interação com clientes. O processo de instalação pode parecer complexo, mas seguindo as etapas descritas, terá uma plataforma de comunicação robusta e personalizada, pronta para atender às suas necessidades.