Serveur LiveKit (livekit)
SFU WebRTC des agents vocaux temps réel : signalisation en WebSocket, médias en UDP sur une plage de ports fixe, sans TURN (réseau bancaire), Redis pour le mode distribué.
Généré depuis catalog/services/livekit.yaml : ne pas modifier à la main.
Résumé
| |
|---|
| Version | 1.13.11 |
| Usage | installer et configurer, configurer et connecter |
| Couche | fonctionnelle (catalogue IA) |
| Catégorie | Inférence IA |
| Méthodes d'installation | binary, podman |
| Connexion externe | non |
| Réservé au bac à sable | non |
Licence
| |
|---|
| Identifiant SPDX | Apache-2.0 |
| Politique de licence | licence socle (MIT ou Apache-2.0) |
| Exception de licence | - |
| Composant de la plateforme | livekit |
Paquets et artefacts
Un paquet que publie le projet du service (son image, son archive binaire, son paquet Python ou système) porte la licence du service ; un paquet tiers porte la licence écrite sur sa ligne, lue dans les métadonnées officielles du projet amont.
Les images sont épinglées par étiquette dans le descripteur, et par condensé (digest) quand le descripteur en déclare un (le bundle hors ligne refuse alors une image téléchargée qui ne le porte pas) ; le condensé est enregistré dans le miroir du Manager à l'import du bundle hors ligne, et chaque téléchargement ou chargement est vérifié par rapport à lui.
Systèmes et architectures pris en charge
| Méthode | Systèmes d'exploitation | Architectures |
|---|
binary | famille RHEL (dnf), famille Debian (apt), Arch Linux (pacman) | x86_64 (architecture des artefacts du descripteur) |
podman | famille RHEL (dnf), famille Debian (apt), Arch Linux (pacman) | x86_64, aarch64 (non restreintes par le descripteur) |
Systèmes hôtes certifiés : RHEL 8/9/10, Rocky Linux 8/9/10, AlmaLinux 8/9/10, Oracle Linux 8/9, CentOS Stream 9/10, Ubuntu 22.04/24.04, Debian 12, Arch Linux (rolling). Le contrôle préalable des hôtes accepte ces systèmes (une autre version d'une famille connue donne un avertissement, une version en fin de vie est refusée) et les architectures x86_64 et aarch64.
Prérequis
Hôte
- au moins 4 CPU (avertissement,
cpu).
Réseau et ports
| Composant | Nom du port | Port | Ouvert dans le pare-feu de l'hôte |
|---|
livekit-server | signal | 7880/tcp | oui |
livekit-server | media | 50000-50100/udp | oui |
livekit-server | metrics | 6789/tcp | oui |
Paramètres du noyau
| Paramètre | Valeur |
|---|
net.core.rmem_max | 5000000 |
net.core.wmem_max | 5000000 |
Services et connexions nécessaires
Détail et résolution : voir Dépendances.
Méthodes et modes d'installation
| Méthode | Défaut | Ce que la méthode utilise |
|---|
binary | oui | les archives binaires du descripteur, décompressées dans le répertoire du service |
podman | - | les images de conteneur du descripteur, exécutées par Podman sous systemd |
Composants
| Composant | Type | Méthodes d'installation | Ports |
|---|
Serveur LiveKit (livekit-server) | maître | binary, podman | 7880/tcp, 50000-50100/udp, 6789/tcp |
Nœud unique (single) (par défaut)
Un seul serveur média, état des salles local.
Ce que le mode déploie :
| Composant | Placement |
|---|
livekit-server | min 1, max 1 |
Distribué (distributed)
Plusieurs serveurs médias qui routent les salles par Redis.
Ce que le mode déploie :
| Composant | Placement |
|---|
livekit-server | min 2, recommandé 3 |
Installer ce service
L'assistant d'installation du Navin Manager planifie, valide et exécute l'installation ; il faut la permission services:install sur le cluster.
-
Ouvrez l'assistant. Dans Clusters, choisissez l'action de ligne Installer des services du cluster cible. L'assistant s'ouvre sur sa première étape, Service.
-
Choisissez le service. À l'étape Service, sélectionnez Serveur LiveKit. La carte affiche la licence Apache-2.0 et les dépendances dont l'installation a besoin. Choisissez la Méthode parmi binary, podman (par défaut binary).
-
Choisissez les hôtes et le mode. À l'étape Hôtes, cochez les hôtes, puis choisissez le Mode : single (par défaut), distributed. Chaque mode déploie les composants listés dans Méthodes et modes d'installation.
-
Liez les dépendances. À l'étape Liaisons, choisissez pour chaque dépendance (redis, redis) Installer avec la plateforme ou Utiliser une connexion existante ; une dépendance facultative peut rester sur Aucune liaison.
-
Configurez. À l'étape Configuration, relisez les paramètres (voir Paramètres de configuration). Les mots de passe laissés vides avec une valeur générée par défaut sont générés et scellés par le Manager.
-
Relisez et installez. À l'étape Installation, le Manager valide le plan et affiche l'ordre d'installation ; quand il indique « Le plan est valide. Prêt pour l'installation. », choisissez Installer. Un mode hautement disponible n'est installé que si ses contrôles HA réussissent.
-
Vérifiez. L'opération se termine quand les contrôles de santé de chaque instance réussissent (voir Contrôles de santé) ; le service apparaît alors en marche dans Services.
Connecter un service existant
| |
|---|
| Schémas | https, http |
| Port par défaut | 7880 |
| Authentification | obligatoire |
| Contrôle de santé | / |
| Méthode d'authentification | Champs | Description |
|---|
api_key_secret | api_key, api_secret | Clé et secret d'API de la section keys ; le Manager signe un JWT court (roomList) pour les vérifier. |
Documentation officielle : https://docs.livekit.io/reference/other/roomservice-api/
Haute disponibilité
| |
|---|
| Cluster | natif (native) |
| Haute disponibilité | externe (external) |
| Bascule | côté client (client) |
| Réplication | stockage partagé (shared-store) |
| Quorum | aucun (none) |
| Découverte | registre (registry) |
| Point d'entrée | répartiteur (load-balancer) |
| Documentation officielle | https://docs.livekit.io/transport/self-hosting/distributed/ |
| Paramètre TLS entre pairs | tls_enabled |
Prérequis
| Prérequis | Doit être hautement disponible | Modes | Description |
|---|
redis | oui | distributed | Redis hautement disponible portant le registre des nœuds et le routage des salles. |
Topologie par mode
| Modes | Niveau le plus haut du catalogue | Répartition | Composant du quorum | Domaines de panne | Description |
|---|
single | autonome (standalone) | unique (single) | - | 1 | Un serveur média, état des salles local. |
distributed | cluster (cluster) | actif-actif (active-active) | - | 2 | Plusieurs serveurs média inscrits dans Redis, qui route chaque salle vers un nœud. |
Remarques
- Une salle vit sur un seul nœud : la perte brutale de ce nœud coupe la session en cours, les clients se reconnectent et la salle redémarre sur un autre nœud.
Paramètres de configuration
Réseau
| Paramètre | Type | Défaut | Valeurs permises | Obligatoire | Secret | Redémarrage | Description |
|---|
Port de signalisation (port) | port | 7880 | - | non | non | oui | Port WebSocket et de l'API HTTP. |
Premier port média (udp_port_start) | port | 50000 | - | non | non | oui | Début de la plage UDP des médias. |
Dernier port média (udp_port_end) | port | 50100 | - | non | non | oui | Fin de la plage UDP des médias (gardez la règle du pare-feu alignée). |
Port des métriques (metrics_port) | port | 6789 | - | non | non | non | Port Prometheus. |
TLS au proxy (tls_enabled) | bool | false | - | non | non | non | Les clients utilisent wss:// (TLS terminé par le répartiteur devant le port de signalisation). |
Sécurité
| Paramètre | Type | Défaut | Valeurs permises | Obligatoire | Secret | Redémarrage | Description |
|---|
Clé d'API (api_key) | string | navin | - | non | non | non | Nom de la paire de clés d'API (EAI_LIVEKIT_API_KEY). |
Secret d'API (api_secret) | password | généré | - | non | oui | non | Secret de la paire de clés d'API (EAI_LIVEKIT_API_SECRET), au moins 32 caractères. |
Utilisateur ACL Redis (redis_username) | string | (vide) | - | non | non | non | Utilisateur ACL de LiveKit dans Redis ; vide : l'utilisateur de la liaison redis (le service redis du catalogue n'a que son utilisateur par défaut). |
Intégrations
| Paramètre | Type | Défaut | Valeurs permises | Obligatoire | Secret | Redémarrage | Description |
|---|
Bus de messages Redis (redis_bus) | bool | false | - | non | non | oui | Placer le nœud unique sur Redis (liaison redis) : LiveKit SIP, Egress et Ingress ne parlent au serveur LiveKit que par Redis, la téléphonie et les enregistrements en ont donc besoin. Le mode distribué utilise toujours Redis. (single) |
URL des webhooks (webhook_urls) | list | [] | - | non | non | oui | Destinataires des événements de salle, de participant, de piste, d'Egress et d'Ingress, par exemple la route des webhooks LiveKit de Navin Enterprise ; chaque requête est signée avec la paire de clés d'API (en-tête Authorization, JWT portant le sha256 du corps). |
URL de base RTMP d'Ingress (ingress_rtmp_base_url) | string | (vide) | - | non | non | non | Préfixe des URL RTMP que renvoie CreateIngress (service livekit-ingress, optionnel, inutile à la téléphonie) ; vide : aucun. |
URL de base WHIP d'Ingress (ingress_whip_base_url) | string | (vide) | - | non | non | non | Préfixe des URL WHIP que renvoie CreateIngress ; vide : aucun. |
Dépendances
Pour chaque dépendance active, le Manager prend la première solution parmi : la liaison choisie dans l'assistant ; un service de la même installation qui la fournit ; un service déjà installé dans le cluster ; la seule connexion du type attendu. Sinon, une dépendance facultative reste non liée, et une dépendance obligatoire est ajoutée à l'installation dans son mode par défaut (la colonne ci-dessous nomme le service du catalogue ajouté).
| Liaison | Fournie par | Type de connexion | Point d'accès | Facultative | Quand rien n'est lié | Description |
|---|
redis (distributed) | redis | redis | redis | non | redis est ajouté à l'installation | Routage des salles partagé par les nœuds (TLS, utilisateur ACL livekit). |
redis (single) | redis | redis | redis | oui | reste non liée (facultative) | Bus de messages de LiveKit SIP, Egress et Ingress sur un nœud unique, lu seulement quand redis_bus est activé (le même Redis que le leur). |
Points d'accès
| Point d'accès | Schéma | Composant | Port | Chemin | Paramètre TLS | Paramètres de liaison | Secrets de liaison | Commande de provisionnement |
|---|
signal | ws | livekit-server | 7880 (port) | - | tls_enabled | api_key, redis_bus | api_secret | - |
Fichiers de configuration client
Fichiers rendus pour le téléchargement de la configuration client :
livekit.env (client.env.j2)
Commandes
| Commande | Composant | Cible | Description |
|---|
Journaux récents (logs) | livekit-server | hôte choisi | Dernières lignes du journal du serveur. |
Contrôles de santé
Vivacité (par instance)
| Composant | Contrôle | Détails |
|---|
livekit-server | HTTP http://{{ host.ip or '127.0.0.1' }}:{{ config.port }}/ | Attendu 200 ; 30 tentatives ; intervalle 1 s ; délai 3 s |
Contrôles préalables
| Contrôle | Type | Signification | Sévérité | Composants |
|---|
signal_port_free | port_free {"param": "port"} | port 7880 libre sur l'hôte | bloquant | tous les composants |
cpu | cpu_count {"min": 4} | au moins 4 CPU | avertissement | tous les composants |
Désinstallation
Chemins supprimés quand les données sont purgées : {{ paths.log }}.
Liens rapides
- Métriques :
http://{{ host.fqdn }}:{{ config.metrics_port }}/metrics
Documentation amont