Outils pour utilisateurs

Outils du site


linux:jitsi

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
linux:jitsi [2026/09/07 03:58] – rootlinux:jitsi [2026/09/07 07:10] (Version actuelle) – root
Ligne 116: Ligne 116:
 </code> </code>
  
-===== 8. Configuration TURN (coturn) =====+===== 8. Configuration TURN (coturn) — TURN/UDP sans TLS =====
  
 Le TURN sert de **relais média** quand un participant est derrière un NAT/firewall restrictif qui bloque l'UDP direct (10000/udp). Typiquement : **clients en réseau d'entreprise**. Sans TURN fonctionnel, ces participants se connectent mais n'ont **ni son ni vidéo**. Le TURN sert de **relais média** quand un participant est derrière un NAT/firewall restrictif qui bloque l'UDP direct (10000/udp). Typiquement : **clients en réseau d'entreprise**. Sans TURN fonctionnel, ces participants se connectent mais n'ont **ni son ni vidéo**.
  
-Jitsi installe coturn automatiquement. Le conflit vient du fait que le TURN/TLS veut aussi le port 443. Comme Caddy occupe le 443, on bascule le TURN sur **5349**.+Cette section décrit un TURN **sans TLS**, en TURN/UDP sur le port **3478** uniquement. Avantage : **aucun certificat à gérer** côté coturn (pas de synchro depuis Caddy, pas de renouvellement à automatiser). Le TURN/UDP 3478 couvre la grande majorité des NAT restrictifs. 
 + 
 +<note> 
 +**Limite** : le TURN over TLS (5349) n'est utile que pour traverser les firewalls corporate les plus verrouillés, qui n'autorisent que le trafic HTTPS sortant. Ceux-là ne seront pas couverts par cette config. Si un client réel se retrouve bloqué malgré 3478/udp, il faudra ajouter un TURN/TLS 5349 (nécessite alors un certificat). 
 +</note>
  
 ==== 8.1 Config coturn ==== ==== 8.1 Config coturn ====
Ligne 128: Ligne 132:
 <code> <code>
 listening-port=3478 listening-port=3478
-tls-listening-port=5349 
 listening-ip=<IP_PRIVEE_VM> listening-ip=<IP_PRIVEE_VM>
 relay-ip=<IP_PRIVEE_VM> relay-ip=<IP_PRIVEE_VM>
 external-ip=<IP_PUBLIQUE>/<IP_PRIVEE_VM> external-ip=<IP_PUBLIQUE>/<IP_PRIVEE_VM>
- 
-# Certificat TLS pour le TURN over TLS 
-cert=/etc/jitsi/meet/meet.makeitsimple.be.crt 
-pkey=/etc/jitsi/meet/meet.makeitsimple.be.key 
  
 # Auth partagée avec Jitsi # Auth partagée avec Jitsi
Ligne 141: Ligne 140:
 static-auth-secret=<SECRET_GENERE_PAR_JITSI> static-auth-secret=<SECRET_GENERE_PAR_JITSI>
 realm=meet.makeitsimple.be realm=meet.makeitsimple.be
 +
 +# Pas de TLS : on ne définit ni tls-listening-port, ni cert, ni pkey
 +no-tls
 +no-dtls
  
 # Durcissement # Durcissement
Ligne 149: Ligne 152:
  
 <note> <note>
-Le ''static-auth-secret'' est généré à l'install. Le récupérer dans ''/etc/turnserver.conf'' (existant) ou dans ''/etc/prosody/conf.d/meet.makeitsimple.be.cfg.lua'' (bloc ''turncredentials'').+Le ''static-auth-secret'' est généré à l'install. Le récupérer dans ''/etc/turnserver.conf'' (existant) ou dans ''/etc/prosody/conf.d/meet.makeitsimple.be.cfg.lua'' (bloc ''turncredentials''). Commenter ou supprimer les lignes ''tls-listening-port'', ''cert'' et ''pkey'' générées par défaut si elles sont présentes.
 </note> </note>
  
-==== 8.2 Certificat pour le TURN ====+==== 8.2 Pointer Jitsi vers le TURN/UDP ====
  
