Instalar 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
- Instalar e configurar PostgreSQL
- Instalar Mattermost como utilizador dedicado
- Criar e ativar um serviço systemd para Mattermost
- Instalar e configurar Nginx como proxy reverso com TLS
- 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.
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.
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
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.
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
- Use certificados TLS de uma CA confiável.
- Desative protocolos TLS antigos (remova TLSv1 e TLSv1.1).
- Restrinja a chave privada: chmod 400 e acesso apenas a root.
- Atualize regularmente o Ubuntu e o Mattermost.
- Use backups offsite para a base de dados e para o diretório
data/
do Mattermost. - Considere colocar o PostgreSQL numa rede privada (VPC) e não expô-lo à Internet.
Procedimento de rollback básico
Se uma atualização falhar:
- Parar o serviço:
systemctl stop mattermost
- Restaurar a base de dados PostgreSQL a partir do último backup verificado.
- Repor os ficheiros do diretório
mattermost
a partir da cópia de segurança. - Reiniciar o serviço:
systemctl start mattermost
- 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
- https://docs.mattermost.com/install/prod-ubuntu.html
- https://docs.mattermost.com/install/prod-debian.html
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.
Materiais semelhantes

Corrigir Charging On Hold no iPhone

Acordo Apple Siri: quem recebe e como reivindicar

Transformar foto de perfil do Facebook em GIF

Corrigir Erro Centipede em Destiny 2

Como baixar imagens do Google Docs
