Aller au contenu

[TUTO] Plex via docker, version "express" + Configurations


Messages recommandés

Posté(e) (modifié)

Préambule

Nous allons voir comment faire un docker avec Plex en version "express", entre guillemets car cette version plus rapide à mettre en place utilisera un script pour maintenir le docker à jour et relancera plex chaque nuit par la même, la coupure dure le temps du relancement du docker et au final inutile de surveiller github ou d'utiliser de docker aux supers droits pour maintenir à jour l'image.

Si vous préférez une version plus classique vous avez mon autre tutoriel :

 

I - Préparation de l'installation

A ) On commence par la création d'un dossier "Plex" dans le dossier "docker"

B ) Création de 2 sous dossiers que vous créez dans le dossier "Plex" : "config" et "transcode"

C ) La création d'un utilisateur "Plex", pour lequel on ne définira aucun accès dans les applications et un droit de lecture seule sur les dossiers vidéos.

D ) Récupération du PUID/PGID pour le docker :

Connectez vous en ssh et tapez dans la console "id Plex", on prendra alors note du uid/gid retourné.

E ) Transcodage matériel

Si votre nas est bien compatible : Voir la liste

Alors vous créez un fichier "plexhw.sh" à la racine de notre dossier "Plex" contenant :

#!/bin/sh

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

exit 0

Puis faire une tâche qui s'exécutera au démarrage : Panneau de configuration / Planificateurs de tâches / Créer / Tâche déclenchée / Script défini par l'utilisateur

Avec pour utilisateur "root", en évènement "Démarrage" et dans le script le chemin de notre fichier "/volume1/docker/Plex/plexhw.sh"

Exécutez manuellement la tâche pour appliquer la modification.

 

II - Création du docker

A ) Le script du docker

La création d'un fichier "dockerplex.sh" dans le dossier "Plex" contenant les lignes suivantes :

#!/bin/sh

docker pull lscr.io/linuxserver/plex:latest
docker stop Plex
docker rm Plex
docker image prune -f
docker volume ls -qf dangling=true | xargs -r docker volume rm

docker run -d \
 --cpu-shares=50 \
 --memory=4G \
 --memory-swap=4G \
 --name=Plex \
 --net=host \
 --device=/dev/dri:/dev/dri \
 -e PUID=0000 \
 -e PGID=000 \
 -e VERSION=latest \
 -e TZ=Europe/Paris \
 -v /volume1/multimedia:/data:ro \
 -v /volume1/docker/Plex/transcode:/transcode:rw \
 -v /volume1/docker/Plex/config:/config:rw \
 lscr.io/linuxserver/plex:latest

exit 0

B ) Les variables à personnaliser :

1 ) La mémoire

--memory=4G \
--memory-swap=4G \

Ici le réglage est pour 4Go, valeur idéale surtout lors des parses, néanmoins vous pouvez réduire ces valeurs, il faudra mettre alors pour :

2Go : 2G

1Go : 1G

La variable memory-swap = memory, empêche le docker de déborder dans le swap une fois la limite de mémoire max atteinte.

2 ) Transcodage matériel

Si votre nas n'est pas compatible alors vous supprimez la ligne :

--device=/dev/dri:/dev/dri \

3 ) PUID/PGID

-e PUID=0000 \
-e PGID=000 \

Par les valeurs récupérées au point "I -> D"

4 ) Les dossiers multimédias

-v /volume1/multimedia:/data:ro \

A personnaliser et multiplier en fonction de vos dossiers, par exemple :

-v /volume1/Vidéo:/data/movies:ro \
-v /volume1/Séries:/data/tvshows:ro \

C ) Création et update journalier

Nous créons une tâche qui exécutera notre fichier tous les jours à 5h30 : Panneau de configuration / Planificateurs de tâches / Créer / Tâche planifiée / Script défini par l'utilisateur

Avec pour utilisateur "root" et dans le script le chemin de notre fichier "/volume1/docker/Plex/dockerplex.sh"

Exécutez manuellement la tâche pour la création initiale.

D ) Réclamer le serveur plex

Pour cette étape, il faudra être rapide, après obtention du token, vous aurez 4 minutes.

1 ) Visitez cette page Plex Token et copiez le token obtenu

2 ) Modifiez notre fichier "dockerplex.sh" puis rajoutez la variable :  

-e PLEX_CLAIM=tokenobtenu \

3 ) Exécutez manuellement de nouveau la tâche du point "II -> C"

4 ) Votre serveur est maintenant réclamé, supprimez la variable rajoutée au point "II -> D -> 2"

 