-coturn a besoin d'un vrai certificat pour le TURN/TLS sur 5349. Comme c'est Caddy qui émet les certificats, deux options : +Vérifier dans ''/etc/prosody/conf.d/meet.makeitsimple.be.cfg.lua'' que le bloc ''turncredentials'' n'annonce **que** STUN et TURN/UDP sur 3478 (retirer toute entrée ''turns'' / 5349) :
- +
-=== Option A — Copier le cert de Caddy (simple) === +
- +
-Caddy stocke ses certificats dans son data dir, ex : +
-''/var/lib/caddy/.local/share/caddy/certificates/acme-v02.api.letsencrypt.org-directory/meet.makeitsimple.be/'' +
- +
-Script de synchro (à mettre en cron ou hook de renouvellement) : +
- +
-<code bash> +
-#!/bin/bash +
-SRC=/var/lib/caddy/.local/share/caddy/certificates/acme-v02.api.letsencrypt.org-directory/meet.makeitsimple.be +
-DST=/etc/jitsi/meet +
-cp "$SRC/meet.makeitsimple.be.crt" "$DST/meet.makeitsimple.be.crt" +
-cp "$SRC/meet.makeitsimple.be.key" "$DST/meet.makeitsimple.be.key" +
-chown turnserver:turnserver "$DST/meet.makeitsimple.be."{crt,key} +
-systemctl restart coturn +
-</code> +
- +
-=== Option B — Laisser Jitsi gérer son propre cert === +
- +
-Si un certificat a été fourni à l'install (étape 4), le réutiliser directement dans ''turnserver.conf''. +
- +
-==== 8.3 Pointer Jitsi vers le bon port TURN ==== +
- +
-Vérifier dans ''/etc/prosody/conf.d/meet.makeitsimple.be.cfg.lua'' que le bloc ''turncredentials'' annonce le port **5349** en ''tls'' :+
  
 <code lua> <code lua>
 turncredentials = { turncredentials = {
   { type = "stun", host = "meet.makeitsimple.be", port = "3478" },   { type = "stun", host = "meet.makeitsimple.be", port = "3478" },
-  { type = "turn", host = "meet.makeitsimple.be", port = "3478", transport = "udp" }, +  { type = "turn", host = "meet.makeitsimple.be", port = "3478", transport = "udp" }
-  { type = "turns", host = "meet.makeitsimple.be", port = "5349", transport = "tcp" }+
 } }
 </code> </code>
  
-Ouvrir **3478/udp** et **5349/tcp** (+udp) de l'extérieur vers la VM.+Ouvrir **3478/udp** de l'extérieur vers la VM.
  
 <code bash> <code bash>
Ligne 208: Ligne 185:
 | 80 | tcp | Externe → VM | ACME / redirection (Caddy) | | 80 | tcp | Externe → VM | ACME / redirection (Caddy) |
 | 10000 | udp | Externe → VM | Média JVB (direct) | | 10000 | udp | Externe → VM | Média JVB (direct) |
-| 3478 | udp | Externe → VM | STUN / TURN | +| 3478 | udp | Externe → VM | STUN / TURN (relais fallback) |
-| 5349 | tcp+udp | Externe → VM | TURN over TLS (fallback corporate) |+
  
 ===== 11. Checklist de test de bout en bout ===== ===== 11. Checklist de test de bout en bout =====
