Aller au contenu

[TUTO] Plex via docker, avec ou sans transcodage matériel


Einsteinium

Messages recommandés

il y a 48 minutes, Einsteinium a dit :

Effectivement pour le coup on pourrait rajouté l’utilisateur directement dans le groupe, maintenant cela serait en ligne de commande, la question c’est est ce qu’une modification de l’utilisateur, le fera sauter du groupe videodriver… ?

Maintenant on réduit à l’utilisation de la partie graphique, pas grand risque à craindre 🙂

Sur mon installation fonctionnelle avec DSM6, j'ai essayé de changer les permissions du /dev/dri/* en 660 (avant c'était 666), et ça fonctionne encore très bien.
Du coup je modifie mon script en conséquences pour le moment.
Et me pencherais plus en détail sur le groupe d'appartenance de mon user PMS qui actuellement est dans un groupe sans droits d'accès autre que sur le dossier .../docker/

Vais lancer l'update 🙂 
Mais d'abord, je pense que je vais couper le lancement automatique des différents scripts, au cas-où 🙂 

Lien vers le commentaire
Partager sur d’autres sites

Il y a 1 heure, Einsteinium a dit :

Si tu désactive cette option, alors le serveur ne transcode alors plus que le son, ce dernier ne mange pour ainsi dire aucune ressource... tu perds beaucoup de temps à réencoder pour rien...

Ne juges pas si vite sans avoir les éléménts.
Il y a des cas que tu ignores peut-être, entre autres un client qui a une box qui sait lire le DTS avec un Systeme Audio 5.1 derriere la TV qui lui ne sait pas lire le DTS. Du coup Le serveur ne transcode pas puisque le client accepte le DTS mais le son sur le 5.1 audio ne sort pas. 
Tu pensais vraiment que je n'avais pas de bonnes raisons ni testé avant...
ffmpeg modifie une bande son sans probleme.
un script simple qui fait ça et envoie les fichiers la nuit sur deux Drives distincts avec rclone crypt. Plus jamais eu de probleme de compatibilité.
Ce n'est ni pour rien, ni une perte de temps.

Lien vers le commentaire
Partager sur d’autres sites

@Einsteinium Après réflexion, je pense que ça ne suffira pas pour Plex, car on précise un PUID et un PGID (a priori pas videodriver), or on a besoin que l'utilisateur "abc" (utilisateur par défaut Linuxserver) appartienne au groupe videodriver (si on veut s'affranchir du chmod). Ca a été l'objet d'une demande, mais cela nécessite soit de build sa propre image (pas pratique), soit d'exécuter un script après chaque recréation de conteneur (pas pratique non plus).

En réalité, l'équipe Linuxserver met de la mauvaise volonté pour corriger ce défaut, car Emby (l'image officielle) propose une bonne solution pour pallier ce problème, une variable d'environnement GIDLIST :

GIDLIST=937

Dans le cas présent, ça ajouterait l'utilisateur courant du conteneur au groupe d'id 937 (videodriver), ainsi "abc" pourrait parfaitement accéder à /dev/dri/renderD128.

Une autre solution est d'utiliser PGID=937, on se retrouvera avec des fichiers dont le groupe est videodriver, je ne trouve pas ça tip top, mais ça serait fonctionnel. Par contre, cela nécessite que les droits de l'utilisateur Plex soit définis au niveau de l'utilisateur et pas du groupe (users ou dédié).

L'autre solution (la meilleure selon moi) serait d'utiliser des volumes docker et pas des bind sur l'host, mais on ne peut pas nommer ces volumes si on passe par l'interface Docker de DSM.

D'un point de vue facilité, le chmod reste ce qu'il y a de plus simple en l'état.

Modifié par .Shad.
Lien vers le commentaire
Partager sur d’autres sites

@.Shad. L'utilisateur abc n'est utilisé par defaut que si tu ne définis pas d'utilisateur (en puid/pgid), c'est un utilisateur qui n'existe que dans l'instance docker ^^

Moi la je ne peux essayé, mais si toi tu le peux, utilises la ligne cité plus haut et reboot, tu seras vite fixé 🙂

Après même si linuxserver ne veut pas intégré la variable gidlist sa me dérange pas plus que sa, au moins les images sont à jour.

il y a 26 minutes, cadkey a dit :

Une box qui sait lire le DTS avec un Systeme Audio 5.1 derriere la TV qui lui ne sait pas lire le DTS.

Donc c'est un problème de client, on active pas le 5.1 sur sa box, si on a pas derrière une télé ou un système son qui ne le prends pas en charge.

Lien vers le commentaire
Partager sur d’autres sites

il y a 18 minutes, Einsteinium a dit :

