Files
element_matrix_chat/docs/livekit-deployment.md
2025-11-11 00:54:43 +00:00

3.0 KiB
Raw Permalink Blame History

Element Call + LiveKit Deployment Notes

Resumen rápido de los pasos que seguimos para que Element Web use LiveKit como backend:

  1. Synapse listo para MatrixRTC

    • Listener HTTP con resources: [client, federation, openid].
    • Flags experimental_features (MSC3266/4222/4354), max_event_delay_duration, rc_message y rc_delayed_event_mgmt activados.
    • Reinicio de synapse tras editar synapse_data/homeserver.yaml.
  2. Stack base en Docker

    • docker-compose.yml levanta Synapse, Element Web, Synapse Admin y el proxy wellknown (Nginx).
    • El proxy sirve /.well-known/... y ahora también enruta /livekit/jwt y /livekit/sfu.
  3. Servicios LiveKit

    • docker-compose.livekit.yml inicia livekit y livekit-jwt.
    • configs/livekit/livekit.yaml define puertos, región y las claves LIVEKIT_API_KEY/SECRET.
    • extra_hosts para que livekit y livekit-jwt resuelvan matrix-af2f3d... y matrix-rtc-320bd4... al Traefik interno (10.10.10.6).
  4. Traefik / Coolify

    • Routers para:
      • element-a05ae4... → contenedor Element Web.
      • matrix-af2f3d... → Synapse + /.well-known.
      • matrix-rtc-320bd4... → Nginx (wellknown) que reenvía a livekit-jwt y livekit.
      • call-681f3d... → frontend Element Call (element-call-web).
    • Middleware de redirección HTTPS y CORS (solo se permite https://element-a05ae4...).
  5. Element Call frontend

    • En element-call/: configuramos config/config.organic-machine.json, copiamos a public/config.json y ejecutamos yarn install, yarn build.
    • El servicio element-call-web (Nginx) sirve element-call/dist y se expone como https://call-681f3d.organic-machine.com.
  6. Element Web

    • element-config.json habilita los labs (feature_group_calls, feature_element_call_video_rooms, etc.) y define element_call.urlhttps://call-681f3d....
    • Reiniciamos el contenedor para que sirviera el nuevo config.json.
  7. 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/jwt y /livekit/sfu.
    • livekit-jwt valida tokens OpenID contra Synapse y crea salas vía Twirp en LiveKit.
  8. 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.
  9. 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.