Guia de tecnologias

Instalar Mattermost com PostgreSQL e Nginx no Ubuntu 16.04

6 min read DevOps Atualizado 20 Oct 2025
Mattermost com PostgreSQL e Nginx no Ubuntu 16.04
Mattermost com PostgreSQL e Nginx no Ubuntu 16.04

Instale PostgreSQL, crie a base de dados e o utilizador para o Mattermost, depois instale o Mattermost como utilizador não-root, configure-o para escutar localmente na porta 8065, crie um serviço systemd, e ponha um Nginx reverso com TLS. Este guia usa Ubuntu 16.04 e cobre segurança mínima, testes e um checklist de produção.

Importante: o exemplo de configuração do Mattermost no artigo usa a porta 8065. Ajuste os nomes de domínio, utilizadores e passwords para valores seguros na sua instalação.

  • Servidor com Ubuntu 16.04 LTS 64-bit
  • Acesso com privilégios de root (ou sudo)
  • Domínio apontado para o servidor (recomendado para TLS real)

Sumário do que vamos fazer

  1. Instalar e configurar PostgreSQL
  2. Instalar Mattermost como utilizador dedicado
  3. Criar e ativar um serviço systemd para Mattermost
  4. Instalar e configurar Nginx como proxy reverso com TLS
  5. Testes, verificações e passos de segurança adicionais

Passo 1 - Instalar e configurar a base de dados PostgreSQL

O Mattermost suporta MySQL e PostgreSQL. Neste tutorial usamos PostgreSQL.

Conecte-se ao servidor via SSH e atualize os repositórios:

ssh [email protected]
sudo apt-get update

Instale o PostgreSQL como root:

sudo apt-get install postgresql postgresql-contrib

Depois da instalação, alterne para o utilizador postgres para abrir o shell do PostgreSQL:

su - postgres
psql

Altere a password do utilizador postgres (substitua por uma password segura):

\password postgres
Enter new password:

Crie a base de dados e o utilizador para o Mattermost. No exemplo usamos: database = mattermostdb, user = matteruser, password = matterpassword. Substitua por valores fortes no seu ambiente:

CREATE DATABASE mattermostdb;
CREATE USER matteruser WITH PASSWORD 'matterpassword';
GRANT ALL PRIVILEGES ON DATABASE mattermostdb TO matteruser;
\q

Nota de segurança: não use passwords em texto plano em scripts públicos. Considere usar um cofre de segredos (Vault, AWS Secrets Manager, etc.) em produção.

Configurar a base de dados PostgreSQL para Mattermost.


Passo 2 - Instalar e configurar o Mattermost

Execute o Mattermost como um utilizador Linux dedicado. Vamos criar o utilizador matter:

useradd -m -s /bin/bash matter
passwd matter

Troque para o utilizador matter, faça download da versão do Mattermost usada neste tutorial (exemplo 3.4.0), e extraia o pacote:

su - matter
wget https://releases.mattermost.com/3.4.0/mattermost-3.4.0-linux-amd64.tar.gz

tar -xzvf mattermost-3.4.0-linux-amd64.tar.gz
cd mattermost/

Crie o diretório de dados e edite o ficheiro de configuração config/config.json:

mkdir data/
vim config/config.json

No bloco “ServiceSettings” defina o endereço de escuta para o loopback, porque vamos usar um proxy reverso (Nginx):

"ListenAddress": "127.0.0.1:8065",

No bloco “SqlSettings” altere DriverName e DataSource para apontar para o PostgreSQL criado no Passo 1. Exemplo:

"DriverName": "postgres",
"DataSource": "postgres://matteruser:[email protected]:5432/mattermostdb?sslmode=disable&connect_timeout=10",

Nota: no DataSource, substitua matteruser, matterpassword e mattermostdb pelos seus valores reais.

Salve e saia do editor.

Inicie o Mattermost manualmente para testar:

cd bin/
./platform

Deverá ver mensagens indicando que o Mattermost está a correr em 127.0.0.1:8065. Pressione Ctrl+C para parar o processo de teste.

Mattermost instalação no Ubuntu 16.04.


