Português
Começar

← Todos os templates · Social e comunidade

Faça deploy de Mattermost em um clique

Chat de equipe de código aberto com canais, tópicos, compartilhamento de arquivos e integrações

Uma alternativa auto-hospedada para Slack e Microsoft Teams.

O que é Mattermost?

O Mattermost é uma plataforma de colaboração de código aberto para chat de equipe: canais públicos e privados, mensagens diretas e em grupo, tópicos, compartilhamento de arquivos, busca, Markdown e emoji personalizado, em mais de 20 idiomas. Webhooks, comandos slash, bots, plugins e uma API o conectam a outras ferramentas, com integrações para Jira, GitHub e GitLab. Apps para Windows, macOS, Linux, iOS e Android se conectam ao endereço dele.

Este template roda o Mattermost Team Edition, a versão gratuita compilada sob a licença MIT, com PostgreSQL, e cria o Administrador do Sistema a partir dos campos antes de a página responder a qualquer pessoa. O Team Edition é feito para equipes pequenas: aceita até 250 usuários ativos e não tem login único, contas de convidados nem chamadas em grupo, que ficam nos planos pagos. O porém: as notificações push para os apps de celular passam pelo Test Push Notification Service do Mattermost, gratuito, que o próprio Mattermost não recomenda para produção.

Hospedagem de Mattermost no Pethost

  1. Você entra no Pethost com uma passkey, GitHub ou Google. Ainda não tem máquina? Você escolhe um plano, e o link espera até ela ficar pronta.
  2. Novo projeto abre em Mattermost. Você preenche o que ele pede e clica em Criar projeto: E-mail, Usuário, Senha do administrador.
  3. Em um ou dois minutos Mattermost está no ar no próprio endereço com HTTPS. Os segredos são gerados ao acaso, e os dados vão para o backup noturno.
  4. É um projeto como qualquer outro: você ou seu agente podem alterá-lo, fazer rollback ou restaurá-lo.

Perguntas sobre Mattermost

O Mattermost é gratuito?

Sim. O Mattermost Team Edition é gratuito, compilado sob a licença MIT a partir de código aberto, e guarda todo o histórico de mensagens. Ele é feito para equipes com menos de 250 usuários ativos; os planos pagos adicionam SSO, contas de convidados, chamadas em grupo e recursos de conformidade.

Mattermost ou Slack?

Os dois têm canais, tópicos, mensagens diretas e integrações. O Slack roda só nos servidores do Slack, enquanto o Mattermost roda onde você fizer o deploy dele, e os webhooks de entrada dele aceitam o formato do Slack, então muitas integrações do Slack funcionam sem mudança.

Posso migrar do Slack para o Mattermost?

Sim. As ferramentas de migração do Mattermost, mmetl e mmctl import, trazem usuários, canais, histórico de mensagens, mensagens diretas, tópicos e arquivos de uma exportação do Slack. Os comandos slash não vêm junto.

O Mattermost tem apps para celular?

Sim, para iOS e Android, e apps de desktop para Windows, macOS e Linux. Com o Team Edition, as notificações push passam pelo Test Push Notification Service do Mattermost, que é gratuito, mas não oferece garantias.

Quantos usuários o Mattermost Team Edition aceita?

Até 250 usuários ativos: ele avisa aos 200 e, aos 250, se recusa a criar ou ativar mais. Uma equipe que passa disso migra para um plano pago.

As chamadas do Mattermost funcionam com este template?

Do jeito que está, não. As chamadas enviam áudio e vídeo pela porta 8443, que este template não publica; o chat de texto, os arquivos e as integrações funcionam por completo.

De quanta memória e disco Mattermost precisa?

Mattermost usa cerca de 300 MB de memória com o Postgres para uma equipe pequena, e o banco de dados e os arquivos crescem com as mensagens e os uploads. No Pethost, o plano Starter basta, com espaço para outros apps ao lado.

Arquivo Docker Compose de Mattermost

