Forum des NAS

Tous les fabricants de NAS réunis sur un forum unique : Asustor, Qnap, Synology...

Les tutoriaux rédigés par les membres
#91958
Bonjour,
Un nouveau petit tuto pour vous apprendre a installer Jellyfin en Docker sur votre NAS Synology, mais également, a activer le transcodage matériel ou hardware ( HW ).

Image

A la différence de [Tuto] Installation de Jellyfin + Transcodage matériel (HW) + Proxy Ngnix HTTPS ( Docker-compose ) ce tuto n'utilisera pas docker-compose, nous allons créer le conteneur depuis l'interface de DSM mais il n'est pas prévu dans le tuto de parler accès extérieur.

Pré-requis :
Avoir installé le paquet Docker
Avoir un accès SSH au Synology*
Dans docker : télécharger l'image linuxserver/jellyfin:latest

* Pour faire cette manip, il vous faudra vous connecter en SSH à votre NAS, si vous ne savez pas le faire, vous trouverez ici un tuto explicatif : [Tuto] Acceder à son NAS en lignes de commande.

A modifier selon votre installation :
Toute mon installation, va ce faire dans un dossier partagé "docker"
Je vais donc installer jellyfin dans /docker/jellyfin
Les PUID/PGID de mon compte utilisateur sont : PUID=1030 PGID=100**

** Pour connaitre le PUID/GUID de l'utilisateur : [Tuto] Connaitre le PUID / PGID d'un utilisateur.

Sommaire :
1/ Télécharger le conteneur
2/ Création du dossier d'installation
3/ Paramétrage / Création du conteneur
4/ Accès a Jellyfin
5/ Activer le transcodage hardware (HW)

1/ Télécharger le conteneur
Nous allons télécharger le conteneur linuxserver/jellyfin, pour cela nous allons ouvrir docker et se rendre dans Registre et rechercher "plex".
Image
Une fois l'image linuxserver/jellyfin, on clique dessus, puis sur Télécharger, on sélectionnera "latest".

2/ Création du dossier d'installation
Le chemin est basé sur mon installation, à adapter selon votre installation.

Voici le dossier a créer :
- /docker/jellyfin/config

3/ Paramétrage / Création du conteneur
Une fois l'image fini de télécharger, nous allons dans Image, nous sélectionnons linuxserver/jellyfin:latest et on clique sur Lancer.
Cette fenêtre s'affiche :
Image
Il est possible de modifier, le nom "linuxserver-jellyfin1" qui est un nom par défaut, se nom sera le nom de votre conteneur t'elle qu'il apparaitra dans le liste de conteneur de Docker. On peut le nommer par exemple "Jellyfin" tout simplement.
Je vous conseil d'activer la limitation des ressources.
Priorité Moyen, par défaut c'est très bien.
Pour la RAM tout dépend de la quantité dispo sur votre machine, mais 2048Mo et a mon sens un minimum pour Jellyfin.

Ensuite, on clique sur Paramètres Avancés, dans Volumes :
Pour le fonctionnement de jellyfin, 2 dossiers sont obligatoires :
/config et /cache
Il vous faut les ajouter dans les volumes comme ceci :
Image
Dans l'onglet "Volume", nous allons cliquer sur "Ajouter un dossier" et choisir le dossier "config" que nous avons créé précédemment pour l'installation de l'image. Le chemin de ce dossier sera /config.
Afin que Jellyfin accède a vos média, vous allez devoir lui donner accès, je vous est fait un exemple avec le dossier /music présent sur mon nas.
J'ai placé /music dans /data/music, a vous de faire la suite si par exemple, vous avez un dossier films, vous le placé de la même façon, cliquer sur Ajouter un dossier, sélectionner votre dossier /films, et dans la partie Chemins d'accès, indiquer : /data/films, ...

Dans l'onglet Réseau, nous allons cocher "Utiliser le même réseau que Docker Host"

