15%

Poupe 15% em todos os serviços

Teste as suas habilidades e obtenha Desconto em qualquer plano

Utilizar o código:

Skills
Começar a trabalhar
01.11.2024
1 +1

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

  1. Pré-requisitos
  2. Atualizar o Seu Sistema
  3. Instalar Dependências Necessárias
  4. Descarregar e Instalar Mattermost
  5. Configurar a Base de Dados PostgreSQL
  6. Configurar Mattermost
  7. Criar um Serviço Systemd
  8. Configurar Nginx como Proxy Reverso
  9. Proteger Mattermost com SSL (HTTPS)
  10. 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 -y

Reinicie o servidor se uma atualização de kernel foi aplicada:

sudo reboot

3. 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-nginx

Verifique se PostgreSQL e Nginx estão em execução:

sudo systemctl status postgresql
sudo systemctl status nginx

Ambos 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.gz

Passo 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/mattermost

Passo 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 mattermost

Passo 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/mattermost

5. 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 postgres

Passo 2: Abrir a Shell Interativa PostgreSQL

psql

Passo 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
exit

6. Configurar Mattermost

Passo 1: Abrir o Ficheiro de Configuração Mattermost

sudo nano /opt/mattermost/config/config.json

Passo 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.service

Passo 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.target

Passo 3: Ativar e Iniciar o Serviço Mattermost

sudo systemctl daemon-reload
sudo systemctl enable mattermost
sudo systemctl start mattermost

Passo 4: Verificar se o Serviço Está em Execução

sudo systemctl status mattermost

Deverá 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/mattermost

Passo 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 -t

Resultado esperado:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Passo 5: Reiniciar Nginx

sudo systemctl restart nginx

9. 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.com

Certbot 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-run

Passo 3: Reiniciar Nginx

sudo systemctl restart nginx

A 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 nginx

Testar Mattermost Diretamente na Porta 8065

curl -I http://localhost:8065

Deverá receber uma resposta HTTP 200 OK ou redirecionamento.

Completar a Configuração Baseada na Web

  1. Abra o seu navegador e navegue para https://your_domain.com
  2. Será saudado pelo assistente de configuração Mattermost
  3. Crie a sua conta de administrador
  4. Configure a sua primeira equipa e espaço de trabalho
  5. Convide membros da equipa e comece a colaborar

Resolução de Problemas Comuns

ProblemaCausa ProvávelSolução
Serviço Mattermost falha ao iniciarCredenciais de base de dados incorretas em config.jsonVerifique novamente a sequência DataSource em SqlSettings
502 Bad Gateway em NginxMattermost não está em execução na porta 8
15%

Poupe 15% em todos os serviços

Teste as suas habilidades e obtenha Desconto em qualquer plano

Utilizar o código:

Skills
Começar a trabalhar