O que é Mattermost e por que escolher uma solução self-hosted?
No cenário atual de desenvolvimento de software e operações de TI, a comunicação eficiente é tão crítica quanto o código em si. Ferramentas como Slack revolucionaram a forma como as equipes colaboram, mas muitas organizações, especialmente aquelas com rigorosos requisitos de conformidade (LGPD, GDPR) ou que buscam reduzir custos operacionais a longo prazo, encontram limitações nas soluções SaaS tradicionais. É aqui que entra o Mattermost, uma plataforma de comunicação digital e entrega de trabalho em equipe, open source e segura, projetada para ser hospedada internamente.
Instalar o Mattermost em sua própria VPS (Virtual Private Server) ou servidor dedicado oferece controle total sobre os dados. Diferente de plataformas proprietárias onde as informações residem nos servidores de terceiros, ao optar por um chat corporativo self-hosted, você garante que o histórico de conversas, arquivos compartilhados e integrações permaneçam sob sua jurisdição. Isso é particularmente valioso para equipes DevOps, desenvolvedores e empresas de infraestrutura que já operam em ambientes de cloud privada ou on-premise.
Além da privacidade, a flexibilidade técnica do Mattermost permite integrações profundas com ferramentas como GitHub, GitLab, Jenkins e Prometheus. Neste tutorial, iremos guiar você através do processo completo de instalação e configuração básica do Mattermost em um servidor Linux Ubuntu, transformando sua VPS em um hub centralizado de colaboração segura.
Pré-requisitos e Preparação do Ambiente
Antes de iniciar a instalação, é fundamental garantir que o ambiente esteja preparado para lidar com as cargas de trabalho da aplicação. O Mattermost é escrito em Go e utiliza um banco de dados relacional (geralmente PostgreSQL ou MySQL/MariaDB) para armazenar dados estruturados e um sistema de arquivos local ou S3-compatível para anexos.
Para este tutorial, assumiremos os seguintes pré-requisitos:
- Uma VPS com sistema operacional Ubuntu 20.04 ou 22.04 LTS.
- Acesso root ou um usuário com privilégios sudo.
- Pelo menos 2 vCPUs e 4 GB de RAM recomendados para ambientes pequenos a médios.
- Um domínio apontando para o IP da sua VPS (opcional, mas recomendado para uso de HTTPS).
- Portas 80 (HTTP) e 443 (HTTPS) abertas no firewall.
Inicie fazendo o update do sistema e instalando as dependências básicas necessárias para gerenciar serviços e baixar pacotes.
sudo apt update
sudo apt upgrade -y
sudo apt install curl wget apt-transport-https gnupg2 -y
Além disso, se você planeja usar um banco de dados externo (recomendado para produção), instale o PostgreSQL. Caso prefira uma instalação mais simples para testes ou ambientes pequenos, o Mattermost pode usar SQLite, mas isso não é recomendado para escalabilidade.
Instalando as Dependências do Banco de Dados
O Mattermost performa significativamente melhor com o PostgreSQL. Vamos instalar e configurar o banco de dados que armazenará todas as mensagens, configurações e metadados da sua instância.
sudo apt install postgresql postgresql-contrib -y
Após a instalação, precisamos criar um usuário e um banco de dados específicos para o Mattermost. Isso segue a prática de segurança de princípio do menor privilégio. Não use o usuário postgres padrão para a aplicação.
sudo -u postgres psql
Dentro do prompt do PostgreSQL, execute os seguintes comandos SQL:
CREATE USER mmuser WITH PASSWORD 'senha_forte_aqui';
CREATE DATABASE mattermostdb OWNER mmuser;
GRANT ALL PRIVILEGES ON DATABASE mattermostdb TO mmuser;
\q
Substitua senha_forte_aqui por uma senha complexa. Anote essa informação, pois ela será necessária no arquivo de configuração do Mattermost.
Baixando e Configurando o Mattermost
Agora que o ambiente está pronto, podemos proceder com o download da versão estável mais recente do servidor Mattermost. Verifique sempre a página oficial de downloads para obter o link mais atualizado.
SUITE_VERSION=6.7.2
wget https://releases.mattermost.com/${SUITE_VERSION}/mattermost-${SUITE_VERSION}-linux-amd64.tar.gz
Após o download, extraia os arquivos e mova-os para o diretório de instalação padrão /opt.
sudo tar -xvzf mattermost-${SUITE_VERSION}-linux-amd64.tar.gz
sudo mv mattermost /opt/
sudo groupadd --system mattermost
sudo useradd --system -g mattermost -d /opt/mattermost -s /usr/sbin/nologin -c "Mattermost" mattermost
sudo chown -R mattermost:mattermost /opt/mattermost
sudo chmod -R g+w /opt/mattermost
Agora, precisamos configurar o banco de dados. Edite o arquivo mattermost/config/config.json. Você pode usar o editor nano ou vim.
sudo nano /opt/mattermost/config/config.json
Localize a seção SqlSettings e atualize os parâmetros conforme abaixo. Certifique-se de ajustar o host se seu banco de dados estiver em outro servidor, mas neste caso assumimos localhost.
"SqlSettings": {
"DriverName": "postgres",
"DataSource": "postgres://mmuser:senha_forte_aqui@localhost/mattermostdb?sslmode=disable&connect_timeout=10",
"DataSourceReplicas": [],
"DataSourceSearchReplicas": [],
...
}
Salve o arquivo (Ctrl+O, Enter, Ctrl+X no nano). É crucial definir a senha corretamente para evitar falhas na inicialização.
Criando o Serviço Systemd
Para gerenciar o Mattermost como um serviço de fundo (daemon), precisamos criar uma unidade systemd. Isso garante que o serviço inicie automaticamente com o servidor e possa ser reiniciado facilmente em caso de falhas.
sudo nano /etc/systemd/system/mattermost.service
Cole a seguinte configuração:
[Unit]
Description=Mattermost
After=network.target
After=syslog.target
After=mysql.service
After=postgresql.service
[Service]
Type=notify
ExecStart=/opt/mattermost/bin/mattermost
TimeoutStartSec=3600
Restart=always
RestartSec=10
WorkingDirectory=/opt/mattermost
User=mattermost
Group=mattermost
LimitNOFILE=49152
[Install]
WantedBy=multi-user.target
Salve o arquivo e recarregue o daemon do systemd para reconhecer a nova configuração.
sudo systemctl daemon-reload
sudo systemctl enable mattermost
sudo systemctl start mattermost
Verifique se o serviço está rodando corretamente:
sudo systemctl status mattermost
Se tudo estiver correto, você verá um status "active (running)". Você pode acessar a interface web temporariamente navegando para http://IP_DO_SEU_SERVIDOR:8065.
Configurando Nginx como Reverse Proxy e SSL
Acessar via porta 8065 não é prático nem seguro para uso corporativo. O ideal é configurar o Nginx para atuar como um reverse proxy, redirecionando as requisições do domínio (ex: chat.suaempresa.com) para o Mattermost e gerenciando o certificado SSL/TLS para criptografar a comunicação.
Primeiro, instale o Nginx e o Certbot (para certificados Let's Encrypt).
sudo apt install nginx certbot python3-certbot-nginx -y
Crie um novo arquivo de configuração do site no diretório sites-available.
sudo nano /etc/nginx/sites-available/mattermost
Insira a seguinte configuração, substituindo chat.seudominio.com pelo seu domínio real:
server {
listen 80;
server_name chat.seudominio.com;
location /api/v1/websocket {
proxy_pass http://localhost:8065;
proxy_read_timeout 300s;
proxy_send_timeout 300s;
send_timeout 300s;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
location / {
proxy_pass http://localhost:8065;
proxy_buffering off;
client_max_body_size 0;
proxy_read_timeout 300s;
proxy_send_timeout 300s;
}
}
Ative a configuração criando um link simbólico e teste a sintaxe do Nginx.
sudo ln -s /etc/nginx/sites-available/mattermost /etc/nginx/sites-enabled/
sudo nginx -t
Se o teste for bem-sucedido, recarregue o Nginx.
sudo systemctl reload nginx
Agora, obtenha o certificado SSL. O Certbot configurará automaticamente o redirecionamento HTTPS e a renovação do certificado.
sudo certbot --nginx -d chat.seudominio.com
Siga as instruções no terminal para fornecer um email de contato e concordar com os termos. O Certbot irá modificar automaticamente o arquivo de configuração do Nginx para adicionar as diretrizes SSL.
Configurações Finais e Segurança
Com o servidor rodando atrás de um proxy reverso seguro, é hora de ajustar algumas configurações dentro da interface web do Mattermost para otimizar a experiência e garantir a segurança.
- Acesso Administrativo: Acesse
https://chat.seudominio.com. Crie sua conta de administrador. Você será o único usuário inicial, então escolha um email corporativo forte. - Configurações de Segurança: Vá em Admin Console > Security. Ative a exigência de HTTPS (já feito via Nginx), configure políticas de senha fortes e defina o tempo de expiração da sessão.
- Integrações: No Mattermost, você pode criar "Webhooks" para integrar com ferramentas externas. Por exemplo, configure um webhook no GitHub para enviar notificações de commits para uma canal específico no Mattermost.
- Backup: Estabeleça um cronjob para fazer backup periódico do diretório
/opt/mattermost/data(onde ficam os arquivos) e do banco de dados PostgreSQL. Um script simples pode comprimir esses dados e enviá-los para um bucket S3 ou outro servidor remoto.
Para automatizar o backup do banco de dados, você pode usar um comando como este em um script agendado pelo cron:
sudo -u postgres pg_dump mattermostdb > /backup/mattermost_$(date +%F).sql
Considerações sobre Infraestrutura DevOps e Escalabilidade
Instalar o Mattermost em uma VPS é um excelente ponto de partida para equipes pequenas a médias. No entanto, à medida que sua organização cresce, considere os seguintes aspectos de infraestrutura:
- Escala Horizontal: Para altas cargas, você pode adicionar múltiplos nós do servidor Mattermost atrás de um balanceador de carga (como HAProxy ou Nginx em modo load balancer). O banco de dados deve ser separado da aplicação.
- Armazenamento de Arquivos: Em vez de armazenar anexos no disco local, configure o Mattermost para usar armazenamento S3 (AWS S3, MinIO, DigitalOcean Spaces). Isso melhora a durabilidade e permite escalar o armazenamento independentemente do servidor de aplicação.
- Monitoramento: Utilize ferramentas como Prometheus e Grafana para monitorar métricas do sistema (CPU, RAM, Disk I/O) e métricas específicas da aplicação (conexões WebSocket ativas, latência de resposta).
A escolha de um slack alternativo open source como o Mattermost demonstra maturidade técnica. Você não está apenas economizando custos de licença; você está construindo uma infraestrutura que se adapta às necessidades específicas do seu fluxo de trabalho DevOps e colaboração em equipe.
Conclusão
A instalação do Mattermost em uma VPS Linux é um processo direto, mas que exige atenção aos detalhes de segurança e configuração de banco de dados. Seguindo os passos deste tutorial, você conseguiu transformar um servidor simples em uma plataforma robusta de comunicação segura.
Lembre-se de manter o sistema atualizado regularmente (sudo apt update && sudo apt upgrade) e de monitorar as versões do Mattermost para aplicar patches de segurança. A autonomia proporcionada por um servidor de mensagens linux self-hosted é inegável, oferecendo controle total sobre a privacidade dos dados da sua equipe.
Agora que seu servidor está online, incentive sua equipe a criar canais por projeto, integrar bots úteis e explorar as funcionalidades de busca avançada. A colaboração em equipe nunca foi tão transparente e segura quanto com uma solução sob medida.