Guía de despliegue

Alojar Matrix Synapse y Element en tu propio VPS

Desplegar en un VPS Cloud →

Tutorial

Alojar Matrix Synapse y Element en tu propio VPS

Autoalojamiento9 min de lectura7 pasos

Matrix es el protocolo de mensajería federada y cifrada de extremo a extremo más completo del software libre. Alojarlo en tu propio VPS te da un sistema de mensajería bajo tu nombre de dominio, capaz de hablar con toda la red Matrix, donde ni el contenido ni los metadatos pasan por terceros. Aquí tienes un despliegue Docker completo — Synapse, PostgreSQL, Element Web y reverse proxy — con la trampa que hay que conocer antes de empezar: el nombre de dominio es INMUTABLE.

Contenido· Por qué alojar tu propio servidor Matrix1/12
  1. 01Por qué alojar tu propio servidor Matrix
  2. 02Qué ganas con un servidor Matrix auto-alojado
  3. 03Element self-hosted vs. app.element.io: la diferencia concreta
  4. 04El punto a entender ANTES de instalar: el nombre de dominio
  5. 05Requisitos de hardware
  6. 06Desplegar Matrix con Docker, PostgreSQL y Element
  7. 07Administrar Synapse después de la instalación
  8. 08Purga de historial y control del espacio en disco
  9. 09Bridges: conectar Matrix con Telegram, Signal y WhatsApp
  10. 10Matrix / Synapse vs. alternativas de mensajería auto-alojada
  11. 11Cierra los registros, y mantenlos cerrados
  12. 12Documentación oficial

Por qué alojar tu propio servidor Matrix

Las herramientas de mensajería de equipo clásicas — Slack, Teams, e incluso las alternativas auto-alojadas — comparten un límite: solo puedes hablar con miembros del mismo servidor. Matrix invierte esto. Es un protocolo FEDERADO: tu servidor habla con todos los demás servidores Matrix del mundo, exactamente como una dirección de correo llega a cualquier otro dominio. Tus usuarios conservan una identidad ligada a ti (@alice:your-domain.com) mientras charlan con personas alojadas en otro lugar. A eso se suma el cifrado de extremo a extremo, por sala: incluso tú, como administrador del servidor, no puedes leer los mensajes de una sala cifrada. Eso es lo que distingue a Matrix de la mensajería simplemente auto-alojada — la soberanía no depende de la confianza en el alojador, sino de la criptografía.

Qué ganas con un servidor Matrix auto-alojado

  • Federación: tus usuarios llegan a los de cualquier otro servidor Matrix, sin cuentas adicionales.
  • Cifrado de extremo a extremo por sala, independiente de la confianza en el alojador.
  • Identificadores ligados a tu nombre de dominio, que se convierten en una dirección duradera.
  • Element Web auto-alojado: la interfaz queda bajo tu control, sin depender de app.element.io.
  • Aplicaciones oficiales de Element en móvil, escritorio y web — todas apuntando a tu servidor.
  • Historial y archivos almacenados en tu máquina, sin límite de retención impuesto.
  • Posibilidad de bridges a otras redes (Telegram, Signal, IRC, XMPP…).
  • Sin recopilación publicitaria ni perfilado: los metadatos permanecen en tu perímetro.

Element self-hosted vs. app.element.io: la diferencia concreta

Element Web es una aplicación web de código abierto — puedes alojarlo en tu propio dominio en lugar de usar app.element.io. Esta elección a menudo se pasa por alto, pero importa. Cuando tus usuarios abren app.element.io, su navegador carga JavaScript desde los servidores de Element HQ: esto no afecta la confidencialidad de los mensajes (el cifrado permanece local), pero crea una dependencia externa.

Alojar Element Web tú mismo — típicamente detrás de chat.your-domain.com — elimina esa dependencia. Controlas la versión desplegada, puedes personalizar config.json para que la interfaz esté preconfigurada con tu servidor, y tus usuarios solo tienen una URL que recordar.

Punto importante: Element Web lee config.<dominio>.json ANTES que config.json. Si tu configuración no se sirve correctamente, la interfaz se muestra perfectamente — y conecta a tus usuarios con el servidor público en lugar del tuyo. Verifica que ambos archivos respondan con tu configuración antes de invitar usuarios.

El punto a entender ANTES de instalar: el nombre de dominio

