Mattermost é uma plataforma de colaboração e comunicação empresarial open-source, frequentemente comparada ao Slack. Para empresas brasileiras que buscam soberania digital, conformidade com a LGPD e controle total sobre seus dados, instalar Mattermost em um servidor VPS (Virtual Private Server) é uma das melhores estratégias. Diferente de soluções SaaS como Rocket Chat self-hosted tutorial ou Zulip servidor próprio, o Mattermost oferece uma arquitetura robusta baseada em banco de dados relacional (PostgreSQL/MySQL) e API REST completa, facilitando integrações complexas.
Este guia técnico detalha a instalação do Mattermost em um ambiente Linux Ubuntu/Debian, focado em estabilidade e segurança. Também abordaremos brevemente alternativas como Matrix Synapse VPS para comunicação federada ou Mumble servidor voz para chamadas de áudio de baixa latência, caso seu cenário exija funcionalidades específicas além do chat.
Pré-requisitos e Preparação do Ambiente
Antes de iniciar a instalação, é fundamental garantir que o ambiente esteja preparado. Para uma equipe pequena a média, uma VPS com 2 vCPUs e 4GB de RAM é suficiente para começar. Utilize sistemas operacionais LTS (Long Term Support) como Ubuntu 22.04 ou Debian 12.
A primeira etapa envolve atualizar o sistema operacional e instalar as dependências básicas necessárias para o gerenciamento do servidor, incluindo ferramentas de segurança e monitoramento.
sudo apt update
sudo apt upgrade -y
sudo apt install curl wget gnupg2 apt-transport-https -y
É altamente recomendável configurar um firewall básico. Se você estiver usando UFW (Uncomplicated Firewall), libere apenas as portas essenciais: 22 para SSH, 80 para HTTP (redirecionamento HTTPS) e 443 para HTTPS.
sudo ufw allow OpenSSH
sudo ufw allow 'Nginx Full'
sudo ufw enable
Instalação do PostgreSQL
O Mattermost utiliza bancos de dados relacionais para armazenar mensagens, configurações e metadados. O PostgreSQL é o banco de dados recomendado pela equipe do Mattermost devido ao seu desempenho superior em consultas complexas e suporte nativo a JSONB, útil para integrações.
Instale o PostgreSQL através dos repositórios oficiais:
sudo apt install postgresql postgresql-contrib -y
Após a instalação, crie um usuário dedicado e um banco de dados exclusivo para o Mattermost. Isso isolam as credenciais e facilitam backups futuros.
sudo -u postgres psql
CREATE USER mmuser WITH PASSWORD 'senha_segura_aqui';
CREATE DATABASE mattermostdb OWNER mmuser;
GRANT ALL PRIVILEGES ON DATABASE mattermostdb TO mmuser;
\q
Dica de Segurança: Substitua senha_segura_aqui por uma senha forte e única. Armazene-a em um gerenciador de senhas seguro, pois ela será necessária na configuração do Mattermost.
Download e Configuração do Binário do Mattermost
A instalação via binário precompilado é a forma mais leve e direta, evitando compilações demoradas. Baixe a versão estável mais recente do site oficial ou use o link direto da versão atual.
cd /opt
sudo wget https://releases.mattermost.com/6.7.2/mattermost-6.7.2-linux-amd64.tar.gz
sudo tar -xzf mattermost-6.7.2-linux-amd64.tar.gz
sudo mv mattermost mattermost-latest
Crie um usuário do sistema dedicado para executar o serviço, garantindo que o processo não rode com privilégios de root:
sudo useradd --shell /bin/false -d /opt/mattermost -M mattermost
sudo chown -R mattermost:mattermost /opt/mattermost
sudo chmod -R g+w /opt/mattermost
Agora, edite o arquivo de configuração config.json. Localize-o em /opt/mattermost/config/. Você precisará ajustar a string de conexão do banco de dados e o endereço do site.
sudo nano /opt/mattermost/config/config.json
Encontre a seção SqlSettings e atualize os campos:
DriverName: Deixe como"postgres".DataSource: Atualize para"postgres://mmuser:senha_segura_aqui@localhost/mattermostdb?sslmode=disable&connect_timeout=10".
Em seguida, na seção GeneralSettings, altere o campo SiteURL para o domínio ou IP público do seu servidor. Exemplo: "https://seu-dominio.com". Se estiver usando apenas IP por enquanto, use o IP público entre aspas.
Criação do Serviço Systemd
Para gerenciar o Mattermost como um serviço de fundo (daemon), crie um arquivo de unidade systemd. Isso garante que o serviço reinicie automaticamente em caso de falhas ou reinicializações do servidor.
sudo nano /etc/systemd/system/mattermost.service
Cole a seguinte configuração:
[Unit]
Description=Mattermost
After=network.target
After=syslog.target
After=postgresql.service
[Service]
Type=notify
User=mattermost
Group=mattermost
ExecStart=/opt/mattermost/bin/mattermost
TimeoutStartSec=3600
Restart=always
RestartSec=10
LimitNOFILE=49152
[Install]
WantedBy=multi-user.target
Salve o arquivo, recarregue o daemon do systemd e inicie o serviç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 a saída mostrar active (running), a instalação do backend foi concluída com sucesso.
Configuração do Nginx como Proxy Reverso e SSL
O Mattermost não deve ser exposto diretamente à internet na porta padrão. Utilize o Nginx como proxy reverso para gerenciar conexões HTTPS e melhorar a performance.
Instale o Nginx:
sudo apt install nginx -y
Crie um arquivo de configuração de site:
sudo nano /etc/nginx/sites-available/mattermost
Insira a seguinte configuração, ajustando o server_name:
upstream mattermost {
server 127.0.0.1:8065;
keepalive 32;
}
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=mm:10m max_size=3g inactive=120m use_temp_path=off;
server {
listen 80;
server_name seu-dominio.com www.seu-dominio.com;
location ~ ^/api/v[0-9]+/(users/)?websocket$ {
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
}
location / {
client_max_body_size 50M;
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_buffering off;
proxy_cache off;
proxy_pass http://mattermost;
}
location ~ /api/v[0-9]+/([^/]+)/upload$ {
client_max_body_size 50M;
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_buffers 256 16k;
proxy_buffer_size 16k;
proxy_pass_cache off;
proxy_pass http://mattermost;
}
access_log /var/log/nginx/mattermost.access.log;
error_log /var/log/nginx/mattermost.error.log;
}
Habilite o site e teste a configuração:
sudo ln -s /etc/nginx/sites-available/mattermost /etc/nginx/sites-enabled/
sudo nginx -t
Para habilitar o HTTPS, utilize o Certbot para obter certificados Let's Encrypt gratuitos:
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d seu-dominio.com -d www.seu-dominio.com
O Certbot irá modificar automaticamente a configuração do Nginx para redirecionar HTTP para HTTPS e configurar os certificados SSL.
Acesso Inicial e Configuração via Web Interface
Abra seu navegador e acesse https://seu-dominio.com. Você verá a tela de boas-vindas do Mattermost.
- Crie sua conta de administrador inicial (System Admin).
- Defina o nome da equipe (Team Name), que será parte da URL, ex:
https://seu-dominio.com/teamname. - Configure os canais iniciais.
Após o login, navegue até Configurações do Sistema para ajustar parâmetros como limite de tamanho de arquivo, políticas de retenção de mensagens e integração com Slack Export (caso você esteja migrando).
Integrações e Bots
O grande diferencial do Mattermost é sua API. Você pode integrar com ferramentas CI/CD (como Jenkins ou GitLab), sistemas de monitoramento (Grafana/Prometheus) e bots de produtividade. Acesse Integrações > Integrações Personalizadas para gerar tokens de webhook ou criar bots simples.
Alternativas: Quando Escolher Outra Solução?
Embora o Mattermost seja excelente para chat baseado em texto e canais, existem cenários onde outras soluções self-hosted podem ser mais adequadas:
- Matrix Synapse VPS + Element Messenger Linux: Se você precisa de federabilidade (comunicação entre servidores diferentes) e criptografia ponta a ponta nativa, o protocolo Matrix é superior. O Element é o cliente recomendado para acessar redes Matrix.
- Rocket Chat Self-Hosted Tutorial: Similar ao Mattermost, mas com foco maior em recursos de comunidade, streaming de vídeo integrado nativo e uma interface ligeiramente diferente. É uma escolha sólida se sua equipe já está familiarizada com a UI do Rocket.
- Zulip Servidor Próprio: Utiliza um modelo de "streams" (tópicos) que organiza conversas por assunto dentro dos canais. Ideal para equipes assíncronas onde o contexto histórico é crucial e threads podem ficar confusas em chats tradicionais.
- Mumble Servidor Voz: Se o foco principal for comunicação de voz de ultra-baixa latência (ex: gaming ou reuniões críticas), o Mumble oferece qualidade superior ao VoIP padrão do Mattermost, consumindo menos largura de banda.
- Jami Self-Hosted: Para privacidade extrema e comunicação P2P (Peer-to-Peer) sem servidores centrais. É complexo de configurar em ambientes corporativos tradicionais devido à falta de centralização.
- Revolt Chat VPS: Uma alternativa mais leve e moderna ao Rocket/Mattermost, escrita em Rust/Elixir. Oferece uma experiência de usuário muito fluida, mas possui uma comunidade menor e menos integrações empresariais maduras no momento.
Manutenção e Backups
A manutenção rotineira é simples. Para fazer backup, você precisa proteger dois componentes:
- Banco de Dados: Use
pg_dumppara exportar o banco. - Arquivos Estáticos: Faça cópia da pasta
/opt/mattermost/data/, onde imagens e uploads são armazenados.
Crie um script de backup automatizado:
# Backup do Banco
sudo -u postgres pg_dump mattermostdb > /backups/mattermost_db_$(date +%F).sql
# Backup dos Arquivos
sudo tar -czf /backups/mattermost_files_$(date +%F).tar.gz /opt/mattermost/data/
Configure um cron job para rodar diariamente. Monitore o uso de disco e memória, pois uploads de arquivos podem crescer rapidamente.
Conclusão
Instalar Mattermost em uma VPS oferece controle total, segurança aprimorada e custos previsíveis. Ao seguir este tutorial técnico, você estabelece uma base sólida para comunicação interna self-hosted. Lembre-se de manter o sistema atualizado regularmente através do sudo apt update && sudo apt upgrade e de substituir as versões antigas do binário mattermost quando novas releases seguras forem lançadas.
Para equipes que exigem mais do que chat, considere integrar bots personalizados ou explorar o ecossistema federado do Matrix Synapse VPS para uma arquitetura de comunicação mais resiliente e descentralizada.