14_Jellyfin
jellyfin
The Free Software Media System
| Image | jellyfin/jellyfin:latest |
|---|---|
| Version | 10.10.7 |
| Etat | Up 9 hours (healthy) |
| Compose project | jellyfin |
| Reseau | host |
| URL | https://jellyfin.juxjux.ovh |
| Source | https://github.com/jellyfin/jellyfin-packaging |
Volumes
| Source (hote) | Destination | Type | Mode |
|---|---|---|---|
/mnt/nas_videos/movies | /data/movies | bind | rw |
/mnt/nas_videos/palettes | /data/palettes | bind | rw |
/home/debian/jellyfin/config | /config | bind | rw |
/mnt/nas_videos/cinema_europe | /data/cinema_europe | bind | rw |
/mnt/nas_videos/cinema_UK | /data/cinema_uk | bind | rw |
/mnt/nas_videos/spectacles | /data/spectacles | bind | rw |
| /cache | volume | rw |
/mnt/nas_videos/animes | /data/animes | bind | rw |
/mnt/nas_videos/cinema_asie | /data/cinema_asie | bind | rw |
/mnt/nas_videos/cinema_realisateurs | /data/cinema_realisateurs | bind | rw |
/mnt/nas_videos/fantastique_et_SF | /data/fantastique_et_SF | bind | rw |
/mnt/nas_videos/historiques | /data/historiques | bind | rw |
/mnt/nas_videos/series | /data/series | bind | rw |
/mnt/nas_videos/cinema_italie | /data/cinema_italie | bind | rw |
/mnt/nas_videos/culture_cuisine | /data/culture_cuisine | bind | rw |
/mnt/nas_videos/documentaires | /data/documentaires | bind | rw |
Integration Claude Code — MCP
| Statut MCP | MCP actif |
|---|---|
| Outils (prefix) | mcp__jellyfin__ |
| Configuration | Script Python : C:\Users\eliob\.claude\mcp_jellyfin.py | Auth : JWT MediaBrowser Token via POST /Users/AuthenticateByName |
Outils disponibles
get_librariesget_itemsget_itemget_recently_addedget_resume_itemsget_sessionsget_usersget_server_infoscan_librarysearch_items
Ce que nous pouvons faire ensemble
- Parcourir films, séries et musiques de la médiathèque
- Voir les ajouts récents et les éléments en cours de lecture
- Surveiller les sessions actives (qui lit quoi en ce moment)
- Déclencher un scan de bibliothèque après ajout de contenu
- Rechercher un titre dans toute la médiathèque
260830 - Lecture des flux vidéos Jellyfin à partir de kDrive
Statut : à exécuter. Cette procédure ne peut démarrer qu'une fois la copie des 694 Go terminée et vérifiée par téléchargement intégral — voir la procédure « 260830 - Basculement des vidéos de SASNEXTE vers kDrive ».
Ne pas basculer le montage tant que le dossier kDrive est incomplet : Jellyfin verrait une médiathèque tronquée et supprimerait en masse des éléments de sa base.
Pourquoi la bascule améliore la lecture
Mesuré le 2026-08-30 : le CIFS actuel via WireGuard plafonne à 5,0 Mo/s (40 Mbit/s) — suffisant pour un 1080p courant, juste pour un remux, et incompatible avec deux flux simultanés. Depuis kDrive, le VPS descend à 97,6 Mo/s (780 Mbit/s). Le goulot était le tunnel depuis Toulon, pas kDrive.
Quatre constats relevés sur l'installation actuelle
:shared. Le correctif de propagation du 2026-06-08 a couvert FileBrowser, Navidrome, Komga, Audiobookshelf, Kavita, calibre-web et Immich — Jellyfin est passé au travers, parce qu'il était en CIFS et pas en rclone. Dès qu'il lira du FUSE, tout redémarrage du service rclone lui coupera l'accès avec le transport endpoint is not connected habituel.
EnableRealtimeMonitor=True sur 15 bibliothèques sur 16. Jellyfin pose des watchers inotify sur les dossiers, ce qui ne fonctionne pas sur un montage FUSE rclone. À désactiver, et à remplacer par le --poll-interval de rclone plus un scan planifié.
Jellyfin écrit dans les dossiers médias. SaveLocalMetadata=True sur 14 bibliothèques, et les vignettes de survol sont stockées à côté des films (palettes/Paul Cézanne....trickplay, movies/Borgo/movie.nfo). C'est ce qui explique les 2 989 jpg et 408 nfo du dossier. Deux conséquences : les vignettes déjà générées voyagent avec les fichiers, donc aucune regénération pour l'existant ; mais pour chaque nouveau film, Jellyfin retéléchargera le fichier entier depuis kDrive pour produire ses vignettes — environ une minute pour 4 Go à 97 Mo/s. Acceptable : ne pas désactiver trickplay. Le montage doit en revanche être en écriture.
HardwareAccelerationType=none — tout le transcodage est logiciel. Inchangé par la migration, mais l'équilibre se déplace : le goulot passe du lien CIFS au CPU du VPS. Sans effet en lecture directe.
Étapes
EnableRealtimeMonitor sur les 15 bibliothèques (API Jellyfin)
2mount --bind /mnt /mnt puis mount --make-shared /mnt, persisté dans /etc/fstab
3Ajouter :shared aux 15 binds de la compose (stack Portainer 5), redéployer
4Commenter la ligne 36 de /etc/fstab (CIFS //10.0.0.2/video), démonter /mnt/nas_videos
5Créer kdrive-video.service sur le modèle de kdrive-music.service : montage sur le même chemin /mnt/nas_videos
6Ajouter le montage à monitor-rclone.sh, avec redémarrage du container jellyfin
7Test de lecture, de seek et de transcodage sur 3 films de bibliothèques différentes
Le point décisif de l'étape 5 : remonter sur le chemin existant /mnt/nas_videos. La compose n'est pas touchée dans ses chemins, les 15 bibliothèques Jellyfin gardent leurs /data/* à l'identique — donc aucune ré-identification, aucun scan complet, aucune perte d'historique de visionnage.
Options du montage rclone
--vfs-cache-mode minimal — les lectures passent en direct, seules les écritures (nfo, trickplay) sont mises en tampon sur disque. Ne pas reprendre full comme les montages musique : il cacherait 4 Go par film, or le VPS n'a que 33 Go libres sur 99 et l'incident du 2026-06-24 (disque à 100 %) est parti de là.
--dir-cache-time 72h — comme music et komga ; 5m avait rendu music instable.
--rc-addr 127.0.0.1:5578 avec authentification RC — jamais 0.0.0.0, règle permanente depuis l'incident du 2026-06-09.
--allow-non-empty, --allow-other, --uid/--gid — comme les six autres montages.
À signaler, hors périmètre
/home/debian/jellyfin/config (688 Mo — tout l'historique de visionnage et les métadonnées) n'est pas dans vps_backup.sh, qui ne couvre que BookStack, Immich, Joplin, Mealie, Readeck et Baïkal. Cela se compresserait bien. À traiter séparément.