Donc c'est un problème de client, on active pas le 5.1 sur sa box, si on a pas derrière une télé ou un système son qui ne le prends pas en charge.

Le EAC3 5.1 et AC3 5.1 fonctionnent, aucune raison de s'en priver.
 

Lien vers le commentaire
Partager sur d’autres sites

il y a 23 minutes, GrOoT64 a dit :

Il y a bien un gars sous DSM7 qui fait tourner PLEX sous Docker avec le transcodage hardware activé ici quand même ? :s

Salut,

Je suis pas sous DSM7. Mais @MilesTEG1oui. Bien qu'il est quelques soucis. Il ne semble pas avoir de soucis de transcodage.

Ton dossier /dev/dri est bien présent sur ton nas ?

Si tu rajoute la ligne device a ton JSON,  que ce passe t'il ?

 

( dsl si déjà posé j'ai pas relu tout le fil )

Lien vers le commentaire
Partager sur d’autres sites

il y a 54 minutes, GrOoT64 a dit :

Il y a bien un gars sous DSM7 qui fait tourner PLEX sous Docker avec le transcodage hardware activé ici quand même ? :s

Yep j'ai une installation sous Docker, mais via un docker-compose (ou Portainer), dans lequel j'ai mis ceci pour ne pas avoir à gérer un JSON :
 

    # Ce qui suit permet au conteneur PMS d'accéder à l'accélération matériel sans avoir besoin d'exporter puis éditer le fichier de configuration JSON du conteneur
    # 
    # Il faut quand même faire le script de modification de permissions.
    devices:
      - /dev/dri:/dev/dri #optional

Et j'ai aussi un script qui se lance à chaque reboot du NAS :

#!/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"

sudo chmod 660 /dev/dri/card0 /dev/dri/renderD128

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

 

Qu'est-ce qui ne fonctionne pas chez toi ?

Lien vers le commentaire
Partager sur d’autres sites

Merci pour ton retour.

Chez moi, impossible d'activer le trancodage matériel et ça me gonfle 😄

Si tu as 5 minutes tu peux m'expliquer le principe de docker compose ? en partant de 0 parce que je sais même pas si c'est un paquet ou une option de docker ^^

il y a 36 minutes, EVOTk a dit :

Ton dossier /dev/dri est bien présent sur ton nas ?

Oui tout à fait avec 'card0" et "renderD128" dedans

il y a 37 minutes, EVOTk a dit :

Si tu rajoute la ligne device a ton JSON,  que ce passe t'il ?

Je perd également le transcodage logiciel ^^

Lien vers le commentaire
Partager sur d’autres sites

Il y a 7 heures, Einsteinium a dit :

@MilesTEG1 Pourquoi le card0 déjà ?

hmmm là comme ça je ne sais pas...
Le tuto que j'avais suivi à l'époque de la mise en place de Plex parlait de /dev/dri et donc de tout ce qu'il y avait dedans.
Je ne sais plus où j'avais choppé le script de modification des permissions...

 

Il y a 8 heures, GrOoT64 a dit :

Si tu as 5 minutes tu peux m'expliquer le principe de docker compose ? en partant de 0 parce que je sais même pas si c'est un paquet ou une option de docker ^^

J'ai suivi ce tuto pour comprendre comment fonctionnait Docker

 

Et après, j'ai appris tout seul en me documentant à droite et à gauche sur internet.

Je ne connais pas le docker-cli.
Pour docker-compose, tu crées un fichier yml (attention au formatage, 2 espaces pour l'indentation...), puis tu lances la création du conteneur depuis le dossier contenant le fichier docker-compose.yml (il faut se nom, sinon faut modifier la commande) avec : docker-compose up -d 

Par exemple, voilà mon fichier docker-compose.yml (épuré, et où il faut changer certaines valeurs) :

---
version: "2.4"
services:
  plex_PlexMediaServer:
    #image: linuxserver/plex:latest
    # https://github.com/linuxserver/docker-plex
    image: ghcr.io/linuxserver/plex
    container_name: plex_PlexMediaServer
    network_mode: host
    environment:
      - PUID=1000  # Utiliser la commande (en SSH) : id NOM_UTILISATEUR
      - PGID=100
      - TZ=Europe/Paris
      #- LANG=fr_FR.UTF8
      #- LANGUAGE=fr_FR.UTF8
      - UMASK=022 #optional
      - VERSION=docker    # docker : Let Docker handle the Plex Version, we keep our Dockerhub Endpoint up to date
                          #          with the latest public builds.
                          # latest : will update plex to the latest version available that you are entitled to.
                          # public : will update plexpass users to the latest public version, useful for plexpass users
                          #          that don't want to be on the bleeding edge but still want the latest public updates.
                          # <specific-version>: will select a specific version (eg 0.9.12.4.1192-9a47d21) of plex to
                          #                     install, note you cannot use this to access plexpass versions if you do not
                          #                     have plexpass.
                          # Dernière version connue pour être OK : (en cas de plantage dûe à une MAJ foireuse)
                          #        1.22.1.4275-48e10484b

      # Si plex est en mode HOST, la ligne suivante n'est pas nécessaire.
      #- PLEX_CLAIM=BLABLA #obtain claim token https://plex.tv/claim expire within 4 minutes.
      
      # Section pour changer le thème à PMS via DOCKER_MODS
      #    - Utilisation de ce dépôt : Source : https://github.com/gilbN/theme.park/wiki/Gitea
      #      Possibilités :  changer xxXXxx dans la ligne  - TP_THEME=xxXXxx
      #                      par :
      #                               aquamarine      <--- Pas mal celui là.
      #                               hotline
      #                               plex            <--- TOP
      #                               dark            <--- TOP
      #                               space-gray      <--- TOP, mon préféré !
      #                               organizr-dark
      - DOCKER_MODS=ghcr.io/gilbn/theme.park:plex
      - TP_THEME=space-gray
    
    # ###############
    # Le label ci-dessous permet à Watchtower de faire les mises à jour automatiquement
    # Cela peut-être supprimé si Watchtower n'est pas utilisé.
    labels:
      - "com.centurylinklabs.watchtower.enable=true"
    # ###############

    volumes:
      - "/volume1/docker/plex/config:/config"
      - "/volume1/docker/plex/transcode:/transcode" #optional
      - "/volume2/medias_1:/data/tvshows:ro"
      - "/volume2/medias_2:/data/movies:ro"
      - "/volume2/medias_3:/data/videos:ro"
    
    # Ce qui suit permet au conteneur PMS d'accéder à l'accélération matériel sans avoir besoin d'exporter puis éditer le fichier de configuration JSON du conteneur
    # 
    # Il faut quand même faire le script de modification de permissions.
    devices:
      - /dev/dri:/dev/dri #optional
    
    restart: unless-stopped
    
    # Les valeurs ci-dessous sont à adapter à la quantité de RAM de votre NAS.
    # Sur mon 920+ j'ai 12Go de RAM.
    mem_limit: 4096m
    mem_reservation: 2048m

Ce qu'il faut changer :
PUID, GUID, les volumes, mem_limit et mem_reservation.
Tu peux commenter/supprimer les deux lignes mem_...
Idem pour la partie Watchtower et la partie theme DOCKER_MODS.

J'installe en mode HOST, plus pratique et conseillé. Pas besoin du PLEX_CLAIM avec ce mode d'installation, enfin j'en ai jamais eu besoin...

 

Hésite pas à poser tes questions sur le sujet du tuto Docker de @.Shad. , on te répondra 😉 
L'apprentissage ne se fait pas en quelques heures hein, pour arriver à comprendre (un peu car je comprends pas encore toutes les subtilités du docker-compose) j'ai mis du temps ^^

 

Lien vers le commentaire
Partager sur d’autres sites

Ha oui pour le script...
J'ai oublié d'en parler 😅

Déjà fait le placer quelque part. Moi j'ai choisi de placer les scripts dans un dossier dédié /volume1/docker/_Scripts-DOCKER/

(après c'est pas obligatoire).

Le script que je remettrais en fin de message doit être lancé avec les droits root. Pour celà on le lance avec le planificateur de tâche : (je ne sais plus exactement dans quel section il est dans DSM6.x... mais le reste semble identique.
Il faut faire une tâche déclenchée (pas planifiée), car le script doit se lancer tout seul au démarrage du NAS, tu pourras aussi le lancer manuellement.
koVRvu7.png

 

1YUE1j9.png

 

BZyWVCp.png

(Il faudra aussi avoir spécifié une destination pour les logs, voir le petit i à coté de "Script défini par l'utilisateur".

 

Le script lui-même :

#!/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"

sudo chmod 660 /dev/dri/card0 /dev/dri/renderD128

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

Ce script qui pourrait être épuré des commentaires et des lignes echo, va changer les droits d'accès sur les dossiers /dev/dricard0 et /dev/dri/renderD128 du NAS.
Il faut cependant que le NAS soit compatible avec une accélération matériel, tous les NAS ne le sont pas. Mais en général, les modèles + le sont.
Tu peux vérifier s'il y a ces dossiers en faisant un :

ls -la /dev/dri

Voilà 🙂

 

il y a 37 minutes, GrOoT64 a dit :

Je savais même pas qu'on pouvait changer le thème de plex ^^

Il faut une image qui le permette, c'est le cas de celle de linuxserver.

Lien vers le commentaire
Partager sur d’autres sites

Il y a 8 heures, Einsteinium a dit :

Quitte à faire du ssh, autant faire du cli directement, quote moi demain je te copierais un exemple pour Plex, docker compose c’est plutôt ceux avec watchtower qui utilise.

Docker-compose permet quelques fonctions supplémentaires.
Par exemple créer un réseau ou un volume (ave des options données) pour une application à la création du conteneur.
Chose qu'on ne peut faire avec docker-cli qu'en plusieurs commandes.
Watchtower ne nécessite pas d'avoir docker-compose pour fonctionner.

Il y a 9 heures, GrOoT64 a dit :

je vais regarder aussi parce que là le mec sur youtube me donne l'impression que c'est la première fois que j'allume un ordi tellement je suis largué

Comme @MilesTEG1 l'a suggéré, tu peux commencer par jeter un œil à mon tutoriel, qui n'a pas la prétention de faire de toi un expert en Docker mais simplement de comprendre dans les grandes lignes ce que tu fais quand tu utilises un script fait par d'autres. La documentation officielle de Docker est très bien structurée et claire, tu y trouveras la plupart des réponses aux questions que tu pourrais te poser, le cas échéant n'hésite pas à demander, on pourra sûrement t'aider.
 

Modifié par .Shad.
Lien vers le commentaire
Partager sur d’autres sites

il y a une heure, MilesTEG1 a dit :

# Les valeurs ci-dessous sont à adapter à la quantité de RAM de votre NAS. # Sur mon 920+ j'ai 12Go de RAM. mem_limit: 4096m mem_reservation: 2048m

Alors sur le DS918+ , j'ai 16Go de RAM, c'est ce serveur PLEX qui va bosser le plus. (où j'ai tous mes utilisateurs)
Pour le DS418Play j'ai 8Go de RAM et ce serveur PLEX fonctionnera seulement en local et je suis le seul utilisateur (films 4k)

Vous me conseillez quoi comme mémoire à utiliser svp ?

Lien vers le commentaire
Partager sur d’autres sites

Pour le DS918+ tu as déjà bien assez de RAM. 😄 

Le transcodage matériel fait surtout travailler le GPU. La mémoire augmentera plus tu as d'utilisateurs actifs sur ta médiathèque simultanément. Mais pour moi 8 Go t'es déjà bien.

Si tu dois transcoder du 4K, oublie le DS418Play (et tout autre NAS au passage), et assure-toi que tes périphériques peuvent lire nativement tes fichiers (utiliser une box Android si besoin pour les TV).

Lien vers le commentaire
Partager sur d’autres sites

il y a 1 minute, .Shad. a dit :

Si tu dois transcoder du 4K, oublie le DS418Play (et tout autre NAS au passage), et assure-toi que tes périphériques peuvent lire nativement tes fichiers (utiliser une box Android si besoin pour les TV).

Je ne compte pas transcoder le 4K (je me sers de ce NAS comme Beta on va dire...)
J'ai une SHIELD PRO pour le salon et une SHIELD classique pour ma chambre.
Tous les périphériques sont capables de lire le 4k sans soucis.

Donc je mets sur le 918+ :

 

    mem_limit: 8192m
    mem_reservation: 4096m

et pour le 418Play (si jamais je mets autre chose que du 4k dessus)

 

    mem_limit: 4096m
    mem_reservation: 2048m

De plus, je ne vois pas la ligne :certificat que j'avais dans le fichier de config
Plus besoin ?

Lien vers le commentaire
Partager sur d’autres sites

il y a 19 minutes, .Shad. a dit :

La documentation officielle de Docker est très bien structurée et claire

C'est vrai, mais elle manque cruellement d'exemple concret d'utilisation de certaines options/commandes...

 

il y a 12 minutes, GrOoT64 a dit :

Alors sur le DS918+ , j'ai 16Go de RAM, c'est ce serveur PLEX qui va bosser le plus. (où j'ai tous mes utilisateurs)
Pour le DS418Play j'ai 8Go de RAM et ce serveur PLEX fonctionnera seulement en local et je suis le seul utilisateur (films 4k)

Vous me conseillez quoi comme mémoire à utiliser svp ?

Je me demande si mettre les limitations de mémoire est vraiment utile... je n'ai jamais vu PMS passer au delà de 800Mo environ...

Lien vers le commentaire
Partager sur d’autres sites

Je confirme pour la limitation de mémoire, je ne connais pas Plex mais si c'est comme Emby ça bouffe au max 1-1.5 Go...
Le volume pour le certificat n'est utile que si tu souhaites que Plex s'expose de lui-même en HTTPS, si tu as un proxy inversé en amont c'est inutile.

Modifié par .Shad.
Lien vers le commentaire
Partager sur d’autres sites

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.