O template é este compose.yaml e as variáveis gravadas no .env do projeto quando ele é criado. O Pethost roda o arquivo exatamente como está escrito.

Containers: proxy (caddy:2.11-alpine), mattermost (mattermost/mattermost-team-edition:12.0), postgres (postgres:17-alpine).

Volumes, no backup noturno: config, data, logs, plugins, client-plugins, db.

services:
  # A new Mattermost makes whoever signs up first its System Admin. So the page is served through
  # this small Caddy, which answers only once the administrator exists: at its start it waits for
  # Mattermost, and while Mattermost says it has no accounts, it signs the administrator up with
  # the email, username and password given, as that first account. A refusal stops it, says so in
  # its log, and is tried again at its next start.
  proxy:
    image: caddy:2.11-alpine
    restart: unless-stopped
    environment:
      ADMIN_EMAIL: ${ADMIN_EMAIL}
      ADMIN_USERNAME: ${ADMIN_USERNAME}
      ADMIN_PASSWORD: ${ADMIN_PASSWORD}
    command:
      - sh
      - -c
      - |
        set -e
        mattermost=http://mattermost:8065
        echo "waiting for Mattermost"
        until client=$$(wget -qO- "$$mattermost/api/v4/config/client?format=old" 2>/dev/null); do sleep 2; done
        case "$$client" in
          *'"NoAccounts":"true"'*)
            json() { printf '%s' "$$1" | sed 's/\\/\\\\/g; s/"/\\"/g'; }
            body=$$(printf '{"email":"%s","username":"%s","password":"%s"}' \
              "$$(json "$$ADMIN_EMAIL")" "$$(json "$$ADMIN_USERNAME")" "$$(json "$$ADMIN_PASSWORD")")
            if ! wget -qO /dev/null --header 'Content-Type: application/json' --post-data "$$body" "$$mattermost/api/v4/users"; then
              echo "Mattermost refused the administrator: an email address, a username of letters, digits, dots, dashes and underscores, and a password of 8 characters at least are what it takes" >&2
              exit 1
            fi
            echo "the administrator $$ADMIN_USERNAME is made"
            ;;
        esac
        exec caddy run --config /etc/caddy/Caddyfile --adapter caddyfile
    configs:
      - source: caddy
        target: /etc/caddy/Caddyfile
    # The image's own directories, which a proxy without certificates does not use.
    tmpfs:
      - /config
      - /data
    depends_on:
      - mattermost

  mattermost:
    image: mattermost/mattermost-team-edition:12.0
    restart: unless-stopped
    environment:
      MM_SQLSETTINGS_DRIVERNAME: postgres
      MM_SQLSETTINGS_DATASOURCE: postgres://mattermost:${POSTGRES_PASSWORD}@postgres:5432/mattermost?sslmode=disable&connect_timeout=10
      MM_SERVICESETTINGS_SITEURL: ${URL}
      # Only the proxy reaches Mattermost, and it says who the client is.
      MM_SERVICESETTINGS_TRUSTEDPROXYIPHEADER: X-Forwarded-For
    volumes:
      - config:/mattermost/config
      - data:/mattermost/data
      - logs:/mattermost/logs
      - plugins:/mattermost/plugins
      - client-plugins:/mattermost/client/plugins
    depends_on:
      postgres:
        condition: service_healthy

  postgres:
    image: postgres:17-alpine
    restart: unless-stopped
    environment:
      POSTGRES_DB: mattermost
      POSTGRES_USER: mattermost
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
    volumes:
      - db:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -h 127.0.0.1 -U mattermost -d mattermost"]
      interval: 5s
      timeout: 5s
      retries: 10
      start_period: 30s

configs:
  caddy:
    content: |
      {
        admin off
        auto_https off
      }

      :8065 {
        reverse_proxy mattermost:8065
      }

volumes:
  config:
  data:
  logs:
  plugins:
  client-plugins:
  db:

Mais em Social e comunidade