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