Passo 3 - Configurar como um serviço systemd

Crie um ficheiro de serviço systemd para gerir o Mattermost automaticamente.

cd /etc/systemd/system/
vim mattermost.service

Cole a configuração a seguir (verifique os caminhos se o utilizador/home difere):

[Unit]
Description=Mattermost is an open source, self-hosted Slack-alternative
After=syslog.target network.target

[Service]
Type=simple
User=matter
Group=matter
ExecStart=/home/matter/mattermost/bin/platform
PrivateTmp=yes
WorkingDirectory=/home/matter/mattermost
Restart=always
RestartSec=30
LimitNOFILE=49152

[Install]
WantedBy=multi-user.target

Carregue a nova unidade e inicie o serviço:

systemctl daemon-reload
systemctl start mattermost
systemctl enable mattermost

Verifique o estado e as portas em escuta:

netstat -plntu
systemctl status mattermost

Serviço Mattermost em execução

Dica: se netstat não estiver disponível, use ss -plntu.


Passo 4 - Instalar e configurar o Nginx como proxy reverso com TLS

Instale o Nginx e prepare um certificado TLS. Para testes, geramos um certificado autoassinado; em produção use Let’s Encrypt ou certificados válidos.

sudo apt-get install nginx
cd /etc/nginx/
mkdir ssl/; cd ssl/

Gerar um certificado autoassinado (autoexpira em 365 dias no exemplo) e proteger a chave privada:

openssl req -new -x509 -days 365 -nodes -out /etc/nginx/ssl/mattermost.crt -keyout /etc/nginx/ssl/mattermost.key
chmod 400 mattermost.key

Crie o ficheiro de host virtual em sites-available:

cd /etc/nginx/sites-available/
vim mattermost

Cole a configuração abaixo e substitua mattermost.mydomain.com pelo seu domínio. Esta configuração encaminha para 127.0.0.1:8065, onde o Mattermost está a escutar:

server {
   listen         80;
   server_name    mattermost.mydomain.com;
   return         301 https://$server_name$request_uri;
}

server {
   listen 443 ssl;
   server_name mattermost.mydomain.com;

   ssl on;
   ssl_certificate /etc/nginx/ssl/mattermost.crt;
   ssl_certificate_key /etc/nginx/ssl/mattermost.key;
   ssl_session_timeout 5m;
   ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
   ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';
   ssl_prefer_server_ciphers on;
   ssl_session_cache shared:SSL:10m;

   location / {
      gzip off;
      proxy_set_header X-Forwarded-Ssl on;
      client_max_body_size 50M;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection "upgrade";
      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_pass http://127.0.0.1:8065;
   }
}

Ative a configuração e reinicie o Nginx:

ln -s /etc/nginx/sites-available/mattermost /etc/nginx/sites-enabled/
nginx -t
systemctl restart nginx

Notas de produção:

  • Substitua o certificado autoassinado por um certificado válido (Let’s Encrypt recomendado).
  • Desative protocolos TLS/SSL antigos e configure ciphers modernos (ex.: TLS 1.2+).
  • Considere usar HSTS se tiver HTTPS bem configurado.

Passo 5 - Testar a instalação

