Guía de despliegue

Migrar Rocket.Chat a Mattermost en un VPS

Desplegar en un VPS Cloud →

Tutorial

Migrar Rocket.Chat a Mattermost en un VPS

Autoalojamiento11 min de lectura14 pasos

Las notas de la versión 8.8.0 publicadas el 3 de septiembre de 2026 anunciaron oficialmente que LDAP y SAML pasarán a ser características exclusivas del plan Premium a partir de la versión 9.0. Si administras una instancia Community autoalojada con autenticación empresarial, la ventana de migración está abierta. Esta guía cubre la copia de seguridad de tu Rocket.Chat existente, la instalación de Mattermost en tu VPS, la migración del historial y los usuarios con mmetl, y la configuración de LDAP en Mattermost Community — que lo incluye sin restricción de plan.

Contenido· Qué cambia en Rocket.Chat 9.01/11
  1. 01Qué cambia en Rocket.Chat 9.0
  2. 02Por qué Mattermost Community es una alternativa sólida
  3. 03Requisitos previos cuantificados
  4. 04Hacer copia de seguridad de Rocket.Chat
  5. 05Instalar Mattermost en tu VPS
  6. 06Migrar el historial y los usuarios con mmetl
  7. 07Configurar LDAP en Mattermost Community
  8. 08Plan de transición: mantén Rocket.Chat en solo lectura durante la migración
  9. 09Resolución de problemas comunes
  10. 10Rocket.Chat Community 9.0 vs Mattermost Community
  11. 11Mattermost Community, una plataforma estable a largo plazo

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_dump y más común que MongoDB en entornos Docker autoalojados.
  • mmetl, una herramienta oficial de migración — la herramienta mmetl del equipo de Mattermost transforma un mongodump de Rocket.Chat en un archivo de importación JSONL compatible con mmctl 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

  1. 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 rocketchat
  2. Exportar 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-dump

    Verifica que /tmp/rc-dump/rocketchat/ contiene archivos .bson y .json para las colecciones rocketchat_message, users, rocketchat_room, etc.

  3. 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-uploads

    Si utilizas un bucket S3 compatible, anota los parámetros de conexión — los reconfigura-rás en Mattermost.

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

  1. Obtener la configuración oficial de Docker Compose

    El equipo de Mattermost mantiene un repositorio docker con una configuración Compose lista para usar:

    git clone https://github.com/mattermost/docker /opt/mattermost
    cd /opt/mattermost
    cp env.example .env

    Abre .env y 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=mattermost
  2. Crear 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/mattermost

    Arrancar el stack completo (Mattermost + PostgreSQL + nginx con certificado Let's Encrypt integrado):

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

    Espera a que el contenedor de Mattermost esté healthy antes de continuar.

  3. Crear la cuenta de administrador

    Abre https://chat.yourdomain.com en 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

  1. 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 version

    Cambio importante en v0.6.0: el subcomando mmetl check ha sido eliminado. Usa mmetl transform ... --dry-run para validar el dump antes de producir el archivo de importación.

  2. 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 rocketchat del dump) y el nombre del equipo de Mattermost destino:

    mmetl transform rocketchat \
      --team mi-equipo \
      --dump-dir /tmp/rc-dump/rocketchat \
      --output /tmp/mattermost-import

    mmetl genera un archivo import.jsonl y un directorio bulk-export-attachments/. Para probar sin generar salida:

    mmetl transform rocketchat \
      --team mi-equipo \
      --dump-dir /tmp/rc-dump/rocketchat \
      --dry-run
  3. Ejecutar 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-upload

    Para seguir el progreso, consulta los trabajos de importación en System Console → Bulk Import.

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

  1. 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=com

    Activa LDAP over TLS (LDAPS) o StartTLS si tu infraestructura lo permite.

  2. 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:           sn

    Para OpenLDAP, sustituye sAMAccountName por uid y objectGUID por entryUUID.

    En User Filter, restringe la sincronización a los miembros del grupo deseado:

    (memberOf=cn=mattermost-users,ou=groups,dc=yourdomain,dc=com)
  3. 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

CriterioRocket.Chat Community 9.0Mattermost Community
LDAP / Active DirectoryPremium (desde 9.0)Incluido sin restricción
SAML SSOPremium (desde 9.0)Incluido sin restricción
Base de datosMongoDB (replica set requerido)PostgreSQL
RAM mínima4 GB (MongoDB replica set)2 GB (equipo < 50 usuarios)
LicenciaAGPL-3.0MIT (servidor) / Apache 2.0
Herramienta de migraciónExportación JSON/CSV nativammetl + mmctl bulk import
Historial ilimitado
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.

Despliega Mattermost en un VPS Cloud de ServOrbit

Un VPS con acceso root, IPv4 dedicada y SSD NVMe — la base para alojar Mattermost con PostgreSQL y gestionar tu propia autenticación LDAP.

¿Necesita ayuda?

Consulte nuestro centro de ayuda y nuestra FAQ, o contacte con nuestro equipo: llamada, WhatsApp o correo electrónico. Soporte en francés, inglés y árabe.

Escribir por WhatsAppse abre en una pestaña nueva