📡 Infraestructura

Configuración de LiveKit

YOffice AI usa LiveKit para sesiones de vídeo, audio y asistente de voz en tiempo real. Puedes ejecutar LiveKit localmente con Docker (recomendado para desarrollo) o conectarte a LiveKit Cloud para una configuración totalmente gestionada.

💡
No necesitas LiveKit Cloud

El conjunto completo de funciones de YOffice — incluyendo el asistente de voz, las videollamadas y la compartición de pantalla — funciona con una instancia local de LiveKit en Docker. LiveKit Cloud es una comodidad opcional, no un requisito.

¿Qué opción es adecuada para ti?

OpciónIdeal paraCosteTiempo de configuración
Docker localDesarrollo, producción autoalojada, entornos aisladosGratuito (tú lo alojas)~5 minutos
LiveKit CloudEquipos que quieren infraestructura gestionada y enrutamiento de medios global sin gestionar sus propios servidoresPago por uso (nivel gratuito disponible)~10 minutos

Opción A — LiveKit local (Docker)

  1. Iniciar LiveKit con Docker

    Desde command_center_tenant_server, ejecuta: docker compose up -d livekit. Esto usa livekit/livekit-server:latest con la configuración en livekit.yaml. Puertos por defecto: 7880 (WebSocket), 7881 (TCP), más UDP para RTC. Clave por defecto: devkey / devkey-secret-32-chars-minimum!!

  2. Configurar el servidor tenant

    En command_center_tenant_server/config/passwords.yaml (sección development), establece: livekitUrl: ws://localhost:7880, livekitKey: devkey, livekitSecret: devkey-secret-32-chars-minimum!! Si el servidor tenant se ejecuta dentro de Docker en el mismo compose, usa ws://livekit:7880.

  3. Iniciar el resto del stack

    Ejecuta Postgres, Redis y ambos servidores Auth y Tenant como se describe en la guía de Inicio rápido. La app Flutter recibe la URL de LiveKit automáticamente desde el servidor tenant cuando solicita un token de sala — no es necesario configurar ninguna URL de LiveKit en la propia app Flutter.

Referencia de configuración

El servidor tenant necesita tres valores en :config/passwords.yaml:

ClaveDescripciónValor por defecto (local)
livekitUrlURL de WebSocket que usan los clientes para conectarse a LiveKitws://localhost:7880
livekitKeyClave API (debe coincidir con livekit.yaml)devkey
livekitSecretSecreto API (debe coincidir con livekit.yaml)devkey-secret-32-chars-minimum!!
⚠️
Redes en Docker

Si tanto el servidor tenant como LiveKit se ejecutan dentro de la misma red de Docker Compose, usa ws://livekit:7880 (nombre del servicio) en lugar de ws://localhost:7880. La app Flutter recibe la URL del servidor tenant en el momento de emitir el token, por lo que los clientes fuera de Docker siguen obteniendo la URL pública correcta.

Opción B — LiveKit Cloud

  1. Crear una cuenta de LiveKit Cloud

    Ve a cloud.livekit.io y regístrate o inicia sesión. LiveKit Cloud ofrece un nivel gratuito generoso, adecuado para desarrollo y cargas de producción pequeñas.

  2. Crear un proyecto

    En el panel de LiveKit Cloud, crea un nuevo proyecto. Anota tres valores: URL de WebSocket (p. ej. wss://your-project.livekit.cloud), Clave API y Secreto API (se muestra una vez — cópialo inmediatamente y guárdalo de forma segura).

  3. Configurar el servidor tenant

    En config/passwords.yaml (o variables de entorno para producción), establece: livekitUrl, livekitKey y livekitSecret con los valores del paso 2.

  4. Configurar desde la interfaz de administración de YOffice (opcional)

    Abre Ajustes de la organización → Servidor LiveKit. Activa "Usar LiveKit Cloud", pega la URL de WebSocket, la clave API y el secreto API, y pulsa Guardar. Esto almacena las credenciales en Postgres y es el enfoque recomendado para configuraciones por organización en despliegues multitenant.

  5. Iniciar la app — sin necesidad de LiveKit local

    Con LiveKit Cloud configurado, no necesitas ejecutar un contenedor de LiveKit local. Inicia los servidores Auth y Tenant y la app Flutter como de costumbre. El servidor tenant emitirá tokens apuntando a LiveKit Cloud.

Configurar LiveKit desde la interfaz de administración

Los administradores de la organización pueden configurar las credenciales de LiveKit Cloud directamente desde la pantalla de ajustes de YOffice sin modificar los archivos de configuración del servidor. Este es el enfoque recomendado para configuraciones por organización en despliegues multitenant.

Servidor LiveKit
Usar LiveKit Cloud
wss://your-project.livekit.cloud
API Key: ••••••••••••
API Secret: ••••••••••••
Ajustes de la organización → Servidor LiveKit
  1. Abrir los ajustes de la organización

    Ve a Ajustes → Organización → sección Servidor LiveKit.

  2. Activar LiveKit Cloud

    Activa "Usar LiveKit Cloud". Aparecerán tres campos de entrada: URL de WebSocket, Clave API y Secreto API.

  3. Pegar las credenciales

    Introduce la URL de WebSocket (wss://…), la Clave API y el Secreto API de tu proyecto de LiveKit Cloud. Las claves y secretos API se almacenan cifrados — nunca se devuelven en texto plano tras el guardado inicial.

  4. Guardar

    Pulsa Guardar. Todos los miembros de esta organización usarán el proyecto LiveKit configurado para videollamadas y sesiones de voz.

Despliegue multiinstancia con LiveKit Cloud

Al ejecutar varias réplicas del servidor tenant detrás de un balanceador de carga, LiveKit Cloud no requiere ninguna configuración especial. Los JWT se firman con credenciales almacenadas en Postgres — todas las réplicas leen desde la misma fuente, por lo que cualquier pod puede emitir un token para cualquier usuario.

El agente de personalización (worker de voz/avatar) se conecta a LiveKit Cloud y llama de vuelta a tu servidor tenant mediante TENANT_BASE_URL. Apunta esto a tu balanceador de carga; cualquier réplica puede gestionar las devoluciones de llamada.

ℹ️

Las sesiones persistentes no son necesarias para la voz. LiveKit Cloud conecta a los clientes directamente con su propio plano de medios tras la emisión del JWT. Consulta la guía de Despliegue multiinstancia para la lista de verificación completa.

Resolución de problemas

SíntomaCausa probableSolución
La videollamada conecta pero no hay audioPuertos UDP bloqueados por el cortafuegosAbre UDP 50000–60000 (local) o comprueba las reglas del cortafuegos de la región de LiveKit Cloud
La solicitud de token devuelve 401Clave API o secreto no coincidenVerifica que livekitKey / livekitSecret en passwords.yaml coinciden con el proyecto de LiveKit
El asistente de voz se conecta pero nunca hablaEl worker no puede acceder al servidor tenantEstablece TENANT_BASE_URL a la URL pública del balanceador de carga, no a una IP de pod
La app Flutter no puede acceder a LiveKit (local)livekitUrl apunta a un nombre de host interno de DockerUsa un nombre de host accesible desde el dispositivo Flutter (p. ej., la IP LAN de tu máquina)