Skip to main content

14_Jellyfin

jellyfin

The Free Software Media System

Imagejellyfin/jellyfin:latest
Version10.10.7
EtatUp 9 hours (healthy)
Compose projectjellyfin
Reseauhost
URLhttps://jellyfin.juxjux.ovh
Sourcehttps://github.com/jellyfin/jellyfin-packaging

Volumes

Source (hote)DestinationTypeMode
/mnt/nas_videos/movies/data/moviesbindrw
/mnt/nas_videos/palettes/data/palettesbindrw
/home/debian/jellyfin/config/configbindrw
/mnt/nas_videos/cinema_europe/data/cinema_europebindrw
/mnt/nas_videos/cinema_UK/data/cinema_ukbindrw
/mnt/nas_videos/spectacles/data/spectaclesbindrw
/cachevolumerw
/mnt/nas_videos/animes/data/animesbindrw
/mnt/nas_videos/cinema_asie/data/cinema_asiebindrw
/mnt/nas_videos/cinema_realisateurs/data/cinema_realisateursbindrw
/mnt/nas_videos/fantastique_et_SF/data/fantastique_et_SFbindrw
/mnt/nas_videos/historiques/data/historiquesbindrw
/mnt/nas_videos/series/data/seriesbindrw
/mnt/nas_videos/cinema_italie/data/cinema_italiebindrw
/mnt/nas_videos/culture_cuisine/data/culture_cuisinebindrw
/mnt/nas_videos/documentaires/data/documentairesbindrw

Integration Claude Code — MCP

Statut MCPMCP actif
Outils (prefix)mcp__jellyfin__
ConfigurationScript Python : C:\Users\eliob\.claude\mcp_jellyfin.py | Auth : JWT MediaBrowser Token via POST /Users/AuthenticateByName

Outils disponibles

  • get_libraries
  • get_items
  • get_item
  • get_recently_added
  • get_resume_items
  • get_sessions
  • get_users
  • get_server_info
  • scan_library
  • search_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 : FAIT le 2026-08-30. Jellyfin ne lit plus le NAS. Il lit kDrive par un montage rclone FUSE. Le NAS conserve l'intégralité des 694 Go — l'étape 6 (suppression) reste en attente, après période d'observation.

Résultat mesuré

AvantAprès
Source de /mnt/nas_videosCIFS //10.0.0.2/videorclone kDrive Videos_NAS
Débit lu depuis le container5,0 Mo/s65,6 Mo/s
Propagation des 15 bindsabsenteshared sur les 15
EnableRealtimeMonitoractif sur 15 bibliosdésactivé partout
monitor-rclone.sh5 montages6, avec restart de jellyfin
Films catalogués343629 (+286, fusion cuisine)

Le goulot était le tunnel WireGuard depuis Toulon (40 Mbit/s, incompatible avec deux flux simultanés), pas kDrive. La bascule améliore la lecture au lieu de la dégrader.

Le montage

Service /etc/systemd/system/kdrive-video.service, activé au démarrage, calqué sur kdrive-music.service :

ExecStart=/usr/bin/rclone --config=/home/debian/.config/rclone/rclone.conf mount \
  --rc --rc-addr 127.0.0.1:5578 --rc-user=rcadmin --rc-pass=RcVideo2026! --rc-enable-metrics \
  "kdrive:Julien Bertrand (0)/Videos_NAS" /mnt/nas_videos \
  --allow-other --dir-cache-time 72h --poll-interval 15s \
  --vfs-cache-mode minimal --buffer-size 256M \
  --uid 1000 --gid 1000 --umask 002 --allow-non-empty
  • --vfs-cache-mode minimal : lectures en direct, seules les écritures (nfo, trickplay) passent par le disque. Surtout pas 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à.
  • --rc-addr 127.0.0.1 : jamais 0.0.0.0, règle permanente depuis l'incident du 2026-06-09.
  • --uid 1000 --gid 1000 : la compose déclare user: 1000:1000.
  • /mnt était déjà en propagation shared — le mount --bind prévu s'est révélé inutile.

La carte des binds

Le montage porte sur Videos_NAS entier, pas seulement sur son sous-dossier video, parce que deux bibliothèques ont été fusionnées avec du contenu kDrive préexistant. Les chemins conteneur sont restés identiques : aucune ré-identification, aucun historique de visionnage perdu.

Chemin hôteChemin conteneur
/mnt/nas_videos/Séries/data/series — fusionné
/mnt/nas_videos/Video Cuisine/data/culture_cuisine — fusionné
/mnt/nas_videos/video/<13 autres>/data/<13 autres>
/home/debian/jellyfin/config/config

Compose : stack Portainer 5, projet compose 5. Sauvegarde docker-compose.yml.bak-260830.

sudo docker compose -p 5 -f /var/lib/docker/volumes/portainer_data/_data/compose/5/docker-compose.yml up -d --force-recreate

Disponible pour de futures bibliothèques

Le montage expose aussi ce qui vivait déjà dans Videos_NAS et qui n'est branché sur aucune bibliothèque : Video Culture Arts et Peinture (130,8 Go), Video Architecture et Urbanisme (29,4 Go), Video concerts (3,5 Go).

Pièges rencontrés — à ne pas re-découvrir

  1. Le point de montage n'était pas vide. Sous l'ancien CIFS subsistaient 15 dossiers vides. Laissés en place, un montage rclone mort ferait voir à Jellyfin des dossiers vides au lieu d'une erreur — et il purgerait ses bibliothèques. Vérifié (0 fichier réel, 65 536 octets de dossiers) puis supprimés, montage arrêté le temps de l'opération.
  2. grep -c renvoie 1 quand il ne trouve rien et tue un script en set -e. Le redéploiement avait réussi, seule la vérification a échoué.
  3. Docker ne montre pas :shared dans .HostConfig.Binds, il le normalise dans .Mounts[].Propagation. Vérifier là.
  4. Le projet compose est 5 (l'ID de stack), pas jellyfin — lire le label com.docker.compose.project avant tout redéploiement, sous peine de créer une pile en double.

Retour arrière

  1. Décommenter la ligne 36 de /etc/fstab (sauvegarde /etc/fstab.bak-260830)
  2. sudo systemctl disable --now kdrive-video.service
  3. Restaurer docker-compose.yml.bak-260830 et redéployer

Tant que le NAS n'a pas été vidé, le retour arrière est complet.

À 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, Baïkal et ~/Documents. Cela se compresserait bien. À traiter séparément.