5.5 KiB
Element Call + LiveKit en este stack
Esta guía resume cómo se conecta el repositorio element-call incluido en este
proyecto y qué pasos seguir para habilitar el backend MatrixRTC (LiveKit +
lk-jwt-service) dentro del entorno Docker ya existente.
ℹ️ Para más contexto técnico revisa también
element-call/docs/self-hosting.mdyelement-call/backend/dev_nginx.conf, donde Element documenta la arquitectura oficial de referencia.
1. Requisitos del homeserver
-
Añade las MSC necesarias en
synapse_data/homeserver.yaml(o en tu plantilla):experimental_features: msc3266_enabled: true msc4222_enabled: true msc4354_enabled: true max_event_delay_duration: 24h rc_message: per_second: 0.5 burst_count: 30 rc_delayed_event_mgmt: per_second: 1 burst_count: 20 -
Asegúrate de tener un listener
federationoopenidexpuesto (lo necesita ellk-jwt-servicepara validar los tokens Matrix). -
Configura
.well-known/matrix/clientpara publicar el backend MatrixRTC:{ "m.homeserver": { "base_url": "https://matrix.example.com", "server_name": "matrix.example.com" }, "org.matrix.msc4143.rtc_foci": [ { "type": "livekit", "livekit_service_url": "https://matrix-rtc.example.com/livekit/jwt" } ] }El archivo
configs/well-known/matrix-client.example.jsonsirve como plantilla; cópialo aconfigs/well-known/matrix-client.jsony ajústalo con tu dominio. Sirve este JSON con TLS (Nginx/Caddy) enhttps://<tu-dominio>/.well-known/matrix/client.
2. Preparar configuraciones locales
-
Variables de entorno
Edita.env(o crea uno nuevo desde.env.example) y completa los valores:MATRIX_SITE_BASE_URL,MATRIX_RTC_BASE_URLLIVEKIT_WS_URL,LIVEKIT_JWT_URLLIVEKIT_API_KEY,LIVEKIT_API_SECRET- Puertos
LIVEKIT_*
-
LiveKit
- Copia
configs/livekit/livekit.example.yamlaconfigs/livekit/livekit.yaml. - Cambia región, puertos si es necesario y, sobre todo, define tu par
keyscon el mismoLIVEKIT_API_KEY/LIVEKIT_API_SECRETdel.env.
- Copia
-
Reverse proxy
Expón dos rutas públicas (con TLS) hacia los nuevos contenedores:Ruta pública Proxy interno https://matrix-rtc.example.com/livekit/jwthttp://livekit-jwt:${LIVEKIT_JWT_PORT}wss://matrix-rtc.example.com/livekit/sfuhttp://livekit:${LIVEKIT_HTTP_PORT}Ejemplo básico en Nginx:
server { server_name matrix-rtc.example.com; listen 443 ssl http2; location ^~ /livekit/jwt/ { proxy_pass http://10.10.10.7:${LIVEKIT_JWT_PORT}/; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } location ^~ /livekit/sfu/ { proxy_pass http://10.10.10.6:${LIVEKIT_HTTP_PORT}/; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_read_timeout 120; proxy_send_timeout 120; } }
3. Desplegar los servicios LiveKit
-
Levanta la red base y los servicios habituales (
docker-compose up -d). -
Arranca los componentes MatrixRTC usando el archivo adicional:
docker compose -f docker-compose.yml -f docker-compose.livekit.yml up -d livekit livekit-jwtEl archivo
docker-compose.livekit.ymlañade:livekit: SFU oficial (livekit/livekit-server) usandoconfigs/livekit/livekit.yaml.livekit-jwt: servicioghcr.io/element-hq/lk-jwt-serviceque firma los tokens que consumen los clientes MatrixRTC.
-
Comprueba que los servicios responden:
# JWT service curl -sf https://matrix-rtc.example.com/livekit/jwt/healthz # LiveKit (revisa los logs o escucha el puerto de salud configurado) docker logs -f element_matrix_chat-livekit-1
4. Publicar el frontend Element Call (opcional)
El backend LiveKit habilita las llamadas MatrixRTC para Element Web / Element X
una vez que el .well-known anuncia el foco. Si además quieres exponer la
aplicación Element Call en modo standalone:
-
Construye el frontend:
cd element-call corepack enable yarn install --immutable cp config/config.sample.json public/config.json # o personaliza uno nuevo yarn build -
Sirve los archivos de
element-call/dist/con el servidor web de tu preferencia (o crea tu propia imagen Docker basada enelement-call/Dockerfile). Recuerda actualizarpublic/config.jsonpara apuntar a tu homeserver y, si lo quieres forzar, allivekit_service_url.
5. Verificación final
- Abre
https://matrix.example.com/.well-known/matrix/clienty valida que el JSON devuelve correctamente tulivekit_service_url. - Desde Element Web (usuario registrado en el mismo homeserver) inicia una
llamada en una sala y revisa en los logs del contenedor
livekit-jwtque se emite el token (docker logs -f <contenedor>). - Usa herramientas como testmatrix para validar que tu sitio expone MatrixRTC correctamente.
Con estos pasos tendrás tanto el backend MatrixRTC (LiveKit + Authorization Service) como la referencia para desplegar el frontend Element Call dentro de tu servidor Matrix.