Paillasse/docs/dette.md
Adam Belkacemi ec4eae3744 ajoute la visio de classe : Jitsi auto-hébergé, jetons du portail, prof seul modérateur
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>
2026-10-12 12:35:35 +02:00

5.7 KiB

Dette technique

Ce qui est connu, accepté pour l'instant, et à traiter. Une ligne par sujet ; retirer la ligne (et le noter dans le journal) quand c'est fait.

Sujet Pourquoi c'est une dette Quand Origine
Image Uptime Kuma non figée (louislam/uptime-kuma:1) Une version différente peut arriver à n'importe quel redéploiement, sans test. Figer un tag précis (voire le digest) dans une variable du rôle supervision, et documenter la mise à jour par Ansible (changer la variable, relancer le rôle, vérifier) — jamais par le bouton de l'interface. Kuma lui-même qualifie ce tag d'« historique » (il injecte docker-latest-warning.js dans les images latest/1, constaté le 2026-10-09) : prévoir la migration vers un tag versionné, en testant la page de statut et les sondes. Avant le pilote Demande d'Adam, 2026-10-09
Base de données d'OpenStack non sauvegardée (MariaDB de Kolla : Keystone, Nova, Neutron, Heat, Placement) Seule la base du portail l'est. Une perte de ce serveur oblige à recréer projet, compte de service, gabarits, et perd les stacks en cours. Kolla fournit kolla-ansible mariadb_backup : l'intégrer à la sauvegarde quotidienne et au test de restauration. Avant le pilote Étape 13
Projet paillasse, compte paillasse-service et son rôle créés à la main (étape 6) Pas rejouables par Ansible (gabarit et quota le sont depuis l'étape 13, rôle openstack-projet). Bloc B Étape 6
Clé age des sauvegardes : copie hors du serveur non confirmée Sans elle, aucune sauvegarde n'est déchiffrable si le serveur est perdu (voir docs/runbooks/sauvegardes.md). Adam doit confirmer l'avoir mise en lieu sûr. Dès que possible Étape 3
Larastan (PHPStan niveau 6) absent Exigé par le CLAUDE.md depuis l'étape 8, jamais installé. Bloc B Étape 8
Vitrine : Tailwind par CDN d'exécution (cdn.tailwindcss.com, 19 pages) Non destiné à la production selon Tailwind, lent, et oblige la vitrine à tolérer les scripts en ligne dans sa CSP. Compiler ces styles avec Vite. Avant ouverture publique Étape 12 (design)
Vitrine : 52 scripts en ligne ; Pyodide et sql.js depuis jsDelivr (/ide) ; vidéo YouTube possible (/cours/…/cm) CSP vitrine avec 'unsafe-inline' ; tiers déclarés dans /confidentialite. Polices, xterm.js et CodeMirror sont auto-hébergés depuis l'étape 14. Héberger Pyodide/sql.js, passer les scripts en fichiers. Avant ouverture publique Étapes 12 et 14
xterm.js 5.5.0 (6.0.0 disponible) Version majeure à évaluer séparément. Bloc B Étape 12
NodeSource installé par curl … | bash Script distant exécuté en root au premier déploiement. Déclarer le dépôt (deb822) avec une clé vérifiée. Bloc B Étape 8
Aucune vérification dans un vrai navigateur Extension Chrome non connectée (étapes 8, 12 et 14). La CSP n'est contrôlée que par ses rapports. Adam a testé /ide le 2026-10-09 (erreurs corrigées) ; à revérifier : exécution Python et SQL de /ide, pages vitrine utilisant xterm.js/CodeMirror servis par le portail. Dès que possible Étapes 8, 12, 14
Pas de sonde hors du serveur Si le serveur tombe, personne n'est prévenu. À décider avec Adam Étape 7
Kolla installé depuis une branche, pas un tag Reproductibilité. Montée de version ADR 0001
Correction séquentielle (~5 s pour le lab 08) Acceptable ; à paralléliser si la charge l'exige. Bloc B Étape 11
Jeton de console : ≈ 1,1 s par appel Nova remote-consoles Plus gros poste de l'ouverture d'un lab (2,8 s au total, critère < 5 s tenu). Préparer les jetons à l'attribution si besoin. Bloc B Étape 13
Tâches Ansible toujours « modifiées » (composer, npm, build, cache) Brouille la lecture de l'idempotence. Bloc B Étape 8
Mentions légales à compléter Article « Disponibilité et responsabilité » des CGU ; délégué à la protection des données s'il en est désigné (éditeur, SIREN et adresse complétés le 2026-10-09). Avant le pilote Étape 14
Slogans « du lycée au master » Le catalogue va aujourd'hui du lycée au BUT. Positionnement laissé tel quel : décision éditoriale d'Adam. À décider Étape 14
Ancien storage/logs/laravel.log Fichier unique d'avant la rotation quotidienne (étape 14) : jamais purgé, à supprimer ou archiver (accord d'Adam). Dès que possible Étape 14
Pages d'aperçu publiques (32) Signalées comme aperçus avec données fictives ; à retirer ou remplacer au fur et à mesure que les fonctions réelles arrivent. Au fil du bloc B Étape 14
Invitation des élèves majeurs par e-mail (V2 du CLAUDE.md) Demande un service d'envoi d'e-mails (compte ouvert par Adam, DNS SPF/DKIM). Jamais pour les mineurs. V2 2026-10-09
Code de classe : caractères ambigus Généré avec Str::random (0/O, 1/I/l possibles), contrairement aux codes élèves. Utiliser le même alphabet sans ambiguïté. Bloc B 2026-10-09
Visio : pas de relais TURN sur 443 Les réseaux scolaires qui bloquent l'UDP n'auront ni son ni image (CLAUDE.md : tout par 443). Restructurer l'entrée HTTPS (aiguillage Nginx par nom) + coturn ; demande un nom DNS (turn.syllabuslab.fr). Avant le pilote Étape 15
Visio : chat activé à chaud non vérifié L'interrupteur « Chat des élèves » change la barre d'outils par overwriteConfig ; non vérifié en navigateur. Vue mobile de la maquette non reprise (la page élève est simplement adaptative). Bloc B Étape 15
Image Jitsi figée sans procédure de mise à jour stable-11248 : comme pour Kuma, prévoir la montée de version par Ansible (variable visio_version) et rejouer visio-e2e.mjs. Bloc B Étape 15