Skip to main content

260914-les films de la Seedbox sur le Kdrive et indexation automatique Jellyfin

Mise en place le 14/09/2026. Scripts et README dans Jux-scripts/Seedbox-Films/ (arbre Syncthing). Tableau de bord : ligne « Seedbox » du tableau des procédures en pied de la veille du jour, et sonde « Seedbox-Films » des tâches nocturnes.

Le besoin, et ce qui a été écarté

Faire passer un film de la seedbox (pool372.seedbox.fr, accessible en WebDAV — c'est un Nextcloud) jusqu'à Jellyfin, sans le faire transiter par le PC, et que Jellyfin l'indexe tout seul.

  • FileZilla, l'idée de départ : impossible. La version gratuite ne parle pas WebDAV (FTP/SFTP seulement) et, même en Pro, FileZilla ne fait jamais de transfert serveur → serveur : tout octet passe par le PC, deux fois le volume sur la ligne, PC allumé. Le mode direct FXP est propre au FTP et FileZilla ne l'a jamais implémenté.
  • Un « dossier film du VPS » : le VPS n'a que 22 Go libres sur 99 (78 %) et aucune bibliothèque Jellyfin n'y vit — les 15 lisent toutes kDrive via /mnt/nas_videos depuis la bascule du 30/08. Cinq films et le disque était plein, BookStack avec.
  • Le streaming direct depuis la seedbox (montage rclone de son WebDAV dans Jellyfin) : techniquement possible, Nextcloud gère les requêtes par plage. Mais la seedbox est un espace de transit : le film disparaîtrait de Jellyfin — historique de visionnage compris — le jour du ménage. Écarté, la copie vers kDrive reste la voie durable.

Retenu : rclone sur le VPS, seedbox déclarée comme second remote à côté de kdrive. Le VPS pilote, mais le flux WebDAV de la seedbox est réécrit tel quel dans le flux WebDAV de kDrive — le disque du VPS n'est pas touché. La seedbox et kDrive restent « deux mondes » : le seul point de contact est le dossier FILMS de l'une vers le dossier movies de l'autre.

Le circuit

seedbox (WebDAV Nextcloud)            kDrive (WebDAV)                    VPS
Seedbox/FILMS/*.mkv  --rclone copy-->  Videos_NAS/video/movies  --FUSE-->  /mnt/nas_videos/video/movies
                                       (id 1482703)                        = /data/movies dans Jellyfin
                                                                           bibliothèque « Films récents »

Un film terminé sur la seedbox est dans Jellyfin 5 à 11 minutes plus tard : jusqu'à 5 min pour qu'il soit tenu pour stable, jusqu'à 5 min avant le passage du cron, ~1 min de copie par film, ~30 s de scan.

Ce que fait seedbox_films.sh (cron VPS toutes les 5 min)

  1. Verrou par PID — un double lancement copierait deux fois les mêmes fichiers.
  2. Liste la seedbox (rclone lsjson) : c'est la seule source de vérité (voir le piège kDrive ci-dessous).
  3. Retient ce qui est présent sur la seedbox, stable depuis 5 min, et absent de sa mémoire (/home/debian/.seedbox_films.copies, une ligne taille ⇥ nom par fichier copié). Exclut *.part, *.!qB, *.aria2 et les dossiers cachés. Rien à faire → sort en silence, le journal ne grossit que quand il se passe quelque chose.
  4. Vérifie que kDrive répond, puis rclone copy --files-from-raw vers kdrive:…/Videos_NAS/video/movies, en --size-only (le WebDAV kDrive n'expose ni hash ni date). copy, jamais sync : la seedbox n'est jamais modifiée, et une suppression sur la seedbox ne supprime rien sur kDrive.
  5. Si la copie a réussi, les fichiers entrent en mémoire, puis :
    • rclone rc vfs/refresh dir=video/movies sur le montage kdrive-video (port 5578). Sans cela le montage garde son listing 72 h et Jellyfin ne voit rien — le même piège que Komga (page 168) ;
    • POST /Items/{id}/Refresh sur la seule bibliothèque « Films récents » (a8c97a7ab1c7545488876ca753a24ab3), avec une clé API Jellyfin dédiée seedbox-films — pas un scan général des 15 bibliothèques sur kDrive.
  6. Si la copie a échoué : rien n'entre en mémoire, tout est retenté au passage suivant.

--simulation passe --dry-run à rclone et s'arrête avant la mémoire et le rafraîchissement.

Première exécution — 14/09/2026

ÉtapeMesure
Copie seedbox → kDrive7 films, 13,4 Gio en 196 s (~73 Mo/s), disque du VPS intact
Rafraîchissement du montage3 s
Scan Jellyfin30 s plus tard, .nfo, affiches, fonds et logos produits pour 6 films sur 7
IdentificationLa Corde au cou (Dead Man's Wire), Dreams, Michael, La Vallée des fous, Que la bête meure, Vivaldi et moi (Primavera) — et un raté : The.Mandalorian.And.Grogu.2026.Multi.Truefrench.Imax.WEBRIP.mp4, resté sous son nom brut (trop de jetons après l'année). À identifier à la main, ou nommer Titre (Année).ext sur la seedbox avant copie

Pièges rencontrés — à ne pas redécouvrir

  • ⚠ kDrive met plusieurs minutes à lister un gros fichier frais en WebDAV. Première version du script : un rclone copy classique, qui compare source et destination. Le passage suivant a recopié 5 films sur 7 — 10 Gio, 143 s — copiés 3 à 5 min plus tôt : kDrive ne les listait pas encore (à 8 min, rclone check donnait 0 différence ; retard d'indexation, pas perte). Avec un cron toutes les 5 min, chaque film aurait été copié deux fois. D'où la mémoire locale des copies : le script ne demande plus à kDrive ce qu'il possède. Conséquence à connaître : un film supprimé sur kDrive mais toujours dans FILMS n'est pas recopié — retirer sa ligne de .seedbox_films.copies pour le ravoir. La mémoire se purge seule des fichiers retirés de la seedbox, et un fichier remplacé par une version de taille différente est recopié (clé = taille + nom).
  • La racine WebDAV de la seedbox ne contient que Seedbox/ : le dossier est Seedbox/FILMS, pas FILMS.
  • rclone 1.74 dit « Skipped copy as --dry-run is set », plus « Not copying » : un comptage sur l'ancien motif fait croire à une simulation vide.
  • grep -c renvoie 1 quand il ne trouve rien — || true derrière, toujours.
  • Trois noms pour la même chose : dossier kDrive movies (id 1482703), bind Jellyfin /data/movies, bibliothèque « Films récents ».
  • Le garde-fou de session Claude Code a refusé de faire transiter le mot de passe de la seedbox dans une commande — heureusement : Julien l'a posé lui-même par rclone config password seedbox pass '…', depuis sa console, en 30 secondes. Voir Sécurité.

Où sont les choses sur le VPS

QuoiOù
Script (propagé par Syncthing)/home/debian/Documents/Jux_univers/Jux-scripts/Seedbox-Films/seedbox_films.sh
Cron*/5 * * * *, crontab de debian (sauvegarde crontab.bak-260914)
Journal/home/debian/logs/seedbox_films.log (+ seedbox_films.cron.log, sortie brute)
Mémoire des copies/home/debian/.seedbox_films.copies, amorcée le 14/09 avec les 7 premiers films
Secrets/home/debian/.seedbox_films.env (chmod 600, hors Syncthing) : clé API Jellyfin, id de la bibliothèque, mot de passe RC du montage video
Remote rclone seedbox/home/debian/.config/rclone/rclone.conf (sauvegarde .bak-260914) — type = webdav, vendor = nextcloud, url = https://pool372.seedbox.fr/files/remote.php/dav/files/seedbox4f65a4ad8f8a0

Sécurité — le mot de passe de la seedbox

Il n'existe qu'à un seul endroit : rclone.conf du VPS, obscurci, permissions 600. Consigne explicite de Julien : il n'est ni dans CLAUDE.md, ni dans le README, ni dans cette page, ni dans la mémoire de Claude — contrairement aux autres identifiants de l'infrastructure. Il a été saisi par Julien depuis sa propre console. S'il change : rclone config password seedbox pass 'nouveau' sur le VPS, à taper par Julien.

Canari du matin

Deux entrées ajoutées le 14/09 dans Jux-scripts/Etat-Infra/ :

  • config.json, bloc journaux : sonde « Seedbox-Films », alerte sur ERREUR|AVERTISSEMENT parmi les 60 dernières lignes datées de moins de 24 h (erreur_heures, nouveau), et sans max_heures : ce journal est muet quand rien n'est à copier, un silence n'est pas une panne. max_heures est devenu facultatif dans etat_infra.py pour ce cas (sauvegarde .bak-260914).
  • procedures.json : ligne « Seedbox → kDrive movies → Jellyfin », dernière copie lue sur le motif fichier(s) copie(s) en, sans cadence — « OK — à la demande ».

Lecture : ERREUR : seedbox injoignable toutes les 5 min = mot de passe changé ou seedbox arrêtée ; AVERTISSEMENT : vfs/refresh a echoue = montage kdrive-video mort, monitor-rclone.sh s'en occupe.

Débits mesurés

TrajetDébit
seedbox.fr → kDrive, piloté par le VPS, 2 flux~73 Mo/s (13,4 Gio en 196 s ; 10 Gio en 143 s)
kDrive → conteneur Jellyfin (mesure du 30/08)65,6 Mo/s
Pour mémoire : ce qu'aurait fait FileZilla2 × le volume sur la ligne Orange du PC

Non fait, à décider

  • Déclenchement à l'événement plutôt qu'au sondage. Le VPS ne peut pas être notifié par WebDAV. L'événement « téléchargement terminé » existe côté seedbox : le crochet « exécuter une commande à la fin » du client torrent (ruTorrent, qBittorrent, Deluge…) appellerait une URL du VPS (nginx, chemin secret, jeton) qui pose un drapeau lu par un systemd.path. Le délai tomberait à la seule durée de la copie, et les 5 min de stabilité disparaîtraient — le client sait, lui, que le fichier est complet. Les identifiants kDrive ne quitteraient pas le VPS. Il faut savoir quel client torrent la seedbox propose et si ce réglage est accessible.
  • Ménage de la seedbox : rien ne supprime les fichiers copiés. Julien vide FILMS quand il veut ; rien ne bouge sur kDrive.
  • Renommer les fichiers en Titre (Année).ext sur la seedbox avant copie, pour que Jellyfin identifie tout du premier coup.