Mattermost Docker Compose: Chat de Equipo Self-Hosted 2025

Mattermost Docker Compose - Chat de equipo self-hosted

Mattermost Docker Compose es la forma más directa de tener un chat de equipo tipo Slack en tu propio servidor, sin depender de SaaS ni costes por usuario. En esta guía aprenderás a desplegar Mattermost con Docker Compose de manera estable, con PostgreSQL, volúmenes persistentes y opción de SSL con NGINX, listo para equipos pequeños o homelabs. Si quieres más servicios self-hosted, revisa nuestra categoría Docker Compose.

¿Qué es Mattermost?

Mattermost es una plataforma de mensajería y colaboración open source, pensada para equipos y empresas. Ofrece canales públicos y privados, hilos de conversación, búsqueda full-text, integraciones vía webhooks y API, y despliegue on-premise o en tu propia infraestructura. La documentación oficial de Mattermost recomienda Docker para entornos Linux; en macOS y Windows el uso con Docker está orientado a pruebas y desarrollo.

El proyecto está respaldado por Mattermost Inc. y el código está disponible en GitHub con decenas de miles de estrellas. Incluye edición Team (gratuita) y Enterprise (funciones avanzadas). Para la mayoría de usuarios, la edición Team es suficiente: canales, mensajes, archivos, búsqueda con Bleve y aplicaciones móviles. Desplegar con mattermost docker compose te permite tener todo esto en tu servidor en minutos, sin costes por usuario ni dependencia de terceros.

Arquitectura de Mattermost Docker Compose

Un despliegue típico de mattermost docker compose usa dos contenedores principales: PostgreSQL para la base de datos y Mattermost para la aplicación. Opcionalmente se añade un tercer contenedor con NGINX como proxy inverso y terminación SSL. El repositorio oficial mattermost/docker proporciona los archivos docker-compose.yml y plantillas de variables de entorno.

Los volúmenes persisten configuración, datos, logs, plugins e índices de búsqueda Bleve. Mattermost recomienda usar mem_limit en lugar de pids_limit para no limitar las conexiones de PostgreSQL. Para más detalles de dimensionamiento, la guía de escalado empresarial de Mattermost indica requisitos según número de usuarios. Un stack típico de mattermost docker compose incluye solo estos dos servicios más, opcionalmente, NGINX para HTTPS.

Requisitos previos

  • Servidor Linux (Docker oficialmente soportado solo en Linux para producción).
  • Docker Engine y Docker Compose 1.28 o superior.
  • Mínimo 2 GB RAM para equipos pequeños; 4–8 GB recomendados para más usuarios.
  • Dominio o hostname para configurar la URL del sitio (y certificados si usas NGINX).

Instalar Mattermost Docker Compose paso a paso

Clona el repositorio oficial y entra en el directorio:

git clone https://github.com/mattermost/docker
cd docker

Crea el archivo de entorno a partir del ejemplo y edita al menos DOMAIN (y, en producción, contraseñas y MM_SUPPORTSETTINGS_SUPPORTEMAIL):

cp env.example .env
# Editar .env: DOMAIN=chat.tudominio.com, POSTGRES_PASSWORD, etc.

Crea los directorios que usa Mattermost y asigna permisos al UID 2000:

mkdir -p ./volumes/app/mattermost/{config,data,logs,plugins,client/plugins,bleve-indexes}
sudo chown -R 2000:2000 ./volumes/app/mattermost

Para levantar solo la aplicación y la base de datos (sin NGINX), por ejemplo detrás de un proxy inverso externo como Caddy o Traefik:

docker compose -f docker-compose.yml -f docker-compose.without-nginx.yml up -d

Accede a http://TU_SERVIDOR:8065 y completa el asistente de configuración inicial. La primera vez que ejecutes mattermost docker compose con up -d, se crearán las tablas en PostgreSQL y el sistema te pedirá crear el primer usuario administrador. Si usas el NGINX incluido con SSL, configura antes certificado y clave en .env (CERT_PATH, KEY_PATH) y arranca con:

docker compose -f docker-compose.yml -f docker-compose.nginx.yml up -d

Ejemplo de docker-compose.yml para Mattermost Docker Compose

El siguiente fragmento refleja la estructura del repositorio oficial mattermost/docker. En la práctica, usa el docker-compose.yml del repo y el env.example copiado a .env para no mantener dos versiones. Aquí se muestra la idea de servicios y volúmenes:

# Basado en https://github.com/mattermost/docker
services:
  postgres:
    image: postgres:18-alpine
    restart: unless-stopped
    environment:
      POSTGRES_USER: mmuser
      POSTGRES_PASSWORD: cambia_esta_password
      POSTGRES_DB: mattermost
    volumes:
      - postgres_data:/var/lib/postgresql/data

  mattermost:
    depends_on:
      - postgres
    image: mattermost/mattermost-team-edition:10.11.8
    restart: unless-stopped
    environment:
      MM_SQLSETTINGS_DRIVERNAME: postgres
      MM_SQLSETTINGS_DATASOURCE: postgres://mmuser:cambia_esta_password@postgres:5432/mattermost?sslmode=disable
      MM_SERVICESETTINGS_SITEURL: https://chat.tudominio.com
      MM_BLEVESETTINGS_INDEXDIR: /mattermost/bleve-indexes
    volumes:
      - mattermost_config:/mattermost/config
      - mattermost_data:/mattermost/data
      - mattermost_logs:/mattermost/logs
      - mattermost_plugins:/mattermost/plugins
      - mattermost_bleve:/mattermost/bleve-indexes
    ports:
      - "8065:8065"

