Como Instalar Mattermost no Ubuntu: Guia Completo Passo a Passo
Mattermost é uma plataforma poderosa de mensagens e colaboração em equipa de código aberto que oferece às organizações controlo total sobre a sua infraestrutura de comunicação. Como alternativa auto-hospedada ao Slack e Microsoft Teams, Mattermost oferece segurança de nível empresarial, propriedade completa de dados e personalização extensiva — tudo sem custos recorrentes de subscrição SaaS.
Este guia abrangente orienta-o em cada passo da instalação e configuração do Mattermost num servidor Ubuntu, incluindo configuração da base de dados PostgreSQL, configuração do proxy reverso Nginx e integração de certificados SSL.
1. Pré-requisitos
Antes de começar, certifique-se de que os seguintes requisitos estão em vigor:
- Um servidor executando Ubuntu 20.04 ou Ubuntu 22.04 LTS (Ubuntu 18.04 chegou ao fim da vida útil e não é recomendado para produção)
- Privilégios Sudo ou root no servidor
- Um nome de domínio apontado para o endereço IP do seu servidor (fortemente recomendado para implementações de produção)
- Hardware mínimo: 1 vCPU, 2 GB RAM, 10 GB de espaço em disco (para pequenas equipes); aumente para implementações maiores
> Dica de Hospedagem: Para uma implementação suave do Mattermost, considere um plano confiável de Hospedagem VPS da AlexHost. Com armazenamento SSD, acesso root completo e tempo de atividade garantido, as instâncias VPS da AlexHost são ideais para ferramentas de colaboração auto-hospedadas.
2. Atualizar o Seu Sistema
Comece sempre por atualizar o índice de pacotes e aplicar todas as atualizações de segurança e sistema pendentes:
sudo apt update
sudo apt upgrade -yReinicie o servidor se uma atualização de kernel foi aplicada:
sudo reboot3. Instalar Dependências Necessárias
Mattermost depende de três componentes principais: PostgreSQL (base de dados), Nginx (proxy reverso), e Certbot (gestão de certificados SSL).
Instale todos os pacotes necessários em uma etapa:
sudo apt install -y postgresql postgresql-contrib
sudo apt install -y nginx
sudo apt install -y certbot python3-certbot-nginxVerifique se PostgreSQL e Nginx estão em execução:
sudo systemctl status postgresql
sudo systemctl status nginxAmbos os serviços devem mostrar active (running).
4. Transferir e Instalar Mattermost
Passo 1: Transferir a Versão Mais Recente do Mattermost
Visite a página oficial de versões do Mattermost para encontrar a versão estável mais recente. Use wget para transferi-la diretamente para o seu servidor:
wget https://releases.mattermost.com/9.5.0/mattermost-team-9.5.0-linux-amd64.tar.gz> Nota: Substitua 9.5.0 pelo número da versão mais recente disponível. Utilize sempre a versão estável mais recente para correções de segurança e novas funcionalidades.
Passo 2: Extrair o Arquivo
tar -xvzf mattermost-team-9.5.0-linux-amd64.tar.gzPasso 3: Mover Mattermost para o Diretório do Sistema
Mova a pasta extraída para /opt, que é a localização padrão do Linux para software de terceiros opcional:
sudo mv mattermost /opt/mattermostPasso 4: Criar um Utilizador de Sistema Mattermost Dedicado
Executar Mattermost como um utilizador dedicado e sem privilégios é uma prática crítica de segurança:
sudo useradd -r -m -d /opt/mattermost -s /bin/false mattermostPasso 5: Criar o Diretório de Dados e Definir Permissões
sudo mkdir -p /opt/mattermost/data
sudo chown -R mattermost:mattermost /opt/mattermost
sudo chmod -R 750 /opt/mattermost5. Configurar a Base de Dados PostgreSQL
Mattermost requer uma base de dados PostgreSQL dedicada e um utilizador. Siga estes passos com cuidado.
Passo 1: Mudar para o Utilizador do Sistema PostgreSQL
sudo -i -u postgresPasso 2: Abrir a Shell Interativa do PostgreSQL
psqlPasso 3: Criar a Base de Dados, Utilizador e Conceder Privilégios
Execute os seguintes comandos SQL um por um:
CREATE DATABASE mattermost_db;
CREATE USER mattermost WITH PASSWORD 'YourStrongPassword123!';
GRANT ALL PRIVILEGES ON DATABASE mattermost_db TO mattermost;> Nota de Segurança: Substitua YourStrongPassword123! por uma palavra-passe forte e única. Utilize um gestor de palavras-passe para a gerar e armazenar com segurança.
Para PostgreSQL 15 e posterior, também precisa de conceder privilégios de esquema:
c mattermost_db
GRANT ALL ON SCHEMA public TO mattermost;Passo 4: Sair da Shell do PostgreSQL e Regressar ao Seu Utilizador
q
exit6. Configurar Mattermost
Passo 1: Abrir o Ficheiro de Configuração do Mattermost
sudo nano /opt/mattermost/config/config.jsonPasso 2: Atualizar as Definições de Ligação da Base de Dados
Localize o bloco SqlSettings e atualize-o com as suas credenciais PostgreSQL:
"SqlSettings": {
"DriverName": "postgres",
"DataSource": "postgres://mattermost:YourStrongPassword123!@localhost:5432/mattermost_db?sslmode=disable&connect_timeout=10",
"DataSourceReplicas": [],
"DataSourceSearchReplicas": [],
"MaxIdleConns": 20,
"ConnMaxLifetimeMilliseconds": 3600000,
"MaxOpenConns": 300,
"Trace": false,
"AtRestEncryptKey": "",
"QueryTimeout": 30
}Passo 3: Configurar o URL do Site
Encontre o bloco ServiceSettings e defina o seu domínio:
"ServiceSettings": {
"SiteURL": "https://your_domain.com",
...
}Substitua your_domain.com pelo seu nome de domínio real.
Passo 4: Guardar e Sair
Prima Ctrl+X, depois Y, depois Enter para guardar e fechar o ficheiro.
7. Criar um Serviço Systemd
Executar Mattermost como um serviço systemd garante que ele inicie automaticamente no boot e reinicie em caso de falha — essencial para qualquer implementação em produção.
Passo 1: Criar o Ficheiro de Serviço
sudo nano /etc/systemd/system/mattermost.servicePasso 2: Adicionar a Configuração do Serviço
Cole o seguinte conteúdo:
[Unit]
Description=Mattermost Team Messaging Server
After=network.target postgresql.service
Wants=postgresql.service
[Service]
Type=notify
ExecStart=/opt/mattermost/bin/mattermost
TimeoutStartSec=3600
KillMode=mixed
Restart=always
RestartSec=10
WorkingDirectory=/opt/mattermost
User=mattermost
Group=mattermost
LimitNOFILE=49152
[Install]
WantedBy=multi-user.targetPasso 3: Ativar e Iniciar o Serviço Mattermost
sudo systemctl daemon-reload
sudo systemctl enable mattermost
sudo systemctl start mattermostPasso 4: Verificar se o Serviço está em Execução
sudo systemctl status mattermostDeverá ver active (running). Mattermost escuta na porta 8065 por padrão.
8. Configurar Nginx como Proxy Reverso
Nginx atua como um proxy reverso, encaminhando o tráfego HTTP/HTTPS recebido das portas 80/443 para a porta interna 8065 do Mattermost. Isso também ativa o suporte a WebSocket, que o Mattermost requer para mensagens em tempo real.
Passo 1: Criar o Arquivo de Configuração do Nginx
sudo nano /etc/nginx/sites-available/mattermostPasso 2: Adicionar a Configuração do Proxy Reverso
upstream backend {
server localhost:8065;
keepalive 32;
}
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=mattermost_cache:10m max_size=3g inactive=120m use_temp_path=off;
server {
listen 80;
server_name your_domain.com;
location ~ /api/v[0-9]+/(users/)?websocket$ {
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
client_max_body_size 50M;
proxy_set_header Host $http_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-Frame-Options SAMEORIGIN;
proxy_buffers 256 16k;
proxy_buffer_size 16k;
proxy_read_timeout 600s;
proxy_pass http://backend;
}
location / {
client_max_body_size 50M;
proxy_set_header Connection "";
proxy_set_header Host $http_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-Frame-Options SAMEORIGIN;
proxy_buffers 256 16k;
proxy_buffer_size 16k;
proxy_read_timeout 600s;
proxy_cache mattermost_cache;
proxy_cache_revalidate on;
proxy_cache_min_uses 2;
proxy_cache_use_stale timeout;
proxy_cache_lock on;
proxy_pass http://backend;
}
}Substitua your_domain.com pelo seu nome de domínio real.
Passo 3: Ativar a Configuração do Site
sudo ln -s /etc/nginx/sites-available/mattermost /etc/nginx/sites-enabled/Passo 4: Testar a Configuração do Nginx para Erros de Sintaxe
sudo nginx -tSaída esperada:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successfulPasso 5: Reiniciar o Nginx
sudo systemctl restart nginx9. Proteja Mattermost com SSL (HTTPS)
Executar Mattermost sobre HTTPS é obrigatório para qualquer ambiente de produção. Encripta toda a comunicação entre utilizadores e o seu servidor, protegendo credenciais e mensagens de interceção.
> SSL Simplificado: AlexHost oferece Certificados SSL acessíveis para todos os tipos de websites e aplicações. Alternativamente, utilize o método gratuito Let’s Encrypt abaixo.
Passo 1: Obtenha um Certificado SSL Gratuito com Certbot
sudo certbot --nginx -d your_domain.comCertbot irá automaticamente:
- Verificar a propriedade do domínio
- Emitir um certificado Let’s Encrypt
- Modificar a sua configuração Nginx para ativar HTTPS
- Configurar a renovação automática de certificados
Passo 2: Verifique a Renovação Automática
sudo certbot renew --dry-runPasso 3: Reinicie Nginx
sudo systemctl restart nginxA sua instância Mattermost está agora acessível em https://your_domain.com.
10. Verificação Final
Verifique se Todos os Serviços Estão em Execução
sudo systemctl status postgresql
sudo systemctl status mattermost
sudo systemctl status nginxTeste o Mattermost Diretamente na Porta 8065
curl -I http://localhost:8065Você deve receber uma resposta HTTP 200 OK ou redirecionamento.
Conclua a Configuração Baseada na Web
- Abra seu navegador e navegue para
https://your_domain.com - Você será saudado pelo assistente de configuração do Mattermost
- Crie sua conta de administrador
- Configure sua primeira equipe e espaço de trabalho
- Convide membros da equipe e comece a colaborar
Resolução de Problemas Comuns
| Problema | Causa Provável | Solução |
|---|---|---|
| Falha ao iniciar o serviço Mattermost | Credenciais de banco de dados incorretas em config.json | Verifique novamente a string DataSource em SqlSettings |
| 502 Bad Gateway no Nginx | Mattermost não está em execução na porta 8065 | Execute sudo systemctl restart mattermost |
| Erros de conexão WebSocket | Cabeçalhos de proxy WebSocket ausentes no Nginx | Verifique o bloco de localização WebSocket na configuração do Nginx |
| Erros de certificado SSL | Domínio não apontado para o IP do servidor | Atualize o registro DNS A e aguarde a propagação |
| Conexão de banco de dados recusada | PostgreSQL não está em execução | Execute sudo systemctl start postgresql |
Por Que Escolher um Host Confiável para Mattermost?
O desempenho e a confiabilidade da sua instância Mattermost dependem muito da infraestrutura subjacente. Para equipes pequenas e médias, um VPS bem configurado é a escolha ideal. Para organizações maiores com altos volumes de mensagens, considere fazer upgrade para um Servidor Dedicado para máximo desempenho, isolamento e controle.
Se você precisa de um nome de domínio para sua implantação Mattermost, a AlexHost oferece Registro de Domínio competitivo com gerenciamento completo de DNS. E se você está executando múltiplos serviços junto com Mattermost, Hospedagem Web Compartilhada ou um VPS com cPanel podem simplificar o gerenciamento com um painel de controle intuitivo.
Resumo
Você instalou e configurou com sucesso o Mattermost no Ubuntu com:
- ✅ PostgreSQL como banco de dados backend
- ✅ Nginx como proxy reverso de nível de produção com suporte a WebSocket
- ✅ Let’s Encrypt SSL para conexões HTTPS criptografadas
- ✅ Um serviço systemd para inicialização automática e recuperação de falhas
- ✅ Permissões de arquivo adequadas e um usuário do sistema dedicado para segurança
O Mattermost está pronto para servir como o hub de comunicação privado e auto-hospedado da sua equipe — totalmente sob seu controle, sem dados deixando sua infraestrutura.
em todos os serviços de alojamento