Qué cambia en Rocket.Chat 9.0
La versión 8.8.0, publicada el 3 de septiembre de 2026, aún ejecuta LDAP y SAML en instancias Community, pero introduce advertencias explícitas en el panel de administración: a partir de la versión 9.0, estos dos módulos requerirán un módulo de licencia ldap-enterprise o saml-enterprise. Los registros del sistema ya advierten a los espacios de trabajo sin licencia que autentican usuarios mediante cualquiera de estos métodos.
En la práctica: si tu directorio empresarial (Active Directory, OpenLDAP) o tu proveedor de identidad (Okta, Azure AD, Keycloak) está conectado a tu Rocket.Chat Community actual, esa conexión dejará de funcionar al actualizar a la versión 9.0 sin una suscripción Premium. Para los equipos que han construido su flujo de trabajo alrededor de esta autenticación, la ventana de migración está abierta.
Por qué Mattermost Community es una alternativa sólida
- LDAP y SAML incluidos sin licencia — Mattermost distribuye la autenticación Active Directory y SAML en su edición de código abierto, bajo licencia MIT para el servidor (Apache 2.0 para contribuciones), sin requisito de plan de pago.
- PostgreSQL nativo — Mattermost se apoya en PostgreSQL, bien documentado, fácil de respaldar con
pg_dumpy más común que MongoDB en entornos Docker autoalojados. - mmetl, una herramienta oficial de migración — la herramienta
mmetldel equipo de Mattermost transforma unmongodumpde Rocket.Chat en un archivo de importación JSONL compatible conmmctl import, incluyendo canales, usuarios y mensajes. - Menor huella de memoria — Mattermost puede arrancar con 2 GB de RAM para equipos de menos de cincuenta usuarios; Rocket.Chat requiere un replica set de MongoDB que consume más a volumen equivalente.
- Aplicaciones oficiales de escritorio y móvil — los clientes iOS, Android, macOS y Windows apuntan a tu propio dominio desde la instalación.
- Historial y archivos adjuntos ilimitados — sin ventana deslizante, sin corte por volumen de mensajes, todo almacenado en tu disco o bucket S3.
Requisitos previos cuantificados
Antes de empezar, verifica que dispones de lo siguiente.
Para el servidor Mattermost: un VPS con 2 vCPU y 4 GB de RAM como mínimo — 2 GB son suficientes técnicamente para Mattermost solo, pero PostgreSQL corre en el mismo host durante la migración, lo que hace que 4 GB sean más cómodos. Planifica 40 GB de SSD como mínimo. Docker y Docker Compose deben estar instalados. Se necesitan una IPv4 dedicada y un subdominio chat.yourdomain.com con un registro A.
Para la migración: acceso SSH a tu servidor Rocket.Chat existente, herramientas mongodump instaladas en ese servidor, y mmetl v0.6.0 (publicado el 11 de septiembre de 2026). Un certificado TLS válido para el dominio destino.
Hacer copia de seguridad de Rocket.Chat
Poner Rocket.Chat en modo solo lectura
Antes de cualquier copia de seguridad, notifica a tus usuarios y pon la instancia en modo mantenimiento. En la administración de Rocket.Chat, ve a Administración → General → Modo mantenimiento y activa el modo de solo lectura.
Alternativamente, si no dispones de este modo, simplemente detén el contenedor de Rocket.Chat:
docker compose stop rocketchatExportar la base de datos MongoDB con mongodump
mmetl espera un directorio producido por
mongodump, no un archivo comprimido. Ejecuta el dump desde el host o desde dentro del contenedor MongoDB:# desde el host, si mongodump está instalado mongodump --uri="mongodb://localhost:27017/rocketchat" --out /tmp/rc-dump # o desde el contenedor Docker docker exec <mongo-container> mongodump \ --db rocketchat --out /dump docker cp <mongo-container>:/dump /tmp/rc-dumpVerifica que
/tmp/rc-dump/rocketchat/contiene archivos.bsony.jsonpara las coleccionesrocketchat_message,users,rocketchat_room, etc.Exportar los archivos adjuntos (uploads)
Los archivos adjuntos almacenados en GridFS o en el sistema de archivos local no forman parte del dump de MongoDB — deben copiarse por separado.
Si utilizas almacenamiento local (opción predeterminada):
docker cp <rocketchat-container>:/app/uploads /tmp/rc-uploadsSi utilizas un bucket S3 compatible, anota los parámetros de conexión — los reconfigura-rás en Mattermost.
Exportar usuarios via REST API (opcional)
Para un inventario de cuentas antes de la migración, la API de Rocket.Chat permite exportar la lista de usuarios activos:
curl -H "X-Auth-Token: <token>" \ -H "X-User-Id: <admin-id>" \ "https://chat.yourdomain.com/api/v1/users.list?count=200" \ | python3 -c "import sys,json; [print(u['username'], u.get('emails',[{}])[0].get('address','')) for u in json.load(sys.stdin)['users']]"Conserva esta lista para verificar que todas las cuentas se han creado correctamente en Mattermost tras la importación masiva.
Instalar Mattermost en tu VPS
Obtener la configuración oficial de Docker Compose
El equipo de Mattermost mantiene un repositorio
dockercon una configuración Compose lista para usar:git clone https://github.com/mattermost/docker /opt/mattermost cd /opt/mattermost cp env.example .envAbre
.envy rellena como mínimo:DOMAIN=chat.yourdomain.com MM_SERVICESETTINGS_SITEURL=https://chat.yourdomain.com POSTGRES_USER=mmuser POSTGRES_PASSWORD=<contraseña-segura> POSTGRES_DB=mattermostCrear los volúmenes y arrancar el stack
Crea los directorios de volúmenes antes del primer arranque:
mkdir -p ./volumes/app/mattermost/{config,data,logs,plugins,client/plugins,bleve-indexes} sudo chown -R 2000:2000 ./volumes/app/mattermostArrancar el stack completo (Mattermost + PostgreSQL + nginx con certificado Let's Encrypt integrado):
docker compose -f docker-compose.yml -f docker-compose.nginx.yml up -dEspera a que el contenedor de Mattermost esté
healthyantes de continuar.Crear la cuenta de administrador
Abre
https://chat.yourdomain.comen tu navegador. En el primer acceso, Mattermost solicita la creación de una cuenta de administrador. Introduce el correo electrónico, el nombre de usuario y la contraseña del administrador inicial — esta cuenta será independiente de las cuentas importadas desde Rocket.Chat.
Migrar el historial y los usuarios con mmetl
Instalar mmetl
Descarga el binario de mmetl v0.6.0 (publicado el 11 de septiembre de 2026) desde las releases de GitHub:
curl -L https://github.com/mattermost/mmetl/releases/download/v0.6.0/mmetl-linux-amd64 \ -o /usr/local/bin/mmetl chmod +x /usr/local/bin/mmetl mmetl versionCambio importante en v0.6.0: el subcomando
mmetl checkha sido eliminado. Usammetl transform ... --dry-runpara validar el dump antes de producir el archivo de importación.Transformar el dump de Rocket.Chat en un archivo de importación de Mattermost
Ejecuta la transformación apuntando al directorio que contiene las colecciones BSON exportadas (la subcarpeta
rocketchatdel dump) y el nombre del equipo de Mattermost destino:mmetl transform rocketchat \ --team mi-equipo \ --dump-dir /tmp/rc-dump/rocketchat \ --output /tmp/mattermost-importmmetl genera un archivo
import.jsonly un directoriobulk-export-attachments/. Para probar sin generar salida:mmetl transform rocketchat \ --team mi-equipo \ --dump-dir /tmp/rc-dump/rocketchat \ --dry-runEjecutar la importación en Mattermost via mmctl
Copia el archivo de importación en el directorio de datos de Mattermost, luego ejecuta la importación masiva:
# copiar al contenedor docker cp /tmp/mattermost-import/import.jsonl \ <mattermost-container>:/mattermost/data/import.jsonl # ejecutar la importación desde mmctl (dentro del contenedor) docker exec <mattermost-container> mmctl import bulk \ /mattermost/data/import.jsonl --bypass-uploadPara seguir el progreso, consulta los trabajos de importación en System Console → Bulk Import.
Verificar resultados y limitaciones conocidas
Después de la importación, verifica los siguientes puntos:
- Los canales públicos y privados deben estar presentes en Mattermost con su historial.
- Los nombres de usuario se importan pero las contraseñas no — cada usuario debe restablecer su contraseña o iniciar sesión via LDAP si el directorio está configurado.
- Los archivos adjuntos requieren un segundo paso con--attachments-dir.
- Los hilos de discusión (respuestas anidadas) se aplanan si la estructura no es reconocida.
Configurar LDAP en Mattermost Community
Activar LDAP en la System Console
En System Console → Authentication → AD/LDAP, activa LDAP y rellena los parámetros de conexión:
LDAP Server: ldap.yourdomain.com (o la IP de tu controlador de dominio) Port: 389 (LDAP) o 636 (LDAPS) Bind Username: cn=mattermost-svc,ou=serviceaccounts,dc=yourdomain,dc=com Bind Password: <contraseña-de-la-cuenta-de-servicio> Base DN: ou=users,dc=yourdomain,dc=comActiva LDAP over TLS (LDAPS) o StartTLS si tu infraestructura lo permite.
Configurar los mapeos de atributos
Mattermost lee atributos LDAP para completar los perfiles. Mapeos comunes para Active Directory:
ID Attribute: objectGUID Username Attribute: sAMAccountName Email Attribute: mail First Name: givenName Last Name: snPara OpenLDAP, sustituye
sAMAccountNameporuidyobjectGUIDporentryUUID.En User Filter, restringe la sincronización a los miembros del grupo deseado:
(memberOf=cn=mattermost-users,ou=groups,dc=yourdomain,dc=com)Probar la conexión y sincronizar
Haz clic en AD/LDAP Test en la parte inferior de la página para validar la conexión y el bind. Si obtienes
LDAP Result Code 49 'Invalid Credentials', verifica el DN de la cuenta de servicio y su contraseña.Dispara una primera sincronización manual a través de AD/LDAP Synchronize Now. Los usuarios cuyo atributo de correo coincida con una cuenta ya importada via mmetl se vincularán automáticamente.
Plan de transición: mantén Rocket.Chat en solo lectura durante la migración
No cortes Rocket.Chat antes de validar la importación de Mattermost en condiciones reales. La estrategia recomendada es ejecutar ambas instancias en paralelo durante 48 a 72 horas:
1. Activa el modo mantenimiento / solo lectura en Rocket.Chat en cuanto el dump esté listo.
2. Configura Mattermost en un subdominio separado (chat-new.yourdomain.com) durante la validación.
3. Invita a un grupo piloto (5 a 10 personas) a usar Mattermost y reportar canales o mensajes que falten.
4. Una vez validado, cambia el DNS de chat.yourdomain.com al nuevo VPS de Mattermost.
5. Mantén la instancia de Rocket.Chat en solo lectura otros 30 días para que los usuarios puedan recuperar los enlaces compartidos anteriormente.
Resolución de problemas comunes
mmetl: unexpected end of JSON input — el directorio pasado a --dump-dir debe ser la subcarpeta rocketchat/ que contiene los archivos .bson, no el directorio padre del dump. Comprueba con ls /tmp/rc-dump/rocketchat/*.bson.
Importación parcial, canales ausentes — mmetl omite los canales privados cuyo propietario no se encuentra en la colección users. Verifica que los usuarios afectados están presentes en el dump.
Fallo de bind LDAP (código 49) — la causa más frecuente es un DN mal formado para la cuenta de servicio. Prueba la conexión desde el VPS con ldapsearch antes de configurar Mattermost.
Conexiones WebSocket inestables — si Mattermost muestra desconexiones frecuentes, verifica que tu proxy inverso transmite correctamente las cabeceras Upgrade y Connection.
Archivos adjuntos ausentes — ejecutar mmctl import bulk sin --attachments-dir crea los mensajes pero deja los archivos adjuntos en error. Vuelve a ejecutar con el directorio bulk-export-attachments/ producido por mmetl.
Rocket.Chat Community 9.0 vs Mattermost Community
Desplace la tabla
| Criterio | Rocket.Chat Community 9.0 | Mattermost Community |
|---|---|---|
| LDAP / Active Directory | Premium (desde 9.0) | Incluido sin restricción |
| SAML SSO | Premium (desde 9.0) | Incluido sin restricción |
| Base de datos | MongoDB (replica set requerido) | PostgreSQL |
| RAM mínima | 4 GB (MongoDB replica set) | 2 GB (equipo < 50 usuarios) |
| Licencia | AGPL-3.0 | MIT (servidor) / Apache 2.0 |
| Herramienta de migración | Exportación JSON/CSV nativa | mmetl + mmctl bulk import |
| Historial ilimitado | Sí | Sí |
| Omnicanal (livechat, email) | Sí (nativo) | Limitado (extensiones) |
Mattermost Community, una plataforma estable a largo plazo
Migrar de Rocket.Chat a Mattermost es una decisión estructural, no un workaround. Al situar la autenticación LDAP y SAML detrás de una licencia de pago, Rocket.Chat señala hacia dónde va su modelo de negocio — lo cual es su derecho. Mattermost ha tomado la decisión opuesta manteniendo estas características en su edición de código abierto, incluso para organizaciones sin presupuesto de suscripción.
En un VPS con PostgreSQL, Mattermost ofrece una base predecible: las copias de seguridad son simples operaciones pg_dump, las actualizaciones pasan por Docker Compose, y la API REST documentada permite integrar las herramientas de tu infraestructura — CI, monitorización, alertas — sin restricciones de plan. El historial de comunicación de tu equipo permanece en tu disco, exportable y auditable en cualquier momento.
Ver también: guía de instalación de Mattermost en VPS, comparativa Mattermost vs Rocket.Chat 2026 y alojar Rocket.Chat en VPS.