Dans l'onglet Environnement, nous allons rajouter 3 variables :
TZ, c'est le fuseau horaire, j'ai choisi Europe/Paris.
PGID, Group id ( voir point "A modifier selon votre installation" au début du tuto ) ( dans mon exemple c'est 100 )
PUID, User id ( voir point "A modifier selon votre installation" au début du tuto ) ( dans mon exemple c'est 1030 )
Image

Maintenant, on clique sur "Appliquer", puis "Suivant", et on arrive a la page suivante :
Image

On clique sur "Appliquer" et le conteneur se créer, et démarre.
Dans l'onglet "Conteneur", on peu vérifier que notre conteneur est bien démarré !

4/ Accès a Jellyfin
Dans votre navigateur, il vous suffit maintenant de taper l'adresse ip de votre NAS suivi du port 8096 pour se connecter a l'interface Web de Jellyfin.
Exemple : Si l'ip de votre NAS est 192.168.0.20 alors l'adresse est http://192.168.0.20:8096
Bien sur, si le pare-feu de votre NAS est actif, ce port devra être autorisé dans celui-ci !

5/ Activer le transcodage hardware (HW)
A/ Application des permissions sur /dev/dri
Dans Panneau de configuration > Planificateur de tâches, nous allons créer une nouvelle taches ( Taches déclenchée > Script défini par l'utilisateur )
Image

Je nomme la tache HW Jellyfin, l'utilisateur doit rester "root".
Image

Dans Paramètres de la tache, je rentre le script suivant :

Code : Tout sélectionner
#!/bin/bash
#Startup Script
#Access for HW Decoder Jellyfin
chmod 666 /dev/dri/renderD128
exit

On peut, si on le souhaite, être averti par mail du bon déroulement de la tache, ou non.
Image

Maintenant, on clique sur OK, pour valider la création de la tâche.
Notre tache apparait dans la liste de tâches, on la sélectionne, et on l'Execute une 1ere fois !
Image

B/ Modification du .json
Pour éviter tout soucis d'encodage, je vous conseil de le faire directement depuis DSM, à l'aide du paquets : Éditeur de texte
Il vous faut donc au préalable, aller dans Centre des paquets, et installer ce paquets si vous ne l'avez pas encore !
Image

Ensuite, nous allons dans Docker, Conteneurs et on s'il est en route, on arrete le conteneur Plex
Puis, nous allons Exporter la configuration dans un dossier de DSM :
Image

Ici je l'exporte dans /docker/Jellyfin
Image

Maintenant, via File Station, je vais dans le dossier comprenant mon fichier exporté, chez moi /docker/Jellyfin, et dessus je clique droit pour l'ouvrir avec l'éditeur de texte :
Image

Le début du fichier va resembler à ceci :
Image

ll vous faudra remplacer ceci :

Code : Tout sélectionner
"devices" : null,

Par :

Code : Tout sélectionner
"devices" : [
      {
         "CgroupPermissions" : "rwm",
         "PathInContainer" : "/dev/dri",
         "PathOnHost" : "/dev/dri"
      }
   ],

Voici ce que cela devrait vous donner :
Image

Vous pouvez maintenant enregistrer le fichier :
Image

Maintenant que notre fichier est prêt, nous allons l'exporter dans Docker, afin de remplacer notre conteneur jellyfin.
Dans l'application Docker > Conteneur, nous allons supprimer le conteneur Plex actuel :
Image
Cette étape supprime le conteneur et sa configuration* uniquement, mais ni plex ou vos médias.

*configuration qui est contenu dans le fichier .json précédemment modifié !

Une fois, fait, nous allons Importer notre nouveau fichier .json de configuration de jellyfin :
Image

On le sélectionne, et on valide, le conteneur va alors se créer :
Image

Maintenant, nous démarrons notre conteneur Jellyfin grâce au petit bouton en bout de ligne du conteneur jellyfin :
Image

C/ Activation du transcodage sur Jellyfin
Dans le Tableau de Bord de Jellyfin, nous allons dans l'onglet "Lecture"
Image

Nous choisissons dans Accélération matérielle : Video Acceleration API
Image

Le chemin Appareil VA API doit être enregistré comme l'image ci-dessous, et "Activer l'encodage matériel" activé :
Image

En bas de page on enregistre :
Image

et on confirme l'avertissement :
Image

24/06/2020 - Rédaction du chapitre sur le transcodage hardware
#92521
Les chemins des média,.. Declerer dans docker sont suivants vos préférences, organisations. ..

Par exemple pour un dossier films sur volume1

Tu peu le déclarer /data/films ou /media/films, ou /truc/muche ou seulement /trucmuche
Cela ne change que l'arborescence dans Jellyfin, c'est une question d'organisation et de préférence uniquement.
#92523
OK merci pour ta réponse.
Je sais que ce n'est pas le sujet ici mais comme tu as l'air d'être chevronné en ce qui concerne Jellyfin et docker, peut-être pourras tu m'éclairer à ce sujet :
je me retrouve avec des erreurs étranges dans les logs de docker (tout fonctionne mais je me demande si ca peut nuire qq part...) :
[11:23:10] [ERR] [21] App: AcceptWebSocketAsync error
System.Net.WebSockets.WebSocketException (0x80004005): The remote party closed the WebSocket connection without completing the close handshake.
---> System.Net.WebSockets.WebSocketException (0x80004005): The remote party closed the WebSocket connection without completing the close handshake.
at System.Net.WebSockets.ManagedWebSocket.ThrowIfEOFUnexpected(Boolean throwOnPrematureClosure)
at System.Net.WebSockets.ManagedWebSocket.EnsureBufferContainsAsync(Int32 minimumRequiredBytes, CancellationToken cancellationToken, Boolean throwOnPrematureClosure)
at System.Net.WebSockets.ManagedWebSocket.ReceiveAsyncPrivate[TWebSocketReceiveResultGetter,TWebSocketReceiveResult](Memory`1 payloadBuffer, CancellationToken cancellationToken, TWebSocketReceiveResultGetter resultGetter)
at System.Net.WebSockets.ManagedWebSocket.ReceiveAsyncPrivate[TWebSocketReceiveResultGetter,TWebSocketReceiveResult](Memory`1 payloadBuffer, CancellationToken cancellationToken, TWebSocketReceiveResultGetter resultGetter)
at Emby.Server.Implementations.SocketSharp.WebSocketSharpListener.ProcessWebSocketRequest(HttpContext ctx)

Je ne comprend pas vraiment ces messages, j'ai pourtant écris toutes les lignes que tu recommandais dans la partie reverse proxy de dsm mais bon, le websocket... :oops:
#92524
Salut,
Je suis loin d'etre expert, mais pour moi cette erreur c'est un connexion interrompu de manière anormale ( par exemple en lecture tu ferme la page, ou tu fait un retour arriere alors que la video ne s'est pas terminée toutes seule )
Ce n'est pas dérangeant selon moi, de plus Jellyfin est encore en dévelloppement, il reste encore beaucoup de boulot ( principalement pour le moment du nettoyage de code ( Jellyfin etant basé sur une version d'emby, la derniere version opensource d'emby pour etre exact ) et il reste dans Jellyfin encore beaucoup de trace d'emby. Et aussi beaucoup de fonction a "débug" ;)
#92661
EVOTk a écrit : 24 juin 2020 18:43 MAJ ! Rédaction du chapitre sur "Activer le transcodage hardware (HW)" :bounce:

Hello,

Tu écris : "Taches Planifié > Script défini par l'utilisateur" mais la capture d'écran montre une "tâche déclenchée" ... du coup ???
C'est peut être pas important mais au cas, je préférerai pas me tromper :)

Je dirais c est plus ton n'as qui a un probl&egrav[…]

Ok merci pour tes conseils ... Je vais les mettre […]

NAS avec Raspberry Pi 4

pas de soucis, c'ets aussi pour cela que le DIY n'[…]

Question pour changer de DD

ce sont du coup de wd red ? Oui, fabrication[…]

Site hébergé sur un serveur IKOULA

Ikoula