[Tuto] Installation de Jellyfin + Transcodage matériel (HW) + Acces HTTPS en Docker

Ensuite fait la commande id <nom_utilisateur>
E ttu devrai voir le groupe videodriver apparaitre avec son ID
C'est cette ID qu'il faut inclure dans la compose de Jellyfin ( au niveau du group_add ) pour qu'il puisse utiliser le HW
 
J'ai cherché les utilisateurs appartenant au groupe videodriver et j'obtiens cela :
Capture.JPG
C'est normal : sc-ffmpeg

Edit : En plus videodriver est un groupe système, je n'y ai accès qu'en SSH root
et je ne trouve pas comment ajouter un utilisateur à un groupe.
 
Dernière édition:
Regarde si tu n'arrive pas a faire cette ajout depuis l'interface web du Syno
@MilesTEG1 ?

Sinon il te faudra changer les permissions du dossier en 666 afin que ton user puisse l'utiliser sans avoir a le rajouter dans le groupe, mais c'est a refaire après un redémarrage du nas.
 
Si ça intéresse certaines personnes :

Méthode pour ajouter des vidéos qui sont sur une autre machine

Dans l'exemple: Jellybin est sur une machine Linux (Debian 10) et les films sont sur un Nas Synology

Sur la machine hébergeant Jellyfin :

1. Mettre à jour et Installer les paquets :
Code:
sudo apt update
sudo apt install nfs-common

2. Créer un répertoire local (par exemple films)
Code:
mkdir /nfs/films
cd /nfs/films

3. Activer le partage NFS (ici: Nas Synology)

Dans Panneau de configuration / Service de fichiers / SMB/AFP/NFS
Cocher : Activer NFS

vxXStOJ.jpg


4. Activer les droits NFS du dossier hébergeant les films

Dans Panneau de configuration / Dossier partagé, sélectionner le dossier hébergeant les films (ici videos)

Dans Autorisations NFS

Créer
:

Nom de l'hôte : Adresse IP de la machine hébergeant Jellyfin (ici 192.168.1.62)
Privilège : Lecture/Ecriture
Squash : Pas de mappage

Cocher : Activer le mode asynchrone et permettre à des utilisateurs d’accéder aux sous dossiers

Omf8GGG.jpg


5. Mapper le dossier partagé

Méthode:
Code:
 mount IPduNAS:/RépertoirePartagéSurLeNAS /RépertoireSurLeServeurJellyfin
Dans l'exemple l'adresse IP du NAS : 192.168.1.2

Sur le Serveur Jellyfin:

Code:
sudo mount 192.168.1.2:/volume1/videos /nfs/films

6. Automatiser le mappage du dossier à chaque redémarrage de la machine

Code:
sudo nano /etc/fstab

Ajouter la ligne suivante :
Code:
#Jellyfin
192.168.1.2:/volume1/videos /nfs/films    nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0
Ctrl+X pour enregistrer

Activer le service
Code:
systemctl enable systemd-networkd-wait-online.service

Cette méthode est valable pour d'autres services, par exemple : calibre-web.
 
Dernière édition:
  • J'aime
Réactions: Jeff777
Regarde si tu n'arrive pas a faire cette ajout depuis l'interface web du Syno
Non car :

Edit : En plus videodriver est un groupe système, je n'y ai accès qu'en SSH root

Sinon il te faudra changer les permissions du dossier en 666 afin que ton user puisse l'utiliser sans avoir a le rajouter dans le groupe, mais c'est a refaire après un redémarrage du nas.
J'ai changé les permissions du dossier jellyfin de manière récursive. Mais le container ne redémarre plus et boucle sur :
at System.IO.FileSystem.CreateDirectory(String fullPath)
at System.IO.Directory.CreateDirectory(String path)
at Jellyfin.Server.Program.CreateApplicationPaths(StartupOptions options)
at Jellyfin.Server.Program.StartApp(StartupOptions options)
at Jellyfin.Server.Program.<Main>(String[] args)
Unhandled exception. System.UnauthorizedAccessException: Access to the path '/config/log' is denied.
---> System.IO.IOException: Permission denied
 
Salut,
Désole, je me suis visiblement mal exprimé visiblement, c'est les permissions de /dev/dri qu'il faut changer

chmod 666 /dev/dri/renderD128 devrais suffire
 
  • J'aime
Réactions: Jeff777
@Jeff777 salut ??
As tu résolu le soucis avec le changement de permissions de /dev/dri ?

Si non, pourrais tu résumer ce qui ne va pas ? Que je n’ai pas à fusionner plusieurs posts précédent ? ???
 
As tu résolu le soucis avec le changement de permissions de /dev/dri ?
Bonjour,
Je ne sais pas trop, je n'ai pas pu suivre le tuto à la lettre.

Capture.JPG
et mon docker-compose

Capture1.JPG
La médiathèque est en cours de scan et les logs donnent les warnigs suivants :
[07:25:02] [WRN] [61] Jellyfin.Server.Middleware.ResponseTimeMiddleware: Slow HTTP Response from https://XXX.ndd (reverse proxy jellyfin)/ScheduledTasks?IsEnabled=true to fe80::XXX:....(IPV6 de mon PC) in 0:00:00.6976451 with Status Code 200.