Ligne 317: Ligne 293:
   - [ ] Se connecter avec un compte hôte → la salle s'ouvre.   - [ ] Se connecter avec un compte hôte → la salle s'ouvre.
   - [ ] Un second onglet anonyme rejoint la salle ouverte → accès direct sans login.   - [ ] Un second onglet anonyme rejoint la salle ouverte → accès direct sans login.
 +
 +===== 14. Cacher le formulaire de la page d'accueil =====
 +
 +Objectif : sur la racine ''meet.makeitsimple.be'', ne plus afficher le champ « nom de la salle » qui invite un passant à créer/rejoindre une réunion au hasard. Mesure **cosmétique** (elle n'empêche pas d'accéder à une salle dont on connaît l'URL — cf. mot de passe de salle / lobby pour ça), mais elle évite d'exposer le formulaire publiquement.
 +
 +Éditer ''/etc/jitsi/meet/meet.makeitsimple.be-config.js'' et ajouter (ou décommenter) :
 +
 +<code javascript>
 +// Masque la zone de saisie / le bouton de création sur la page d'accueil
 +enableWelcomePage: false,
 +</code>
 +
 +  * ''enableWelcomePage: false'' : la page d'accueil avec le formulaire ne s'affiche plus. Une salle reste accessible directement par son URL (''https://meet.makeitsimple.be/NomDeLaSalle'').
 +
 +<note tip>
 +Variante douce si tu veux garder une page d'accueil mais sans le champ de création aléatoire : conserver ''enableWelcomePage: true'' et désactiver la liste des salles récentes / le générateur de nom via ''hideAddRoomButton'' et un ''MEET_ROOM_NAME'' vide selon la version. La bascule à ''false'' reste la plus simple et la plus robuste.
 +</note>
 +
 +Rediriger éventuellement la racine vers ta vitrine (au niveau Caddy) si tu veux que ''/'' ne montre rien du tout :
 +
 +<code>
 +meet.makeitsimple.be {
 +    @root path /
 +    redir @root https://www.makeitsimple.be 302
 +
 +    handle {
 +        reverse_proxy 127.0.0.1:8000
 +    }
 +}
 +</code>
 +
 +Aucun redémarrage de service nécessaire pour ''config.js'' (rechargé côté client) ; recharger Caddy si tu ajoutes la redirection :
 +
 +<code bash>
 +systemctl reload caddy
 +</code>
 +
 +===== 15. Personnalisation (logo, taille, favicon, nom) =====
 +
 +==== 15.1 Remplacer le logo (watermark en haut à gauche) ====
 +
 +Par défaut Jitsi utilise ''/usr/share/jitsi-meet/images/watermark.svg'' (ou ''.png'' selon version).
 +
 +<code bash>
 +# Sauvegarde de l'original
 +cp /usr/share/jitsi-meet/images/watermark.svg /usr/share/jitsi-meet/images/watermark.svg.bak
 +# Déployer le logo (garder une copie source HORS du dossier packagé, cf. 15.5)
 +cp /opt/mis-branding/watermark.svg /usr/share/jitsi-meet/images/watermark.svg
 +</code>
 +
 +==== 15.2 Lien, affichage et logo par défaut ====
 +
 +Éditer ''/usr/share/jitsi-meet/interface_config.js'' :
 +
 +<code javascript>
 +var interfaceConfig = {
 +    JITSI_WATERMARK_LINK: 'https://www.makeitsimple.be',
 +    SHOW_JITSI_WATERMARK: true,
 +    DEFAULT_LOGO_URL: 'images/watermark.svg',
 +    DEFAULT_WELCOME_PAGE_LOGO_URL: 'images/watermark.svg',
 +    // ...
 +};
 +</code>
 +
 +==== 15.3 Modifier la taille du logo ====
 +
 +La taille du watermark est **contrôlée en CSS**, pas par les dimensions du fichier image. Le watermark est affiché par la classe ''.watermark .leftwatermark''.
 +
 +Créer un CSS de surcharge, ex. ''/usr/share/jitsi-meet/css/custom.css'' :
 +
 +<code css>
 +.watermark.leftwatermark {
 +    width: 160px !important;      /* défaut ~= 140px */
 +    height: 60px !important;
 +    background-size: contain !important;
 +    background-repeat: no-repeat !important;
 +}
 +</code>
 +
 +Puis référencer ce CSS dans ''/usr/share/jitsi-meet/base.html'' (juste avant ''</head>'') :
 +
 +<code html>
 +<link rel="stylesheet" href="css/custom.css">
 +</code>
 +
 +<note>
 +Ajuster ''width''/''height'' selon le ratio de ton logo. ''background-size: contain'' évite la déformation. Vider le cache navigateur pour voir le changement.
 +</note>
 +
 +==== 15.4 Favicon, nom de l'application ====
 +
 +Dans ''interface_config.js'' :
 +
 +<code javascript>
 +    APP_NAME: 'Make IT Simple Meet',
 +    NATIVE_APP_NAME: 'Make IT Simple Meet',
 +    PROVIDER_NAME: 'Make IT Simple',
 +</code>
 +
 +Favicon : remplacer ''/usr/share/jitsi-meet/images/favicon.ico''.
 +
 +<code bash>
 +cp /opt/mis-branding/favicon.ico /usr/share/jitsi-meet/images/favicon.ico
 +</code>
 +
 +==== 15.5 Préserver la personnalisation aux mises à jour ====
 +
 +<note warning>
 +''interface_config.js'', ''base.html'', ''css/'' et ''images/'' appartiennent au paquet ''jitsi-meet-web''. Un ''apt upgrade'' **peut écraser** ces fichiers. Il faut versionner tes fichiers custom et les redéployer après upgrade.
 +</note>
 +
 +Garder les sources de branding dans un dossier dédié (idéalement versionné en git) :
 +
 +<code>
 +/opt/mis-branding/
 +├── watermark.svg
 +├── favicon.ico
 +├── custom.css
 +└── redeploy.sh
 +</code>
 +
 +Script ''/opt/mis-branding/redeploy.sh'' :
 +
 +<code bash>
 +#!/bin/bash
 +set -e
 +DST=/usr/share/jitsi-meet
 +cp /opt/mis-branding/watermark.svg "$DST/images/watermark.svg"
 +cp /opt/mis-branding/favicon.ico   "$DST/images/favicon.ico"
 +cp /opt/mis-branding/custom.css    "$DST/css/custom.css"
 +
 +# Ré-injecter le lien CSS dans base.html s'il a été écrasé
 +grep -q 'css/custom.css' "$DST/base.html" || \
 +  sed -i 's#</head>#<link rel="stylesheet" href="css/custom.css">\n</head>#' "$DST/base.html"
 +
 +echo "Branding redéployé."
 +</code>
 +
 +<code bash>
 +chmod +x /opt/mis-branding/redeploy.sh
 +# À relancer après chaque mise à jour de jitsi-meet-web
 +/opt/mis-branding/redeploy.sh
 +</code>
 +
 +<note tip>
 +Aucun redémarrage de service : les fichiers sont statiques (servis par nginx → Caddy) et rechargés côté navigateur. Vider le cache pour tester.
 +</note>
  
 ===== Notes de maintenance ===== ===== Notes de maintenance =====
  
-  * **Renouvellement TLS** : le cert TURN (coturn) doit être resynchronisé après chaque renouvellement Caddy → automatiser via le script de l'étape 8.2 en cron quotidien.+  * **TURN** : configuration en TURN/UDP sans TLS (section 8) → **aucun certificat coturn à gérer ni à renouveler**. Si un client tombe sur un firewall corporate bloquant l'UDP, prévoir l'ajout d'un TURN/TLS 5349 (nécessitera alors un certificat dédié, ex. via certbot en ''webroot'' ou DNS-01, indépendant de Caddy). 
 +  * **Personnalisation** : après chaque ''apt upgrade'' de ''jitsi-meet-web'', relancer ''/opt/mis-branding/redeploy.sh'' (section 15.5) pour restaurer logo/favicon/CSS.
   * **Montée en charge** : au-delà de ~20–25 participants simultanés sur une salle, envisager un JVB supplémentaire (scaling horizontal).   * **Montée en charge** : au-delà de ~20–25 participants simultanés sur une salle, envisager un JVB supplémentaire (scaling horizontal).
   * **Mises à jour** : ''apt update && apt upgrade'' — les paquets Jitsi sont mis à jour régulièrement, tester après upgrade majeur.   * **Mises à jour** : ''apt update && apt upgrade'' — les paquets Jitsi sont mis à jour régulièrement, tester après upgrade majeur.
linux/jitsi.1788753509.txt.gz · Dernière modification : de root