Bonjour à tous,
Je rencontre un problème spécifique où les vidéos de plus de 5 Mo ne parviennent pas à générer d’aperçus Onebox sur mon instance Discourse (installation Docker standard), alors que les mêmes liens vidéo fonctionnent parfaitement sur d’autres sites Discourse.
Le Problème :
Lorsque je publie un lien vidéo (par exemple, un fichier .webm de 5,1 Mo), le Onebox échoue. J’ai isolé le problème à un échec dans la négociation de la requête Range.
Résultats du débogage depuis la console Rails :
- Test Ruby Manuel (Succès) : En utilisant
Net::HTTPstandard et en définissant manuellement l’en-têteRange: bytes=0-10, j’obtiens avec succès un 206 Partial Content du serveur source. - Test Système Discourse (Échec) : Lorsque Discourse tente de récupérer la même URL via
FinalDestination.new(url).get, il reçoit un 200 OK (Net::HTTPOK) au lieu d’un 206. Par conséquent, il tente de télécharger le fichier entier, atteint la limite de 5 Mo deMAX_REQUEST_SIZE_BYTES, et le Onebox échoue avec une erreur de “taille trop grande”.
J’ai déjà testé les configurations suivantes, mais le problème persiste :
- Définir une chaîne de type navigateur dans
onebox_user_agent. - Ajouter le domaine source à
force_custom_user_agent_hosts. - Vérifier qu’aucun proxy global n’est configuré sur le serveur (
env | grep -i proxyest vide). - Tester la même URL sur d’autres instances Discourse, où elle génère parfaitement un Onebox.
La Question :
Pourquoi une instance Discourse échouerait-elle à négocier une requête Range (206) alors qu’une autre instance, pointant vers l’URL exacte, réussit sur le même réseau ?
Y a-t-il une configuration interne spécifique, un middleware de sécurité ou une logique FinalDestination qui pourrait supprimer les en-têtes Range ou amener le serveur distant à revenir à une réponse 200 complète ?
Toute information ou indication sur la prochaine étape à suivre serait grandement appréciée !