Jitsi (docker-jitsi-meet, version figée) derrière Nginx sur meet.syllabuslab.fr, accès par jeton JWT signé par le portail, modération du micro, mains levées synchronisées avec l'application. Pare-feu : UDP 10000 et pont interne br-visio (accords d'Adam). Jicofo n'authentifie plus lui-même : il donnait le rôle de propriétaire aux élèves. Capacité ramenée à 20 VM. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2.7 KiB
2.7 KiB
Runbook — Visio de classe (Jitsi, étape 15)
Décisions : ADR 0005.
Où sont les choses
| Élément | Emplacement |
|---|---|
| Conteneurs (web, prosody, jicofo, jvb) | /opt/visio/docker-compose.yml, projet Docker visio (rôle visio) |
| Configuration (sans secret) | /etc/visio/visio.env (modèle ansible/roles/visio/templates/visio.env.j2) |
| Secrets (mots de passe internes, secret des jetons) | /etc/visio/secrets.env, 600 root:root, générés une fois ; VISIO_JWT_SECRET copié dans le .env du portail |
| Site public | https://meet.syllabuslab.fr (vhost du rôle portail, activé quand le DNS répond) |
| Pare-feu | UDP 10000 ouvert ; pont br-visio autorisé en forward (rôle durcissement) |
| Portail | VisioController, JetonVisio, vues seances/visio-prof et seances/visio-eleve |
| Test réel | portail/tests/Reels/preparer-visio.php + visio-e2e.mjs (Playwright) |
Déployer
cd ansible && ansible-playbook visio.yml -i inventory.ini
Le rôle vérifie que Jitsi web répond, que JVB écoute l'UDP 10000, et que Jicofo voit un JVB opérationnel (preuve que les services se parlent).
Vérifier
D="sudo docker compose -p visio -f /opt/visio/docker-compose.yml"
$D ps
$D exec -T jicofo curl -s http://127.0.0.1:8888/stats | python3 -m json.tool | grep -E "operational_bridge_count|conferences"
$D logs --since 10m jicofo | grep -E "Member joined|Setting whitelist|Moderation for"
Attendu dans les journaux de Jicofo : le prof role=OWNER, les élèves
role=PARTICIPANT ; la liste des autorisés à parler ne contient que le prof,
puis chaque élève au moment où il reçoit la parole. Si un élève y apparaît dès
son arrivée, Jicofo a repris l'authentification : vérifier JICOFO_ENABLE_AUTH=0.
Test de bout en bout (navigateurs)
- Sur le serveur :
sudo -u www-data HOME=/tmp php8.3 artisan tinker /var/www/portail/tests/Reels/preparer-visio.php < /dev/null(le< /dev/nullévite que Tinker reste ouvert en attente d'une saisie). - Sur le Mac : récupérer
/tmp/visio-identifiants.json(fichier600), puisnode visio-e2e.mjs identifiants.json(Playwright, Chromium). - Supprimer les données et fichiers de test.
Pièges rencontrés
- Conteneurs refusant de démarrer : leurs volumes doivent appartenir à l'uid 1000.
- Conteneurs qui ne se joignent pas :
br_netfilter+ politiqueforward drop(règlebr-visio). - Jicofo ne se reconnecte pas tout seul après une longue indisponibilité de Prosody :
$D restart jicofo. - Élèves modérateurs malgré
token_affiliation:JICOFO_ENABLE_AUTH=0obligatoire. Permissions-Policytrop stricte (caméra interdite) ouX-Frame-Options DENY: la visio ne s'affiche pas sans erreur visible.