---
title: "Mattermost con Docker Compose y hosting en un clic"
description: "Mattermost es un chat de equipo de código abierto con canales, hilos e integraciones. Autoaloja Mattermost Team Edition, alternativa a Slack, en un clic."
---

[← Todas las plantillas](https://pethost.dev/es/templates/) · [Redes y comunidad](https://pethost.dev/es/templates/community/)

# 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.

[Desplegar en Pethost](https://console.pethost.dev/?template=mattermost)

## ¿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:
```

[compose.yaml](https://pethost.dev/templates/mattermost/compose.yaml)[Verla en GitHub](https://github.com/pethost-dev/templates/tree/main/mattermost)

## [Más en Redes y comunidad](https://pethost.dev/es/templates/community/)

- [**listmonk**Un administrador de newsletters y listas de correo](https://pethost.dev/es/templates/listmonk/)
- [**Lemmy**Un agregador de enlaces y foro para el fediverso](https://pethost.dev/es/templates/lemmy/)
- [**NodeBB**Un foro para tu comunidad](https://pethost.dev/es/templates/nodebb/)
- [**Apache Answer**Preguntas y respuestas para una comunidad, un centro de ayuda o un equipo, tu propio Stack Overflow](https://pethost.dev/es/templates/apache-answer/)
- [**Mastodon**Tu propio servidor en el fediverso: publicaciones, seguidores y respuestas más allá de Mastodon](https://pethost.dev/es/templates/mastodon/)
- [**Pixelfed**Comparte fotos sin anuncios ni algoritmos, una alternativa a Instagram que se federa con Mastodon](https://pethost.dev/es/templates/pixelfed/)

Pethost · Stephan Gomer · NIP 1133096755

Pethost

- [Plantillas](https://pethost.dev/es/templates/)
- [Sobre nosotros](https://pethost.dev/about/)
- [Docs](https://pethost.dev/docs/)
- [Blog](https://pethost.dev/es/blog/)
- [API](https://pethost.dev/docs/api/)
- [CLI](https://pethost.dev/docs/cli/)
- [Plugin](https://github.com/pethost-dev/plugin)
- [Términos](https://pethost.dev/terms/)
- [Privacidad](https://pethost.dev/privacy/)
- [Reembolsos](https://pethost.dev/refunds/)
- [support@pethost.dev](mailto:support@pethost.dev)

Bases de datos

- [Postgres](https://pethost.dev/es/postgres/)

Comparativas

- [Coolify vs Dokploy vs CapRover vs Dokku](https://pethost.dev/es/blog/coolify-vs-dokploy-vs-caprover-vs-dokku/)
- [Coolify Cloud vs Dokploy Cloud](https://pethost.dev/es/blog/coolify-cloud-vs-dokploy-cloud/)
- [Precios de Railway vs Render vs Fly.io](https://pethost.dev/es/blog/railway-vs-render-vs-fly-io-pricing/)
- [Hosting gestionado para Docker Compose](https://pethost.dev/es/blog/managed-docker-compose-hosting/)

Alternativas

- [Alternativas a Railway](https://pethost.dev/es/blog/railway-alternatives/)
- [Alternativas a Heroku](https://pethost.dev/es/blog/heroku-alternatives/)
- [Alternativas a Dokploy](https://pethost.dev/es/blog/dokploy-alternatives/)
- [Alternativas a Coolify](https://pethost.dev/es/blog/coolify-alternatives/)
- [Alternativas a Render](https://pethost.dev/es/blog/render-alternatives/)
- [Alternativas a Sliplane](https://pethost.dev/es/blog/sliplane-alternatives/)
