Synology [Tuto] Installation de Jellyfin en Docker sur un NAS Synology + Transcodage Matériel / Hardware (HW)

MilesTEG1 a dit:
Bon par contre, ça nécessite d'utiliser la ligne de commande en SSH. Mais l'avantage, c'est que pour refaire le conteneur, ou le mettre à jour, c'est plus rapide ;)

Le but du tuto est de rester simple, si tu souhaite faire du compose, il y a ce tuto : https://www.forum-nas.fr/viewtopic.php?f=56&t=13215

Pour tes problème de lecture, je n'est pas de contenu 4K afin de faire des test, mais je te conseil de regarder dans les logs de jellyfin pour avoir plus de détails
 
Hello,
Je ne dis pas le contraire ^^
J'ai juste préféré faire un docker-compose.yml mais bien sur ça n'engage que moi ;)

Pour le tuto mis en lien, ça va au-delà de ce que je voulais faire, car je n'ai pas besoin de la partie nginx ;) enfin pas dans l'immédiat :p
 
Bonjour et merci beaucoup pour ce tutoriel.

Je bloque sur un truc, Jellyfin ne parvient pas à lire le dossier qui contient mes films. Dans les logs du container, c’est assez explicite :

Code:
[23:17:17] [ERR] [10] Emby.Server.Implementations.IO.LibraryMonitor: Error watching path: /data/films
System.UnauthorizedAccessException: Access to the path '/data/films' is denied.
 ---> System.IO.IOException: Permission denied

Le PUID PGID sont pourtant correct (j’ai vérifié avec la commande `id <username>` et je suis allez aussi regarder du côté du /etc/passwd).

Le dossier du volume qui est monté dans le container au chemin /data/film est un dossier partagé de Synology. Est-ce que le problème pourrait venir de là ?

Je ne sais pas si cela à un rapport mais je le précise, l’utilisateur spécifié dans le PUID n’a pas les droits d’exécution de Docker. C’est-à-dire que si je veux exécuter la commande docker avec cet utilisateur, je dois la préfixer de sudo (ce qui est le fonctionnement normal de docker si l’on ne touche pas aux droits).

Vous auriez une idée du problème ?
 
Salut,
Effectivement, l'user n'a pas le droit d’accès.

Dans les permissions du Syno ( panneau de config > Utilisateurs ) l'user dont tu as renseigné les PUID/GUID a bien les droits de lecture/ecriture sur les dossiers de média ?

Tu peut aussi depuis file Station faire un clic doit sur le dossier partagé et vérifier que l'user en question a bien les droits, et au besoin les modifier sans oublier de cocher la case " Appliquer à ce dossier, ces sous-dossiers et les fichiers" puis redémarrer le conteneur.

Il est normal que l'user n'est pas les droits d’exécution de docker sans sudo.
 
EVOTk a dit:
Salut,
Effectivement, l'user n'a pas le droit d’accès.

Dans les permissions du Syno ( panneau de config > Utilisateurs ) l'user dont tu as renseigné les PUID/GUID a bien les droits de lecture/ecriture sur les dossiers de média ?

Tu peut aussi depuis file Station faire un clic doit sur le dossier partagé et vérifier que l'user en question a bien les droits, et au besoin les modifier sans oublier de cocher la case " Appliquer à ce dossier, ces sous-dossiers et les fichiers" puis redémarrer le conteneur.

Il est normal que l'user n'est pas les droits d’exécution de docker sans sudo.

Merci, c'est parfait! Jellyfin à enfin accès aux fichiers !
Je n'avais absolument pas pensé à regarder de ce côté des permissions.
 
Un grand merci pour ce tuto EVOTk, il m'a permis de faire mes deux premiers montages, Jellyfin puis Emby que je trouve beaucoup plus complet après comparaison des deux.
Je vais pouvoir regarder tranquillement mes films, depuis mon île :D ;)
 
Salut,
De rien ;)
Emby a un systeme de financement/licence complétement différent de Jellyfin.

Jellyfin est 100% gratuit et open-source.
 
Hello,

Un grand merci pour ce tuto !

J'ai voulu ajouter un reverse proxy (en passant directement par celui fournit par le DSM) :
image_2021-05-04_134356.png
image_2021-05-04_134519.png

Pour la plupart des vidéos, cela fonctionne. Mais quand j'aimerai lire un fichier volumineux ( comme un X265), la vidéo plante au bout de quelques minutes.
En lecture via une appli android tv (via une shield tv pro), la vidéo se coupe sans aucun message d'erreur.
Sans passer par le proxy (en local par le port 8096), je n'ai pas cette erreur.

