+14
−7
+30
−0
Loading
Plus de profil « complet » à connaître : « pnpm demarrer » lève PostgreSQL, Redis, MinIO, LiveKit, egress et ClamAV. Le script prépare aussi .env — il le crée s'il manque, ajoute les clés apparues depuis, et tire au sort les secrets sans jamais toucher à une valeur déjà renseignée. Les livrer en clair dans le dépôt donnerait à chaque instance auto-hébergée les mêmes clés que toutes les autres. Un secret publié n'est pas un secret, et celui de LiveKit ouvre les salles de crise. Trois défauts que seules les vraies briques pouvaient révéler L'octet nul. ClamAV termine sa réponse INSTREAM par un octet nul, que PostgreSQL refuse dans du texte, JSON compris. L'insertion de l'événement échouait, donc le dépôt entier : avec un analyseur réel branché, plus aucun document ne se déposait. Le nettoyage se fait au point de passage unique plutôt que chez l'appelant — l'octet nul ne peut de toute façon exister nulle part dans cette base, et le laisser passer ne ferait que déplacer l'échec. Trois garanties de plus, dont la chaîne d'empreintes après nettoyage. Deux adresses pour un serveur média. « LIVEKIT_URL » est celle que compose le navigateur ; le serveur, lui, doit joindre « livekit:7880 » — « localhost » vu du conteneur applicatif le désigne lui-même. L'API média répondait ECONNREFUSED, que l'interface traduisait en diagnostic réseau, envoyant chercher une panne de pare-feu inexistante. D'où « LIVEKIT_URL_INTERNE ». Le micro faisait échouer l'appel. Il était activé dans le même « try » que la connexion : un poste sans micro, ou un navigateur où l'utilisateur a refusé l'accès, perdait l'appel entier et s'entendait répondre que le serveur média était injoignable. Connecté d'abord, micro ensuite : refus et absence sont distingués, et l'appel tient. Quelqu'un qui ne peut pas parler peut encore écouter, ce qui pendant une crise vaut beaucoup mieux que rien. Perdre un appel n'est pas ne jamais l'avoir joint Le premier cas met en cause le chemin média — UDP filtré, réseau qui bascule ; le second, l'accès au serveur. Le panneau les distingue désormais, parce que les confondre fait chercher la panne au mauvais endroit. Deux contraintes assumées ClamAV n'est publié qu'en amd64 : sur Apple Silicon, Docker l'émule. C'est délibérément l'image officielle — confier l'analyse antivirale d'un outil de crise à un portage qu'on ne sait pas qui construit déplacerait le problème. LiveKit refuse de démarrer avec « localhost » comme domaine TURN, et le TLS réclame un certificat. Le relais est donc en UDP seul en local ; la configuration de production, sur 443, est documentée dans livekit.yaml. 483 → 486 garanties. Éprouvé contre les vraies briques : ClamAV distingue une pièce saine d'une pièce vérolée dans un salon, LiveKit crée la salle, émet le jeton et enregistre le participant. Le flux audio et vidéo lui-même n'est pas validé : le navigateur de contrôle bloque le micro et filtre l'UDP. La signalisation va de bout en bout, le média reste à confirmer dans un vrai navigateur. Signed-off-by:Kourser <contact@kourser.bzh> Co-Authored-By:
Claude Opus 5 <noreply@anthropic.com>