Esta es la particularidad de Matrix, y la fuente de error más costosa. El server_name de tu servidor — tu nombre de dominio — no es un ajuste de visualización: está inscrito DENTRO de la identidad de cada objeto que produce el servidor. Cada identificador de usuario (@alice:your-domain.com), cada identificador de sala, cada evento firmado lo contiene. Cambiarlo después no es posible: hay que partir de un servidor en blanco y recrear las cuentas. Elige el subdominio definitivo desde la instalación, y vincúlalo cuando instales la aplicación — no después. En ServOrbit, la instalación se niega deliberadamente a arrancar si no hay dominio vinculado: mejor un fallo inmediato y claro que un servidor que habrá que rehacer una vez creadas las cuentas.

Requisitos de hardware

La pila completa — Synapse, PostgreSQL, Element Web y el reverse proxy — consume alrededor de 300 MB en reposo, medido en una instalación nueva. Un VPS con 2 GB de RAM y 2 vCPUs es más que suficiente para un equipo, una asociación o una familia.

El consumo depende principalmente de las salas PÚBLICAS a las que te unes: Synapse conserva el historial y el estado de cada sala federada, y unirse a varias salas comunitarias grandes puede hacer crecer la base de datos varios gigabytes. Para ese caso de uso, apunta a 4 GB de RAM y monitorea el espacio en disco.

PostgreSQL es indispensable — Synapse acepta SQLite, pero no lo recomienda más allá de un servidor de prueba. También prevé un certificado TLS válido: sin HTTPS, la federación y las apps móviles se niegan a conectar.

Desplegar Matrix con Docker, PostgreSQL y Element

  1. Elegir y apuntar el dominio

    Decide el subdominio definitivo (por ejemplo matrix.your-domain.com) y apúntalo a tu VPS con un registro A. Ese nombre se convertirá en la identidad del servidor. Añade un segundo subdominio para Element Web si quieres alojarlo por separado (chat.your-domain.com). Ambos registros A deben estar activos antes de arrancar el contenedor.

  2. Generar la configuración y la clave de firma

    El primer arranque de la imagen Synapse genera homeserver.yaml y sobre todo la CLAVE DE FIRMA del servidor, la que autentica sus eventos ante otros servidores. Guárdala: perderla equivale a perder la identidad del servidor en la red federada. Conserva también homeserver.yaml en tu sistema de copias de seguridad — contiene los secretos compartidos entre componentes.

  3. Cambiar la base de datos a PostgreSQL

    La imagen solo sabe generar una configuración SQLite. Añade un archivo en conf.d/ que redefina el bloque database para PostgreSQL — Synapse lee varios --config-path y las claves repetidas sobreescriben las anteriores. Crea la base de datos con cotejamiento C: Synapse se niega a arrancar en una base con un cotejamiento diferente, y esa elección no puede cambiarse tras la creación.

  4. Colocar un reverse proxy delante

    Sirve Element Web en la raíz de chat.your-domain.com y la API Matrix bajo /_matrix y /_synapse/client en matrix.your-domain.com, detrás de un certificado TLS por dominio. Retransmite correctamente los encabezados Upgrade y Connection: Matrix mantiene conexiones largas (WebSocket), sin esto el tiempo real no funciona. Aumenta también client_max_body_size a al menos 50 MB para transferencias de archivos.

  5. Publicar la delegación .well-known

    Expón /.well-known/matrix/server y /.well-known/matrix/client en tu dominio raíz. Esto permite a otros servidores y apps móviles encontrar tu servidor sin configuración manual. Verifica después en federationtester.matrix.org: una federación no verificada puede bloquear silenciosamente las invitaciones externas.

  6. Configurar Element Web en TU servidor

    Crea un config.json que apunte default_server_config a tu servidor. Element también lee config.<dominio>.json primero: sirve ambos a través de tu reverse proxy. Prueba abriendo la interfaz en una pestaña privada — sin cookies ni sesión — y verifica que la pantalla de inicio de sesión ofrezca tu dominio por defecto, no matrix.org.

  7. Crear la primera cuenta de administrador

    Synapse no crea ninguna cuenta por sí solo y los registros deben permanecer cerrados. Crea la cuenta de administrador con register_new_matrix_user, luego inicia sesión en https://chat.your-domain.com. En ServOrbit, esta cuenta admin se crea automáticamente en el primer arranque y su contraseña generada es legible en tu área de cliente.

Administrar Synapse después de la instalación