Abra um navegador e visite o domínio configurado (ex.: https://mattermost.mydomain.com). Deve redirecionar para HTTPS e apresentar a página de criação de conta.

Crie a primeira conta e, se necessário, aceda ao System Console para criar equipas e ajustar definições.

Criar uma conta no Mattermost

Criar equipa ou aceder ao console de administração

Painel do System Console do Mattermost

Criar uma equipa no Mattermost

Dashboard da equipa no Mattermost

Chat de equipa no Mattermost

Instalação concluída: Mattermost com PostgreSQL e Nginx no Ubuntu 16.04.


Checklist de verificação (pré-produção)

Administrador:

  • Substituir passwords temporárias por passwords seguras.
  • Trocar certificado autoassinado por um certificado válido (Let’s Encrypt ou CA comercial).
  • Configurar DNS para o domínio e validar HTTPS.
  • Activar backups regulares da base de dados PostgreSQL.
  • Configurar rotação de logs (logrotate) para Mattermost e Nginx.

Operações / DevOps:

  • Monitorizar serviço systemd e métricas básicas (CPU, memória, disco).
  • Criar alertas para falhas do serviço ou uso excessivo de disco.
  • Planear atualizações do Mattermost e estrategias de deploy (blue/green, backups previos).

Segurança:

  • Restringir o acesso SSH (chaves, desativar root direto).
  • Habilitar firewall (ufw) com portas mínimas: 22, 80, 443.
  • Revisar políticas de TLS e ciphers.

Alternativas e quando não usar este método

  • Docker/Kubernetes: use conteinerização se precisar de isolamento, escalabilidade ou deployments automatizados.
  • MySQL: se já usa MySQL na sua infra, Mattermost suporta MySQL; escolha conforme competências da equipa.
  • Managed SaaS: se não quer gerir infra, considere Mattermost Cloud ou outras soluções SaaS.

Quando evitar esta instalação: em ambientes com requisitos rígidos de conformidade onde certificados autoassinados e configuração manual podem não ser aceitáveis. Para produção, prefira automação (Ansible/Terraform) e certificados CA.


Segurança e hardening recomendados

  1. Use certificados TLS de uma CA confiável.
  2. Desative protocolos TLS antigos (remova TLSv1 e TLSv1.1).
  3. Restrinja a chave privada: chmod 400 e acesso apenas a root.
  4. Atualize regularmente o Ubuntu e o Mattermost.
  5. Use backups offsite para a base de dados e para o diretório data/ do Mattermost.
  6. Considere colocar o PostgreSQL numa rede privada (VPC) e não expô-lo à Internet.

Procedimento de rollback básico

Se uma atualização falhar:

  1. Parar o serviço: systemctl stop mattermost
  2. Restaurar a base de dados PostgreSQL a partir do último backup verificado.
  3. Repor os ficheiros do diretório mattermost a partir da cópia de segurança.
  4. Reiniciar o serviço: systemctl start mattermost
  5. Verificar logs e permitir acesso apenas a admins até confirmar o estado estável.

Critérios de aceitação

  • O serviço systemd mattermost inicia automaticamente após reboot.
  • O domínio público redireciona para HTTPS e carrega a interface do Mattermost.
  • Um utilizador pode criar conta, criar equipa e enviar mensagens.
  • Backups da base de dados podem ser restaurados com sucesso num ambiente de teste.

Mini-glossário (1 linha cada)

  • Mattermost: plataforma de mensagens self-hosted compatível com Slack.
  • PostgreSQL: sistema de gestão de base de dados relacional usado aqui.
  • Nginx: servidor web e proxy reverso usado para TLS e encaminhamento.
  • systemd: gestor de serviços do Linux usado para iniciar e monitorizar o Mattermost.

Dicas de manutenção e atualização

  • Antes de atualizar o Mattermost em produção, leia a nota de versão oficial e faça backup completo.
  • Teste upgrades em ambiente de staging idêntico.
  • Automatize tarefas repetitivas com scripts ou uma ferramenta de configuração (Ansible, Chef).

Referências


Resumo final

Seguindo estes passos terá um Mattermost funcional por trás de um Nginx com TLS, usando PostgreSQL como armazenamento. Para produção, complemente com certificados válidos, backups e monitorização.

Autor
Edição

Materiais semelhantes

Corrigir Charging On Hold no iPhone
Bateria

Corrigir Charging On Hold no iPhone

Acordo Apple Siri: quem recebe e como reivindicar
Privacidade

Acordo Apple Siri: quem recebe e como reivindicar

Transformar foto de perfil do Facebook em GIF
Redes Sociais

Transformar foto de perfil do Facebook em GIF

Corrigir Erro Centipede em Destiny 2
Jogos

Corrigir Erro Centipede em Destiny 2

Como baixar imagens do Google Docs
Tutoriais

Como baixar imagens do Google Docs

Salvar Memories do Snapchat sem pagar
Redes Sociais

Salvar Memories do Snapchat sem pagar