Dans les logs je peux voir cette info :
Code:
[2021-05-04 11:31:48.696 +00:00] [WRN] [38] Jellyfin.Server.Middleware.ResponseTimeMiddleware: Slow HTTP Response from "https://jelly.nomdedomaine.com/Sessions/Playing/Progress" to "192.168.1.254" in 0:00:00.5113764 with Status Code 204
[2021-05-04 11:32:00.756 +00:00] [INF] [20] Emby.Server.Implementations.HttpServer.WebSocketManager: WS "192.168.1.254" request
[2021-05-04 11:32:08.553 +00:00] [INF] [4] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: Processing playback tracker : "060a1cc1549429c6-9ba1304731414d8b94cc2f719d9a7d35-f1333d6f9dc3b046d85b3b5d99eb2fd7"
[2021-05-04 11:32:28.554 +00:00] [INF] [37] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: Processing playback tracker : "060a1cc1549429c6-9ba1304731414d8b94cc2f719d9a7d35-f1333d6f9dc3b046d85b3b5d99eb2fd7"
[2021-05-04 11:32:45.858 +00:00] [INF] [16] Emby.Server.Implementations.Session.SessionWebSocketListener: Sending ForceKeepAlive message to 1 inactive WebSockets.
[2021-05-04 11:32:49.553 +00:00] [INF] [21] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: Processing playback tracker : "060a1cc1549429c6-9ba1304731414d8b94cc2f719d9a7d35-f1333d6f9dc3b046d85b3b5d99eb2fd7"
[2021-05-04 11:32:57.859 +00:00] [INF] [37] Emby.Server.Implementations.Session.SessionWebSocketListener: Sending ForceKeepAlive message to 1 inactive WebSockets.
[2021-05-04 11:33:09.556 +00:00] [INF] [37] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: Processing playback tracker : "060a1cc1549429c6-9ba1304731414d8b94cc2f719d9a7d35-f1333d6f9dc3b046d85b3b5d99eb2fd7"
[2021-05-04 11:33:09.859 +00:00] [INF] [37] Emby.Server.Implementations.Session.SessionWebSocketListener: Lost 1 WebSockets.
[2021-05-04 11:33:30.553 +00:00] [INF] [4] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: Processing playback tracker : "060a1cc1549429c6-9ba1304731414d8b94cc2f719d9a7d35-f1333d6f9dc3b046d85b3b5d99eb2fd7"
[2021-05-04 11:33:50.554 +00:00] [INF] [39] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: Processing playback tracker : "060a1cc1549429c6-9ba1304731414d8b94cc2f719d9a7d35-f1333d6f9dc3b046d85b3b5d99eb2fd7"
[2021-05-04 11:34:10.555 +00:00] [INF] [41] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: Processing playback tracker : "060a1cc1549429c6-9ba1304731414d8b94cc2f719d9a7d35-f1333d6f9dc3b046d85b3b5d99eb2fd7"
[2021-05-04 11:34:31.553 +00:00] [INF] [4] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: Processing playback tracker : "060a1cc1549429c6-9ba1304731414d8b94cc2f719d9a7d35-f1333d6f9dc3b046d85b3b5d99eb2fd7"
[2021-05-04 11:34:51.554 +00:00] [INF] [42] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: Processing playback tracker : "060a1cc1549429c6-9ba1304731414d8b94cc2f719d9a7d35-f1333d6f9dc3b046d85b3b5d99eb2fd7"
[2021-05-04 11:35:00.761 +00:00] [WRN] [42] Emby.Server.Implementations.HttpServer.WebSocketConnection: WS "192.168.1.254" error receiving data: "The remote party closed the WebSocket connection without completing the close handshake."
[2021-05-04 11:35:01.013 +00:00] [INF] [42] Emby.Server.Implementations.HttpServer.WebSocketManager: WS "192.168.1.254" closed
[2021-05-04 11:47:10.939 +00:00] [INF] [59] Emby.Server.Implementations.HttpServer.WebSocketManager: WS "192.168.1.254" request

En regardant la doc de Jellyfin, dans la partie Nginx/Reverse proxy, je vois un pavé de configuration sur la partie location /socket qui me parait être intéressant et peut potentiellement résoudre mon problème:
Code:
location /socket {
        # Proxy Jellyfin Websockets traffic
        proxy_pass http://$jellyfin:8096;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-Protocol $scheme;
        proxy_set_header X-Forwarded-Host $http_host;
    }
}

Cependant je ne sais pas comment m'y prendre...Serait-ce possible d'avoir de l'aide s'il vous plaît ? Etant novice en la matière, je n'arrive pas à me dépatouiller pour trouver une solution...

Un grand merci de votre aide !

Oyo
 
