Español
Empezar

← Todas las plantillas · Redes y comunidad

Despliega Mattermost en un clic

Chat de equipo de código abierto con canales, hilos, intercambio de archivos e integraciones

Una alternativa autoalojada a Slack y Microsoft Teams.

¿Qué es Mattermost?

Mattermost es una plataforma de colaboración de código abierto para el chat de equipo: canales públicos y privados, mensajes directos y de grupo, hilos, intercambio de archivos, búsqueda, Markdown y emojis personalizados, en más de 20 idiomas. Webhooks, comandos de barra, bots, plugins y una API lo conectan con otras herramientas, con integraciones para Jira, GitHub y GitLab. Las apps para Windows, macOS, Linux, iOS y Android se conectan a su dirección.

Esta plantilla ejecuta Mattermost Team Edition, la versión gratuita bajo la licencia MIT, con PostgreSQL, y crea el Administrador del Sistema con los datos de los campos antes de que la página responda a nadie. Team Edition está pensada para equipos pequeños: admite hasta 250 usuarios activos y no tiene inicio de sesión único, cuentas de huésped ni llamadas grupales, que están en los planes de pago. El inconveniente: las notificaciones push a las apps del teléfono pasan por el Test Push Notification Service gratuito de Mattermost, que Mattermost no recomienda para producción.

Hosting de Mattermost en Pethost

  1. Inicias sesión en Pethost con una passkey, GitHub o Google. ¿Aún no tienes máquina? Eliges un plan, y el enlace espera hasta que esté lista.
  2. Nuevo proyecto se abre en Mattermost. Rellenas lo que pide y haces clic en Crear proyecto: Correo electrónico, Nombre de usuario, Contraseña de administrador.
  3. En un par de minutos Mattermost está en marcha en su propia dirección con HTTPS. Sus secretos se generan al azar, y sus datos entran en el backup de cada noche.
  4. Es un proyecto como cualquier otro: tú o tu agente lo pueden cambiar, volver a una versión anterior o restaurar.

Preguntas sobre Mattermost

¿Mattermost es gratis?

Sí. Mattermost Team Edition es gratis, se compila bajo la licencia MIT a partir de código abierto y conserva todo el historial de mensajes. Está pensada para equipos de menos de 250 usuarios activos; los planes de pago agregan SSO, cuentas de huésped, llamadas grupales y funciones de cumplimiento normativo.

¿Mattermost o Slack?

Los dos tienen canales, hilos, mensajes directos e integraciones. Slack solo funciona en los servidores de Slack, mientras que Mattermost funciona donde lo despliegues, y sus webhooks de entrada aceptan el formato de Slack, así que muchas integraciones de Slack funcionan sin cambios.

¿Puedo pasar de Slack a Mattermost?

Sí. Las herramientas de migración de Mattermost, mmetl y mmctl import, traen usuarios, canales, historial de mensajes, mensajes directos, hilos y archivos desde una exportación de Slack. Los comandos de barra no se pasan.

¿Mattermost tiene apps móviles?

Sí, para iOS y Android, y apps de escritorio para Windows, macOS y Linux. Con Team Edition, las notificaciones push pasan por el Test Push Notification Service de Mattermost, que es gratis pero no ofrece garantías.

¿Cuántos usuarios admite Mattermost Team Edition?

Hasta 250 usuarios activos: avisa al llegar a 200, y a los 250 se niega a crear o activar más. Un equipo que lo supera pasa a un plan de pago.

¿Las llamadas de Mattermost funcionan con esta plantilla?

Tal como está, no. Las llamadas envían su audio y su video por el puerto 8443, que esta plantilla no publica; el chat de texto, los archivos y las integraciones funcionan por completo.

¿Cuánta memoria y disco necesita Mattermost?

Mattermost ocupa unos 300 MB de memoria con Postgres para un equipo pequeño, y su base de datos y sus archivos crecen con los mensajes y lo que se sube. En Pethost le basta el plan Starter, y queda sitio para otras apps a su lado.

El archivo Docker Compose de Mattermost

La plantilla es este compose.yaml y las variables que se escriben en el .env del proyecto al crearlo. Pethost ejecuta el archivo tal como está escrito.

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

Volúmenes, en el backup de cada noche: 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:

Más en Redes y comunidad