ajoute le relais TURN sur 443 pour la visio (ADR 0006), avec coturn et le routage Nginx par nom

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Adam Belkacemi 2026-10-13 11:45:53 +02:00
parent ee079ddffb
commit 45f8a69e26
19 changed files with 457 additions and 14 deletions

View file

@ -3,6 +3,12 @@
visio_version: stable-11248
visio_domaine: meet.syllabuslab.fr
visio_dossier: /opt/visio
# Bloc A (ADR 0006) : relais TURN sur 443, activé seulement si le rôle `turn`
# est déjà passé sur ce serveur (son secret existe). Nom dupliqué depuis
# `portail_domaine_turn`/`turn_domaine_certificat`, pour que `visio` reste
# autonome (même principe que pour `turn_domaine_certificat`).
visio_domaine_turn: turn.syllabuslab.fr
visio_turn_secret_fichier: /etc/turnserver-secret
visio_port_web: 8090
visio_ip_publique: 163.172.4.195
visio_port_media: 10000

View file

@ -45,6 +45,33 @@
JWT_APP_SECRET={{ lookup('community.general.random_string', length=64, special=false) }}
no_log: true
# Bloc A (ADR 0006) : le relais TURN est un rôle à part (coturn, pas
# Docker) ; ici on se contente de lire s'il existe déjà et de transmettre
# son secret à Prosody — jamais l'inverse (le rôle turn ne connaît pas la visio).
- name: vérifier si le relais TURN est déjà configuré sur ce serveur
ansible.builtin.stat:
path: "{{ visio_turn_secret_fichier }}"
register: visio_turn_secret_stat
- name: noter si le relais TURN peut être annoncé aux participants
ansible.builtin.set_fact:
visio_turn_actif: "{{ visio_turn_secret_stat.stat.exists }}"
- name: lire le secret du relais TURN
ansible.builtin.slurp:
src: "{{ visio_turn_secret_fichier }}"
register: visio_turn_secret_lu
when: visio_turn_actif
no_log: true
- name: transmettre le secret du relais TURN à Prosody
ansible.builtin.lineinfile:
path: /etc/visio/secrets.env
regexp: "^TURN_CREDENTIALS="
line: "TURN_CREDENTIALS={{ visio_turn_secret_lu.content | b64decode | trim }}"
when: visio_turn_actif
no_log: true
- name: déployer la configuration de la visio
ansible.builtin.template:
src: visio.env.j2

View file

@ -40,5 +40,17 @@ TOOLBAR_BUTTONS=microphone,camera,desktop,raisehand,participants-pane,tileview,s
JVB_ADVERTISE_IPS={{ visio_ip_publique }}
JVB_PORT={{ visio_port_media }}
{% if visio_turn_actif | default(false) %}
# Bloc A (ADR 0006) : relais TURN sur 443 pour les réseaux scolaires qui
# bloquent l'UDP. Prosody calcule lui-même, pour chaque participant, un
# couple nom d'utilisateur/mot de passe valable 24 h (TURN_CREDENTIALS,
# secret partagé avec coturn — dans secrets.env, jamais ici). Lu directement
# dans prosody.cfg.lua (confirmé dans le fichier source de l'image, pas
# deviné) : aucun module ni plugin personnalisé à écrire.
TURNS_HOST={{ visio_domaine_turn }}
TURNS_PORT=443
TURN_TTL=86400
{% endif %}
VIDEOBRIDGE_MAX_MEMORY={{ visio_memoire_jvb }}
JICOFO_MAX_MEMORY={{ visio_memoire_jicofo }}