Salut Oyo95
J'ai suivi ce tuto il y a quelques temps.
Concernant le reverse proxy, je n'ai pas mis en place d'entête personnalisé. Cela fonctionne très bien chez moi avec juste la mise en place du tunnel.
N'hésite pas.
 
Alandil a dit:
Salut Oyo95
J'ai suivi ce tuto il y a quelques temps.
Concernant le reverse proxy, je n'ai pas mis en place d'entête personnalisé. Cela fonctionne très bien chez moi avec juste la mise en place du tunnel.
N'hésite pas.

Hello Alandil,

Merci pour ton retour :)
Je viens d'effectuer un test, et malheureusement j'ai toujours ce problème.
J'ai tenté une autre approche et je tente de passer par un autre reverse proxy nginx.
Ca fonctionne sauf pour Android. j'ai ouvert un case sur github...

J'espère trouver le pourquoi rapidement :'(
 
Salut !

J'ai bien réussi à lancé Jellyfin mais j'ai le même soucis que MilesTEG1 sur une video 4k "Erreur de lecture Ce client n'est pas compatible avec le média et le serveur n'envoie pas de format compatible"
La vidéos en question passait avant le transcodage matériel (mais était baveuse et le processeur du NAS galérais normal ^^) et là plus rien.
Pour l'instant je n’ai pas trouvé de solution probante si quelqu'un a une piste je suis preneur !
 
Je ressuscite ce post. J'ai suivi l'étape 5 pour activer le transcodage HW mais après le redémarrage du container avec le json modifié, le serveur jellyfin semble totalement vierge: pas de user, pas de librairies, rien (au moins le transcodage HW semble marcher). Que s'est-il passé?
 
Salut, cela ressemble beaucoup a un soucis de montage du dossier config :
nxZX2ZP.png
 
Je n'ai pas de dossier config. J'avais suivi les instructions d'ici: https://jellyfin.org/docs/general/administration/install/synology.html. Du coup j'imagine que j'ai loupé une étape. Super...

Merci pour ton aide.
 
Yes, il est indiqué "Use Advanced Settings to add mount points to your media and config." mais c'est vrai qu'ils ne détail pas trop.

C'est donc pour cela que tu as perdu ta config ! Et cela sera de nouveau le cas la prochaine fois que tu vas re-créer le conteneur !
Il te faut absolument mettre un config ( ce qui va te faire perdre malheureusement encore une fois ta config, mais pour la dernière fois ^^ )*

Au besoin il est tout de meme possible de le conservé tant qu'il n'est pas écrasé, donc pour ta config actuelle ( pour celle devant il est malheuresement trop tard ) :
Avec cette technique : https://linuxtut.com/fr/70baed0b4711434bd88e/

Sous la forme :
Code:
docker cp [ID du conteneur]:[Chemin du fichier que vous souhaitez copier] [Le chemin que vous souhaitez copier localement]

Exemple:
Code:
docker cp jellyfin:/config/* <chemin_destination>
 
Hello,

Merci pour ces détails. J'avoue que je n'ai pas eu le courage de détruire mon nouveau container (où je n'avais toujours pas monté de folder).

J'ai quand même réussi à à faire une copie du dossier config du container en local, donc logiquement j'ai tout. Par contre j'ai tenté de créer un nouveau container en montant ce dossier config local mais ça n'a pas l'air de marcher: l'interface me fait repartir de zéro, ne reconnait aucune librairie etc. Tu as une idée de ce que j'ai loupé?
 
Peut-etre un problème de permission et le conteneur n'a pas les droits d’accès au dossiers/fichiers ?

Tu as vérifier que ton dossier config contenait bien le contenu ?

Conteneur à l'arret, Depuis DSM, FileStation, tu peu clique droit sur un dossier Permission pour changer le propriétaire d'un dossier, tu choisi celui dont tu as pris le PUID/GUID lors de la création du conteneur et tu applique ( en cochant Appliquer aux sous dossiers, ..." et seulement là on peu démarrer le conteneur.

Vérifier aussi que dans ton compose le chemin soit correctement indiqué.
 
Je n'ai qu'un user pour le NAS (screenshot), avec tous les droits sur tout en gros (screenshot). Du coup je ne crois pas que ce soit un problème de permissions?

Pour le chemin voici l'extrait du .json:
"volume_bindings" : [ { "host_volume_file" : "/docker/jellyfin/config", "mount_point" : "/config", "type" : "rw" } ]

Et je vérifie bien dans FileStation que mon dossier avec tout est dans /docker/jellyfin/config (techniquement, si je fais l'arborescence complète du NAS, c'est dans /volume1/docker/jellyfin/config): screenshot

Donc là je ne vois pas trop...