Voilà c'est terminé, Inutile de relancer la tâche à nouveau, la modification temporaire pour le token sautera à la prochaine exécution du script, en seconde partie je donnerai les configurations que j'utilise actuellement pour vous faire gagner du temps.

Adresse du serveur : https://ipdunas:32400 

(en cas d’erreur, rajoutez /web à la fin)

NB Dockerfile avec le label watchtower :

version: "2.1"
services:
  plex:
    cpu_shares: 50
    mem_limit: 4G
    container_name: Plex
    network_mode: host
    devices:
       - /dev/dri:/dev/dri
    labels:
      - com.centurylinklabs.watchtower.enable=true
    environment:
      - PUID=0000
      - PGID=000
      - TZ=Europe/Paris
      - VERSION=latest
    volumes:
      - /volume1/multimedia:/data:ro
      - /volume1/docker/Plex/transcode:/transcode:rw
      - /volume1/docker/Plex/config:/config:rw
    restart: unless-stopped
    image: lscr.io/linuxserver/plex:latest

 

Modifié par Einsteinium
  • Einsteinium a modifié le titre en [TUTO] Plex via docker, version "express"
Posté(e) (modifié)

Configuration du serveur que l'on retrouve en cliquant sur la petite clé à molette en haut à droite de l'interface.

