Upload de gros fichiers vidéos sur une instance Peertube
Par makoto doushite le samedi, 8 décembre 2018, 13:45 - Auto-Hébergement internet - Lien permanent
Quand on lit la documentation où les issues « Github » de Peertube, Chocobozzz nous indique clairement qu'il fût un temps révolu où la taille maximale d'une vidéo accepté par Peertube était de 4Gio, mais que maintenant c'est bien 8Gio qu'il est possible d'envoyer.
- Pour le vérifier, sous Yunohost il suffit d'aller voir le fichier de config nginx dédié :
cat /etc/nginx/conf.d/peertube.makotoworkshop.org.d/peertube.conf
Et de retrouver l'information spécifiée ici :
# Hard limit, PeerTube does not support videos > 8GB client_max_body_size 8G; proxy_connect_timeout 600; proxy_send_timeout 600; proxy_read_timeout 600; send_timeout 600;
- Et pourtant, j'ai voulu uploader une vidéo de 5,2Gio, et de recevoir l'erreur « 500 Internal Server Error », délivrée par nginx
- Comme il faut toujours penser à aller voir les logs, voici ce qu'indique ce dernier > /var/log/nginx/peertube.makotoworkshop.org-error.log
2018/12/08 11:54:07 [crit] 16767#16767: *330304 pwrite() "/var/lib/nginx/body/0000032486" failed (28: No space left on device),
Visiblement le fichier vidéo est uploadé depuis mon ordi de bureau sur le serveur, dans le dossier /var/lib/nginx/body/, et si on regarde l'espace libre sur le disque, on se rend compte effectivement que ça risque pas de marcher :
Sys. de fichiers Taille Utilisé Dispo Uti% Monté sur /dev/sda1 11G 7,1G 3,5G 68% /
Pour vérifier, j'ai ré-uploadé la vidéo et tenté de regarder en même temps dans le dossier /var/lib/nginx/body/, mais rien n’apparaît.
Pour voir quelque chose, il faut observer le démon nginx, en répérant tout d'abord son pid.
- Donc durant d'upload, faire un top et relever le pid nginx au sommet de la liste, par exemple :
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 16767 www-data 20 0 345480 9472 4272 S 1,3 0,5 13:07.85 nginx
- Taper ensuite :
lsof -p 16767 | grep /var/lib/nginx/body/
Qui renvoie l'état de l'upload :
nginx 16767 www-data 85u REG 8,1 3180183973 4917 /var/lib/nginx/body/0000032604 (deleted)
Jusqu'au dernier morceau, puis plus rien, le fichier à disparu, et le message d'erreur à retenti.
lsof -p 16767 | grep /var/lib nginx 16767 www-data 85u REG 8,1 3655360512 4917 /var/lib/nginx/body/0000032604 (deleted)
On voit que la taille 3655360512 arrondis en Gio donne 3,4 Gio, ce qui correspond à l'espace libre de la partition indiqué plus haut.
C'est donc confirmé, le problème à bien pour solution l'attribution de suffisamment d'espace disque libre pour permettre à ce cache de pouvoir se faire normalement.
- Pour cela on édite la configuration nginx :
nano /etc/nginx/conf.d/peertube.makotoworkshop.org.d/peertube.conf
Pour ajouter à la fin un dossier situé sur un disque contenant suffisamment d'espace, donc au moins 8Gio :
client_body_temp_path /home/yunohost.app/peertube/storage/uploads;
Et redémarrer les serveurs pour prendre en compte ce changement :
service peertube restart service nginx restart
- Pour confirmer, refaire la manipulation précédente, en regardant cette fois le nouveau chemin :
lsof -p 28744 | grep /home/yunohost.app/peertube/storage/uploads
Qui renvoie alors, une fois le fichier totalement uploadé :
nginx 28744 www-data 67u REG 8,3 5219139353 25953028 /home/yunohost.app/peertube/storage/uploads/0000000004 (deleted)
On a bien les 5,2Gio.
Peertube passe donc de la phase « Upload 100% » à la phase « Processing…», et durant ce temps la vidéo reste présente dans le dossier temporaire.
Puis Peertube passe en phase d'encodage, et le fichier est alors supprimé du dossier, la commande lsof ne renvoie plus rien.
Ressources :
- https://github.com/Chocobozzz/PeerTube/issues/1359
- https://github.com/Chocobozzz/PeerTube/issues/1423
Commentaires
Salut Makoto,
Je vois que c'est le deuxième article où tu parles de Yunohost et j'aurais aimé savoir si tu avais basculé ton auto-hébergement sur Yunohost ?
Perso je commence à utiliser Peertube, j'avais commencé l'auto-hebergement en lisant ton blog, voila si tu voulais faire un article sur les nouveautés (s'il y en a) concernant ton auto-hébergement.
En tous cas chapeau pour tes articles toujours aussi détaillés.
A+
Élo !
Et bien oui je suis passé à Yunohost depuis la Beta 3.0 et je dois dire que j'en suis très satisfait !
Il y a près de dix ans j'avais tout fait à la main non seulement car de tels types d'outils n'existaient pas vraiment mais surtout avec la volonté de comprendre comment l'hébergement Web fonctionne en détail.
Avec Yunohost, après une prise en main très rapide, j'ai pu installer mon serveur sans quasi toucher à la ligne de commande ( sauf personnalisation extrême ou bug applicatif ) en un temps record.
C'est un véritable « clicodrôme », il n'y a pas grand chose à dire qui ne soit évident, raison pour laquelle je n'ai pas prévu l'écrire sur le sujet.
La plupart du temps, il suffit par exemple de désirer une appli (peertube ? piwigo ? netdata ?) de constater si elle est présente et en status « working » dans la liste des app communautaires ou officielle, de cliquer install… et « Voilà ».
Merci de me lire