Synapse expone una API de administración en /_synapse/admin/v1 — reservada para cuentas marcadas como admin. A través de esta API, puedes desactivar una cuenta, purgar el historial de una sala, forzar el cierre de sesión de todos los dispositivos de un usuario o consultar estadísticas de federación.

Synapse Admin (interfaz web de código abierto, desplegable como contenedor separado) utiliza esta misma API y ofrece una vista gráfica: lista de usuarios, salas, dispositivos registrados y tamaño de la base de datos por sala. Útil para detectar una sala federada que está haciendo crecer la base de datos varios gigabytes.

Para las actualizaciones, Synapse publica sus imágenes en ghcr.io/element-hq/synapse. Revisa las notas de lanzamiento antes de cada actualización mayor: algunas migraciones de base de datos son irreversibles, y Synapse documenta explícitamente las versiones mínimas requeridas para pasar de una rama a otra.

Purga de historial y control del espacio en disco

Un servidor federado acumula el historial de todas las salas a las que se une — incluidas las grandes salas públicas. Sin purgas regulares, la base de datos PostgreSQL puede alcanzar decenas de gigabytes en pocos meses.

Synapse ofrece dos mecanismos. La purga de historial vía la API de administración (POST /_synapse/admin/v1/purge_history) elimina eventos anteriores a una fecha en una sala concreta — sin afectar a otras salas ni a mensajes que aún no has leído. El comando synapse_auto_compressor comprime después los grupos de state_groups en PostgreSQL, lo que puede reducir a la mitad el tamaño de la base en un servidor activo desde hace varios meses.

Activa también gc_thresholds en homeserver.yaml para controlar el recolector de basura de Python de Synapse: en un servidor federado activo, el GC por defecto raramente es óptimo para la memoria residente.

Bridges: conectar Matrix con Telegram, Signal y WhatsApp

Una de las ventajas distintivas de Matrix es su ecosistema de bridges — servicios que enlazan tu servidor con otras redes. Matterbridge, Beeper o los bridges oficiales del proyecto Matrix retransmiten mensajes entre una sala Matrix y un grupo de Telegram, un canal de Slack o una conversación de WhatsApp.

Cada bridge se despliega como un servicio adicional (un contenedor extra en tu compose.yml) y se registra con Synapse a través de un archivo registration.yaml. El bridge recibe una porción del espacio de identificadores (@telegram_*:your-domain.com) y traduce los mensajes en ambas direcciones.

Para Telegram, mautrix-telegram es el bridge más mantenido. Para Signal, mautrix-signal. Ambos bridges requieren una cuenta en la red objetivo. WhatsApp y Meta Messenger pasan por mautrix-meta, que usa la API no oficial: su funcionamiento depende de las decisiones de Meta y puede interrumpirse.

Matrix / Synapse vs. alternativas de mensajería auto-alojada

Desplace la tabla

CriterioMatrix + SynapseMattermostRocket.Chat
Federación entre servidoresSí, nativaNoNo
Cifrado de extremo a extremoSí, por salaOpcional (beta)No (texto claro en tránsito)
Bridges a otras redesSí (Telegram, Signal, Slack…)Parcial (Slack)Parcial
Consumo de RAM (reposo)~300 MB (pila completa)~400 MB~500 MB
Cliente web auto-alojableElement Web (código abierto)Sí (incluido)Sí (incluido)
Clientes móvilesElement iOS/AndroidNativo iOS/AndroidNativo iOS/Android

Cierra los registros, y mantenlos cerrados

Un servidor Matrix con registros abiertos es descubierto rápidamente y usado como relevo por terceros: cuentas de spam, salas no deseadas, y una base de datos que crece sin que hayas pedido nada. Mantén enable_registration en false y crea cuentas manualmente, o usa autenticación externa (SSO, OIDC). Si abres los registros, exige al menos una verificación por correo electrónico y activa registration_requires_token.

Documentación oficial

Para la configuración avanzada — workers, bridges, módulos de autenticación, purga de historial — consulta la documentación oficial de Synapse. Esta guía cubre el despliegue en VPS; la documentación de origen sigue siendo la referencia para ajustes finos y actualizaciones de versión mayor.

Lanza tu servidor Matrix en un VPS de ServOrbit

Un VPS con Docker preconfigurado, un dominio vinculado y el certificado TLS instalado automáticamente: Synapse, PostgreSQL y Element Web se despliegan en un solo paso. Tus conversaciones se quedan contigo.

¿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