Opero Matrix con Element y LiveKit en mi infraestructura. Los servicios se usan a diario para mensajes, llamadas de voz y vídeo y pantalla compartida. Conexiones internas seguras, administración y operación cotidiana forman parte del mismo conjunto.
Contenido
Una plataforma, tres responsabilidades

- Chat: Element ofrece la interfaz; Synapse gestiona cuentas, salas y eventos.
- Llamadas: LiveKit gestiona audio, vídeo y pantalla compartida; lk-jwt proporciona la autorización adecuada.
- Operación: Nginx y HAProxy controlan el acceso web; Synapse Admin sirve para administrar.
PostgreSQL conserva los datos persistentes de Synapse. Redis apoya caché y, según el modo, coordinación entre procesos. Ambos son dependencias internas y no necesitan exposición pública.
Las llamadas siguen otra ruta
WSS transporta señalización y WebRTC los medios. Audio y vídeo no atraviesan por tanto el proxy como peticiones HTTP ordinarias. LiveKit puede usar TURN integrado; coturn atiende otras rutas compatibles.
Con lk-jwt, integración y acciones permitidas en las salas dependen de versión y modo. Una identidad Matrix válida debe recibir solo los permisos multimedia previstos, no un uso ilimitado de la infraestructura.
Proteger contenido y transporte por separado

En una sala Matrix cifrada de extremo a extremo, el administrador del servidor no puede descifrar textos sin las claves de la sala. TLS protege una conexión que puede terminar en el proxy. Otra conexión TLS al backend requiere su propia validación de identidad.
Metadatos y dispositivos comprometidos siguen siendo otros asuntos. Para llamadas y pantalla compartida, E2EE debe comprobarse con los clientes y funciones realmente utilizados.
Zero Trust también dentro de la red
Trato mi red interna como una externa potencialmente no fiable. Una IP interna no concede permisos. Autorizo conexiones expresamente, verifico identidades y limito privilegios. El endurecimiento continúa por tanto más allá del proxy público.

El proyecto limitó tanto Synapse Admin como su API. Importa el cliente real: HAProxy puede transmitir su IP de forma fiable sin obtener derechos administrativos. Las pruebas iniciales rechazaron también encabezados falsificados.
Detrás del proxy, las reglas limitan origen, destino y servicio. Base y caché siguen internas; el listener Synapse descrito escucha en loopback local. Entre equipos, cifrado y validación de certificados se planifican expresamente. El permiso de red no sustituye el inicio de sesión.
Adaptar el endurecimiento a la aplicación
En la entrada web pública también uso ModSecurity con OWASP Core Rule Set para revisar peticiones HTTP y detectar ataques comunes. Las excepciones deben limitarse a cada ruta para mantener inicio de sesión, sincronización y subidas. Los medios WebRTC quedan fuera de esta inspección HTTP.
- Limitar inicio de sesión y solicitudes por endpoint; usar estados HTTP adecuados como 403 o 429 para los rechazos.
- Contemplar WebSockets y sincronización: tiempos globales inadecuados no deben cortar conexiones largas legítimas.
- Usar filtros Fail2ban propios para reconocer abusos y bloquear al cliente real en un punto efectivo.
Tokens y contraseñas quedan fuera de los registros. Los eventos técnicos centralizados ayudan a relacionar acceso web, Synapse y establecimiento de medios. Un inicio de sesión correcto no demuestra por sí solo una llamada funcional.
Comprobar también la operación
| Prueba controlada | Qué debe funcionar |
|---|---|
| Llamada desde otra red | Señalización, audio, vídeo y TURN cuando proceda. |
| Petición admin o token no autorizada | Rechazo en el límite previsto, también con encabezados IP falsificados. |
| Fallo de un servicio | Evaluar por separado mensajes, inicio de sesión y llamadas existentes. |
| Restauración | Incluir base, medios y claves necesarios; después probar recorridos reales. |
Actualizaciones, retención limitada de registros y copias probadas importan tanto como la instalación. Simulo fallos virtualmente: ayuda a probar, pero no sustituye sedes físicas separadas. Otra instancia Synapse tampoco hace altamente disponibles la base y los medios automáticamente.
Conclusión
Estos servicios forman parte de la operación diaria. Para mí importan chat y llamadas funcionales, accesos limitados y fallos que se puedan diagnosticar y resolver.
Referencias técnicas: Synapse reverse proxy · Matrix E2EE · LiveKit deployment · lk-jwt · Fail2ban · Zero Trust: NIST SP 800-207 · ModSecurity / OWASP CRS