Je vous donne ma configuration, qui de mon point de vue est optimisé, je n'utilise pas les services en ligne de plex (anglais), ni l'upload de photos (pas une photothèque de mon point de vue), musique (apple music pour ma part, même si c'est sympa et bien foutu), le dlna ou le partage itunes (dépassés pour les deux)

Si je ne précise pas un point particulier, alors c'est que le champs est par défaut.

A vous ensuite de personnaliser à votre sauce, cela n'est vraiment que pour vous donner une base de départ, j'y vais néanmoins de mes petits commentaires et vous invite à en débattre le cas échéant si votre avis diverge ou si vous voulez rajouter votre touche.

 

Général

Directement on clique sur le bouton "Afficher en mode avancé".

Ici vous donnez le nom de votre serveur sans caractères spéciaux pour ne pas avoir de problème, on ne coche que "Notifications push" si vous l'utilisez et on laisse le canal de mise à jour en public.

 

Accès à distance

On active pas l'accès à distance, sauf si vous voulez ouvrir votre serveur par le port, ce qui de mon point de vue craint, il vaut mieux ouvrir par un sous domaine que des bots ne trouveront pas grâce à un port scan.

Ici on ne règle que "Vitesse de téléversement par internet", valeur en Mbit/s attention, exemple 400Mbits/s correspondra à 50Mo/s. (Voir google si cela ne vous parle pas)

 

Bibliothèque

On coche tout sauf : "Analyser ma bibliothèque périodiquement" (inutilement gourmand, il y a l'analyse auto lors de l'ajout de fichiers et les tâches planifiées pour le reste) & si vous n'utilisez pas la partie musique : "Inclure les bibliothèques de musique dans les mises à jour automatiques" & "Activer le mélange intelligent sur les artistes et les listes de lecture musicales intelligentes"

Ensuite dans les menus déroulants :

Générer les aperçus vidéo miniatures : "jamais", gourmand, prend de la place inutilement pour un effet graphique que vous ne verrez que si vous allez dans le tableau de bord.

Générer des marqueurs d'introduction : "comme tâche planifiée", utile si vous avez un plex pass, il permet de sauter les introductions, mais gourmand, donc on le place en tâche planifiée.

Générer les miniatures pour les chapitres : "jamais", gourmand, prend de la place inutilement, utilisable que dans certains lecteurs et au final jamais utilisé depuis l'arrivée de la fonction reprendre, fonction qui était bon du temps où il fallait reprendre un film non fini.

Analyser les pistes audio pour le volume : "jamais", gourmand, prend de la place inutilement et ne sert à rien les lecteurs le faisant déjà (nivellement du volume et les transitions intelligentes)

Analyze audio tracks for sonic features : "jamais", je n'utilise pas la partie musique, mais pour plus d'information voir cette page.

Visibilité de l'emplacement : Administrateur seulement, cela ne regarde pas le commun des mortels 😉

 

Extensions :

Région "France" et désactiver les deux cases.

 

Réseau :

Activer le support ipv6 : désactiver (cause trop de problème)

Connexions sécurisées : Obligatoire, inutile de dire pourquoi je pense.

Les 3 champs suivants on laisse vide, car totalement inutiles, même si vous utilisez un domaine/certificat, nous y reviendrons plus bas 🙂

Interface réseau préférée : tout

Strict TLS configuration ☑️

On ne coche pas Activer la découverte du réseau local (GDM)

Flux distants autorisés par utilisateur : 3 pour ma part, à voir comment vous voyez la chose de votre côté.

Réseaux LAN : 192.168.0.0/255.255.255.0 ou 192.168.1.0/255.255.255.0 (ces deux choix correspondent à la plus part des réseaux, à adapter si vous avez une configuration exotique)

Interrompre les session sur pause depuis plus de 30 minutes, contre les vilains qui coupent leur TV sans arrêter la diffusion.

On ne coche pas "Traiter l'IP WAN comme du débit LAN" et "Activer le relais", la première faisant sauter la limite de débit distant et la seconde inutile car bridée et peut poser des problèmes à distance.

URL personnalisées pour accéder au serveur, si vous utilisez votre serveur que localement alors vous ne mettez que : https://192.168.X.X:32400 (en mettant l'ip de votre nas), si vous utilisez le nas en plus via un sous domaine, vous mettez alors : https://192.168.X.X:32400,https://domain.ndd.fr (Je reviendrai sur la fin au réglage à faire dans le reverse proxy)

On laissera le champs suivant vide et la dernière case "Webhooks" décochée.

 

Transcodeur

Qualité du transcodeur : Favoriser une haute vitesse d'encodage

Répertoire temporaire : /transcode

Taille du tampon : 60

Préréglage x264 : hyper rapide

Et on coche les 4 cases suivantes, sauf la seconde si vous voulez autoriser le transcodage vidéo.

Pour ma part tous mes lecteurs sont à jour et j'ai la fibre, les réglages sont faits pour la vitesse, si vous transcodez ils sont optimaux et le client aura la qualité qui correspondra à son débit, ce n'est pas parce qu'on aura choisi la vitesse, que l'image sera dégueulasse.

 

Langues

Sélectionnez automatiquement les pistes audio et de sous-titres ☑️

Et dans les menus : Français, manuellement et Français

 

DLNA

Décoché

 

Tâches planifiées

Entre 2 et 5h du matin (Rappelez vous notre dock sera relancé à 5h30) inutile de faire une plage plus longue et avec ces horaires elle se retrouve dans une plage normalement calme.

On coche tout sauf : "Mettre à jour l'analyse des médias durant la maintenance" & "Procéder à une analyse étendue des médias pendant la maintenance", deux tâches gourmandes inutiles.

Et si vous n'utilisez pas les photos : "Chercher les noms de lieux manquants pour les éléments des sections photo." & "Analyser et marquer les photos"

 

Bonus : Utilisation d'un sous domaine pour Plex

En partant du principe que votre domaine est configuré & après installation du certificat en suivant le tutoriel suivant :

Pour DSM 7, n'ayant plus vue sur DSM 6

Dans Panneau de configuration / Sécurité / Avancé / Niveau de profil TLS / SSL : Compatibilité intermédiaire

Dans : Panneau de configuration / Portail de connexion / Avancé
On clique sur le bouton "Proxy inversé" puis "Créer".

Dans Général :

Nom du proxy inversé : Plex
Source :
- Protocole : HTTPS
- Nom d'hôte : plex.ndd.fr
- port : 443
Activer HSTS ☑️
Destination :
- Protocole : HTTPS
- Nom d'hôte : localhost
- Port : 32400

Dans En-tête personnalisée :

On fait "Créer" puis "WebSocket"
Puis on fera "Créer" puis "Créer" pour les variables suivantes :
X-Plex-Client-Identifier $http_x_plex_client_identifier
X-Plex-Device $http_x_plex_device
X-Plex-Device-Name $http_x_plex_device_name
X-Plex-Platform $http_x_plex_platform
X-Plex-Platform-Version $http_x_plex_platform_version
X-Plex-Product $http_x_plex_product
X-Plex-Token $http_x_plex_token
X-Plex-Version $http_x_plex_version
X-Plex-Nocache $http_x_plex_nocache
X-Plex-Provides $http_x_plex_provides
X-Plex-Device-Vendor $http_x_plex_device_vendor
X-Plex-Model $http_x_plex_model

Dans Paramètres avancés :

Les 3 délais à 60
Version HTTP du proxy : HTTP 1.1
Utiliser la page d'erreur renvoyée par le serveur cible

C'est terminé pour les réglages, enjoy 😉

Modifié par Einsteinium
Ajout pour "Niveau de profil TLS / SSL"
  • 4 semaines après...
Posté(e)

Merci @pluton212+, A partir du moment ou l'on fait du reverse proxy, elles sont utile, le websocket pour les parties "Alertes" et "Console" dans les paramètres du serveur, les autres pour la récupération des informations clients complètes dans tous les cas de figure.

Posté(e)

@CyberFr Merci 🙂

La différence entre celui ci et l'ancien, c'est la méthode de déploiement qui ici est plus rapide, on ne par perd de temps dans l'interface graphique de docker, moins lourd en lecture on va à l'essentiel, avec en prime des réglages de base pour plex 🙂

Posté(e)
Le 04/01/2022 à 10:31, Einsteinium a dit :

C ) Création et update journalier

