3.0 KiB
3.0 KiB
Element Call + LiveKit Deployment Notes
Resumen rápido de los pasos que seguimos para que Element Web use LiveKit como backend:
-
Synapse listo para MatrixRTC
- Listener HTTP con
resources: [client, federation, openid]. - Flags
experimental_features(MSC3266/4222/4354),max_event_delay_duration,rc_messageyrc_delayed_event_mgmtactivados. - Reinicio de
synapsetras editarsynapse_data/homeserver.yaml.
- Listener HTTP con
-
Stack base en Docker
docker-compose.ymllevanta Synapse, Element Web, Synapse Admin y el proxywellknown(Nginx).- El proxy sirve
/.well-known/...y ahora también enruta/livekit/jwty/livekit/sfu.
-
Servicios LiveKit
docker-compose.livekit.ymlinicialivekitylivekit-jwt.configs/livekit/livekit.yamldefine puertos, región y las clavesLIVEKIT_API_KEY/SECRET.extra_hostspara quelivekitylivekit-jwtresuelvanmatrix-af2f3d...ymatrix-rtc-320bd4...al Traefik interno (10.10.10.6).
-
Traefik / Coolify
- Routers para:
element-a05ae4...→ contenedor Element Web.matrix-af2f3d...→ Synapse +/.well-known.matrix-rtc-320bd4...→ Nginx (wellknown) que reenvía alivekit-jwtylivekit.call-681f3d...→ frontend Element Call (element-call-web).
- Middleware de redirección HTTPS y CORS (solo se permite
https://element-a05ae4...).
- Routers para:
-
Element Call frontend
- En
element-call/: configuramosconfig/config.organic-machine.json, copiamos apublic/config.jsony ejecutamosyarn install,yarn build. - El servicio
element-call-web(Nginx) sirveelement-call/disty se expone comohttps://call-681f3d.organic-machine.com.
- En
-
Element Web
element-config.jsonhabilita los labs (feature_group_calls,feature_element_call_video_rooms, etc.) y defineelement_call.url→https://call-681f3d....- Reiniciamos el contenedor para que sirviera el nuevo
config.json.
-
CORS y salud
- Nginx responde 204 a los preflight y añade las cabeceras
Access-Control-Allow-*. - Traefik refuerza CORS para que solo el origen de Element Web pueda usar
/livekit/jwty/livekit/sfu. livekit-jwtvalida tokens OpenID contra Synapse y crea salas vía Twirp en LiveKit.
- Nginx responde 204 a los preflight y añade las cabeceras
-
Dominios implicados
matrix-af2f3d.organic-machine.com– Synapse y.well-known.element-a05ae4.organic-machine.com– Element Web.admin-0cc4d3.organic-machine.com– Synapse Admin.call-681f3d.organic-machine.com– Element Call frontend.matrix-rtc-320bd4.organic-machine.com– LiveKit JWT + SFU.
-
Diagnóstico rápido
sudo docker compose -f docker-compose.livekit.yml logs -f livekit-jwt livekit– tokens y salas.sudo docker compose logs synapse | grep openid– emisión de OpenID.- DevTools → Network →
livekit/jwt/sfu/get– debe responder 200 con CORS correcto.
Con todo esto, Element Web usa Element Call (widget) y LiveKit como backend SFU.