volumes:
  postgres_data:
  mattermost_config:
  mattermost_data:
  mattermost_logs:
  mattermost_plugins:
  mattermost_bleve:

Ajusta contraseñas y MM_SERVICESETTINGS_SITEURL a tu dominio. Para producción, conviene usar el repo completo con .env y, si aplica, los archivos docker-compose.nginx.yml para HTTPS. Las imágenes oficiales están en Docker Hub (mattermost-team-edition) y mattermost-enterprise-edition.

Configurar Mattermost Docker Compose con SSL

Si usas el NGINX incluido en el repo, puedes generar un certificado con el script de ejemplo o usar certificados existentes. Para Let’s Encrypt con el script del propio repo:

bash scripts/issue-certificate.sh -d chat.tudominio.com -o ${PWD}/certs

Luego en .env descomenta y ajusta:

CERT_PATH=./certs/etc/letsencrypt/live/TU_DOMINIO/fullchain.pem
KEY_PATH=./certs/etc/letsencrypt/live/TU_DOMINIO/privkey.pem

Si ya tienes Caddy, Traefik o Nginx Proxy Manager delante, suele ser más simple exponer solo el puerto 8065 de Mattermost y dejar que el proxy externo gestione HTTPS. En ese caso despliega con docker-compose.without-nginx.yml y configura la URL pública en MM_SERVICESETTINGS_SITEURL.

Gestión y optimización

Para actualizar la aplicación, cambia MATTERMOST_IMAGE_TAG en .env a la versión deseada (por ejemplo 10.11.8), haz docker compose pull y reinicia los contenedores. La documentación recomienda etiquetas específicas en producción, no genéricas como release-10. Los backups críticos son el volumen de PostgreSQL y los volúmenes de config y data de Mattermost.

Para alta disponibilidad con varios nodos, Mattermost recomienda Kubernetes en lugar de Docker; con Docker no hay failover automático ni almacenamiento compartido. Para un solo nodo o homelab, un despliegue mattermost docker compose es estable y fácil de mantener. Puedes combinar esta aplicación con otros servicios self-hosted (por ejemplo un reverse proxy o un gestor de contraseñas) usando la misma red Docker o exponiendo solo el puerto necesario.

Troubleshooting Mattermost Docker Compose

Si el contenedor de Mattermost no arranca, revisa que PostgreSQL esté levantado y que MM_SQLSETTINGS_DATASOURCE coincida con usuario, contraseña y base del servicio postgres. En máquinas con poca memoria, reduce mem_limit con cuidado para no provocar fallos en la base de datos. Si cambias contraseñas en .env, reinicia ambos servicios. En entornos con permisos estrictos (por ejemplo M1 Mac en desarrollo), a veces se omite el chown 2000:2000 si da problemas; en producción Linux es recomendable mantenerlo. La documentación oficial incluye una sección de resolución de problemas con Docker específica para mattermost docker compose.

FAQ sobre Mattermost Docker Compose

¿Puedo usar Mattermost Docker Compose en producción?
Sí, en Linux. Mattermost soporta oficialmente Docker en Linux para producción. Para HA con varios nodos recomiendan Kubernetes.

¿Qué diferencia hay entre Team Edition y Enterprise Edition?
Team Edition es gratuita e incluye canales, mensajes, búsqueda, apps y plugins. Enterprise añade funciones avanzadas de compliance, auditoría y soporte comercial. La mayoría de equipos pequeños pueden usar Team Edition.

¿Cuánta RAM necesita Mattermost Docker Compose?
Para equipos de hasta ~100 usuarios suelen bastar 2 GB; para más carga se recomiendan 4–8 GB. Ajusta mem_limit de PostgreSQL y Mattermost según la guía de escalado oficial.

¿Puedo poner Mattermost detrás de otro proxy inverso?
Sí. Despliega con docker-compose.without-nginx.yml, expón el puerto 8065 y configura en tu proxy (Caddy, Traefik, Nginx Proxy Manager) el dominio y SSL. Define MM_SERVICESETTINGS_SITEURL con la URL pública HTTPS.

¿Cómo actualizo Mattermost?
Cambia MATTERMOST_IMAGE_TAG en .env a la nueva versión, ejecuta docker compose pull y docker compose up -d. Revisa las notas de la versión por cambios de configuración o esquema de base de datos. Con el repositorio oficial de mattermost docker compose, un git pull y actualizar la etiqueta de imagen suele ser suficiente para upgrades menores.

Con mattermost docker compose tienes un chat de equipo self-hosted, control total de los datos y una base sólida para crecer. Si quieres ampliar tu homelab con más servicios en contenedores, echa un vistazo al resto de guías de nuestra categoría Docker Compose.

Avatar

Por Mid

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x