Como Instalar Mattermost no Ubuntu: Guia Completo Passo a Passo
Mattermost é uma plataforma poderosa e de código aberto de mensagens e colaboração em equipa 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 de subscrição SaaS recorrentes.
Este guia abrangente orienta-o através de cada etapa da instalação e configuração do Mattermost num servidor Ubuntu, incluindo configuração de base de dados PostgreSQL, configuração de proxy reverso Nginx e integração de certificado SSL.
Índice
- Pré-requisitos
- Atualizar o Seu Sistema
- Instalar Dependências Necessárias
- Descarregar e Instalar Mattermost
- Configurar a Base de Dados PostgreSQL
- Configurar Mattermost
- Criar um Serviço Systemd
- Configurar Nginx como Proxy Reverso
- Proteger Mattermost com SSL (HTTPS)
- Verificação Final
1. Pré-requisitos
Antes de começar, certifique-se de que os seguintes requisitos estão em vigor:
- Um servidor a executar 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 em produção)
- Hardware mínimo: 1 vCPU, 2 GB RAM, 10 GB espaço em disco (para equipas pequenas); aumente para implementações maiores
> Dica de Hospedagem: Para uma implementação suave do Mattermost, considere um plano de Hospedagem VPS fiável 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 certificado SSL).
Instale todos os pacotes necessários num único passo:
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. Descarregar e Instalar Mattermost
Passo 1: Descarregar a Versão Mais Recente do Mattermost
Visite a página oficial de lançamentos do Mattermost para encontrar a versão estável mais recente. Use wget para descarregá-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 disponível mais recente. Utilize sempre a versão estável mais recente para patches 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 de segurança crítica:
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 utilizador. Siga estes passos com cuidado.
Passo 1: Mudar para o Utilizador de Sistema PostgreSQL
sudo -i -u postgresPasso 2: Abrir a Shell Interativa PostgreSQL
psqlPasso 3: Criar a Base de Dados, Utilizador e Conceder Privilégios
Execute os seguintes comandos SQL um a 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 gerá-la e armazená-la 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 PostgreSQL e Regressar ao Seu Utilizador
q
exit6. Configurar Mattermost
Passo 1: Abrir o Ficheiro de Configuração 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 inicia automaticamente no arranque e reinicia 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. Isto também ativa o suporte WebSocket, que Mattermost requer para mensagens em tempo real.
Passo 1: Criar o Ficheiro de Configuração 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 Nginx para Erros de Sintaxe
sudo nginx -tResultado esperado:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successfulPasso 5: Reiniciar Nginx
sudo systemctl restart nginx9. Proteger 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 Let’s Encrypt gratuito abaixo.
Passo 1: Obter 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 renovação automática de certificado
Passo 2: Verificar Renovação Automática
sudo certbot renew --dry-runPasso 3: Reiniciar Nginx
sudo systemctl restart nginxA sua instância Mattermost está agora acessível em https://your_domain.com.
10. Verificação Final
Verificar se Todos os Serviços Estão em Execução
sudo systemctl status postgresql
sudo systemctl status mattermost
sudo systemctl status nginxTestar Mattermost Diretamente na Porta 8065
curl -I http://localhost:8065Deverá receber uma resposta HTTP 200 OK ou redirecionamento.
Completar a Configuração Baseada na Web
- Abra o seu navegador e navegue para
https://your_domain.com - Será saudado pelo assistente de configuração Mattermost
- Crie a sua conta de administrador
- Configure a sua primeira equipa e espaço de trabalho
- Convide membros da equipa e comece a colaborar
Resolução de Problemas Comuns
| Problema | Causa Provável | Solução |
|---|---|---|
| Serviço Mattermost falha ao iniciar | Credenciais de base de dados incorretas em config.json | Verifique novamente a sequência DataSource em SqlSettings |
| 502 Bad Gateway em Nginx | Mattermost não está em execução na porta 8 |