Je verrai ce que cela donne quand se sera fini.
 
On vois que tu as fait le chmod sur renderD128
Pour moi, il faut enlever la partie :
Code:
group_add:
- "937"
de ton compose, car ton utilisateur ne fait pas parti de ce groupe.

Avec le chmod, le transcodage HW devrais fonctionner, par contre sur Syno le chmod n'est pas persistant, apres un redémarrage c'est a refaire. Tu peut te faire une tache planifié a chaque démarrage pour que cela soit fait en automatique.

[07:25:02] [WRN] [61] Jellyfin.Server.Middleware.ResponseTimeMiddleware: Slow HTTP Response from https://XXX.ndd (reverse proxy jellyfin)/ScheduledTasks?IsEnabled=true to fe80::XXX:....(IPV6 de mon PC) in 0:00:00.6976451 with Status Code 200.

C'est nest pas un probleme, il te signal que le serveur est un peu long a répondre, mais c'est normal, surtout s'il est en pleine indexation.
 
Ok merci, je corrige.
Message automatiquement fusionné :

Edite : question (peut être bête :rolleyes:) comment être certain que le transcodage est en cours ?
 
J'utilise ce script pour modifier les permissions de /dev/dri :
Bash:
#!/bin/bash

# Script de modification de permissions sur l'interface de l'IGPU du NAS
# Pour que le media-serveur puisse transcoder avec le hardware.

#Startup Script
#Access for HW Decoder Plex/Emby/Jellyfin
echo -e "\n$(date "+%R:%S -") Script de modification de permissions sur l'interface de l'IGPU du NAS\n"
echo -e "$(date "+%R:%S -") Lancement de la commande : sudo chmod 660 /dev/dri/card0 /dev/dri/renderD128\n"

if [ -d /dev/dri ]; then
  sudo chmod 660 /dev/dri/renderD128
  sudo chmod 660 /dev/dri/card0
fi

echo -e "$(date "+%R:%S -") Script terminé\n"

exit 0
 
  • J'aime
Réactions: Jeff777
J'ai corrigé (commenté :group_add: et - "937")
Dans le journal avant la correction j'avais des journaux "ffmpeg.transcode etc..." avec ce genre d'info :
[hls @ 0x55bb82d18ec0] Opening '/config/transcodes/07e0.......ts' for writing
frame= 3006 fps=211 q=-0.0 size=N/A time=00:02:00.21 bitrate=N/A speed=8.43x
Le transcoding avait l'air de fonctionner.
Avec la modif j'ai ceci :
[2022-09-30 06:41:24.191 +00:00] [INF] [26] Jellyfin.Api.Helpers.TranscodingJobHelper: Stopping ffmpeg process with q command for "/config/transcodes/07e0..................."
[2022-09-30 06:41:24.325 +00:00] [INF] [26] Jellyfin.Api.Helpers.TranscodingJobHelper: FFmpeg exited with code 0
[2022-09-30 06:41:24.327 +00:00] [INF] [26] Jellyfin.Api.Helpers.TranscodingJobHelper: Deleting partial stream file(s) "/config/transcodes/07e0........"
 
Edite : question (peut être bête :rolleyes:) comment être certain que le transcodage est en cours ?
Dans le tableau de bord, pendant une lecture en cours :
1664566743646.png

Si tu souhaite savoir si cela transcode en hardware ou pas :
1664566803632.png
Tu cherche le logs de la lecture, et tu l'ouvre :
Tu recherche dans les logs Stream mapping :
1664566904181.png
Ici h264 native donc lu nativement par le CPU et h264_qsv donc transcodage hardware ( QSV = Quick Sync Video )


Pour le group, remplace le si c'est problématique, bien que je comprenne pas trop pourquoi.
Pourrai nous montrer les permissions des dossiers ?

Exemple avec :
ls -alh /volume1/docker/jellyfin

Si tu as installé Jellyfin dans un dossier jellyfin de ton dossier docker
 
Dernière édition:
Bonsoir,
Tu recherche dans les logs Stream mapping :
Oui dans les logs d'hier j'ai trouvé ceci (mais depuis plus rien) :
Stream mapping:
Stream #0:1 -> #0:0 (pcm_u8 (native) -> aac (libfdk_aac))
Press [q] to stop, [?] for help
[mpegts @ 0x563ca288ed80] frame size not set
Output #0, hls, to '/config/transcodes/7980242ead46090b369467afbf221771.m3u8':
Metadata:
encoder : Lavf59.27.100
Stream #0:0: Audio: aac, 22050 Hz, mono, s16, 128 kb/s (default)
Metadata:
encoder : Lavc59.37.100 libfdk_aac

Pourrai nous montrer les permissions des dossiers ?
Capture.JPG

En fait je viens de voir que dans les logs de portainer l'accès au répertoire config/log est refusé et ça tourne en boucle. Pourtant le container se crée.
J'ai remis les droits initiaux (0755 sur le répertoire jellyfin utilisateur: jellfy groupe: users mes PID GID du fichier docker-compose) et décommenté group_add et "937" (comme c'était hier) et je vais laissé tourner.