Nous créons une tâche qui exécutera notre fichier tous les jours à 5h30 : Panneau de configuration / Planificateurs de tâches / Créer / Tâche planifiée / Script défini par l'utilisateur

Avec pour utilisateur "root" et dans le script le chemin de notre fichier "/volume1/docker/Plex/dockerplex.sh"

Exécutez manuellement la tâche pour la création initiale.

Lorsque j'exécute la tâche, le conteneur Plex disparaît de docker. Le journal indique qu'un dossier n'a pas été trouvé et pourtant il existe bien avec le bon chemin d'accès.

PJ1.jpg

PJ2.jpg

PJ3.jpg

Posté(e)
Le 04/01/2022 à 10:31, Einsteinium a dit :

4 ) Les dossiers multimédias

-v /volume1/multimedia:/data:ro \

A personnaliser et multiplier en fonction de vos dossiers, par exemple :

-v /volume1/Vidéo:/data/movies:ro \
-v /volume1/Séries:/data/tvshows:ro \

Si tu regardes bien le format, c'est -v /Emplacement sur nas:/emplacement dans le docker:ro \

Toi tu as juste mis : -v /Emplacement sur nas:ro \

Posté(e)

Si je te suis bien, Vidéo, et Séries sont des dossiers partagés à le racine dans Vomume1 et data se situe dans /Volume1/docker/Plex/data. Tu le références simplement par /data précédé de deux points.

Pourquoi deux dossiers partagés pour un même contenu ?

Désolé mais je débute.

Posté(e)

Non là je donne des exemples, ils faut monté tes dossiers multimédias dans le docker pour qu’il voit tes fichiers, après côté docker tu choisis comme tu veux, là j’ai mis /data/movies, tu peux mettre /multi/films si tu préfères, regarde bien mon poste précédent, je ne peux pas faire plus clair 🙂

Posté(e)

Merci @Einsteinium pour ton tuto clair et précis.
Ca m'a pris quelques minutes et ça fonctionne bien.


J'ai tout de même une question pour toi concernant les applications PLEX. Lorsque je mets les paramètres par défaut avec l'accès à distance etc j'ai accès à mon serveur dans les applications PLEX (Windows, IOS et Android) mais de manière indirecte en dehors de mon réseau. Or quand je me connecte avec mon navigateur j'apparais en connexion directe. (Pas d'IP fixe donc DDNS et reverse proxy). Lorsque je mets tes paramètres, je perds complètement l'accès à mon serveur en dehors de mon réseau local pour mes applications.
Connaitrais-tu un moyen de pouvoir faire des connections directes sans VPN en dehors de mon réseau local (comme sur mon navigateur) pour les applications?

Merci d'avance,

Arnaud

Posté(e)

Au temps pour moi, tes paramètres fonctionnent bien, en changeant la config j'avais supprimé ma règle de ports dans mon pare-feu et oublier d'indiquer l'Irlande afin de pas être en indirect.

Tout est rentré dans l'ordre.

Encore merci!

Posté(e)

Bonsoir,

Tout d'abord merci pour ce tuto clair et rapide a mettre en place.

J'ai appliqué le tuto il y a une dizaine de jour mais seulement depuis 2 jours, j'ai une notification de DSM comme quoi le container plex s'est arrêté de manière inattendue. Apparemment sans incidence sur le fonctionnement a par recevoir la notification chaque jour. (Peut-être que conteneur met trop de temps à s'arrêter ?!?)

Autre petit problème non bloquant, dans les log docker du conteneur plex, l'heure des log est décalée d'une heure... Pourtant j'ai bien mis Europe/Paris....

Bref si quelqu'un à une idée pour résoudre ces petits aléa.

Merci d'avance 😀

Posté(e)

Ce type d’erreur n’arrive que si l’on arrête manuellement le docker pour le relancer (un update ?), alors a l’exécution du script suivant on reçoit cette erreur, mais effectivement sans aucune importance au finale.

Je n’ai pas de problème horaire pour ma part dans les logs… ton nas est bien à l’heure ?

Posté(e)

Oui c'est suite au script d'update/redémarrage du conteneur. 

Mon nas est bien à l'heure et en vérifiant, c'est tous les conteneurs docker qui sont en décalage d'une heure! 

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.