Docker : installer Plex avec un SSL en 6 minutes (ou moins)

Après avoir lu un sujet concernant une installation à la main de Plex sur un “vieux” Debian, je me suis dit qu’il fallait quand même rappeler que tout est faisable en quelques minutes et de manière extrêmement simple. Comme ça on aura un beau Plex (tout est relatif…) avec un beau SSL qui se MàJ tout seul. 2 avantages à Docker : c’est rapide/facile à mettre en place et ça permet de ne sauvegarder que les configurations des applications (quelques Mo tout au plus dans bien des cas) et on peut donc tout réinstaller en moins de temps qu’il ne le faut pour l’écrire.

Pré-requis : un serveur dédié (voire un VPS) et créer un sous-domaine “plex” (ce qui donnerait plex.upandclear.org) qui redirige sur l’IP du serveur/VPS.

 

 

Commencer par installer Docker-CE (Community Edition) en suivant le guide selon l’OS. En bonus, tester que Docker fonctionne bien en lançant un Hello-world :

[email protected]:~$ docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
9bb5a5d4561a: Pull complete 
Digest: sha256:f5233545e43561214ca4891fd1157e1c3c563316ed8e237750d59bde73361e77
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/engine/userguide/

[email protected]:~$ 

 

 

Maintenant que Docker est en place il faut ajouter 3 containers :

  1. Un Proxy-Nginx qui va permettre d’accéder à Plex (ou tout autre Docker installé) via un sous-domaine
  2. Un générateur de SSL via Lets Encrypt (avec mise à jour automatisée)
  3. Plex évidemment
  4. Ce que vous devez sauvegarder

 

 

 

Proxy-Nginx

J’utilise jwilder/nginx-proxy : DockerHub / GitHub. On remarque au passage que pour lancer un Docker il convient (la plupart du temps) d’indiquer utilisateur/projet pris sur DockerHub. Pour l’installer/lancer :

docker run -d -p 80:80 -p 443:443 \
  --name nginx-proxy \
  --restart always \
  -e DEFAULT_HOST=upandclear.org \
  -v /home/aerya/docker/nginx-proxy/certs:/etc/nginx/certs:ro \
  -v /home/aerya/docker/nginx-proxy/dhparam:/etc/nginx/dhparam \
  -v /etc/nginx/vhost.d \
  -v /usr/share/nginx/html \
  -v /var/run/docker.sock:/tmp/docker.sock:ro \
  --label com.github.jrcs.letsencrypt_nginx_proxy_companion.nginx_proxy \
  jwilder/nginx-proxy

Remplacer mon domaine et mon pseudo par vos informations et le tour est joué !

Pour ceux qui veulent comprendre un peu : on lance ce docker qui va ouvrir et rediriger les ports HTTP (80) et HTTPS (443), avec une option pour qu’il se relance tout seul en cas de coupure/reboot et on lui dit de stocker les informations permanentes (certificats SSL) dans /home/…/docker/nginx-proxy/certs, pareil pour DHPARAM. Et pour terminer on lie ce container à celui qu’on installe juste après pour Lets Encrypt.

 

 

 

SSL

J’utilise jrcs/letsencrypt-nginx-proxy-companion : DockerHub / GitHub. Pour l’installer :

docker run -d \
  --name=letsencrypt-nginx-proxy-companion \
  --restart always \
  -v /home/aerya/docker/nginx-proxy/certs:/etc/nginx/certs:rw \
  -v /var/run/docker.sock:/var/run/docker.sock:ro \
  --volumes-from nginx-proxy \
  jrcs/letsencrypt-nginx-proxy-companion

Voilà. Il ne reste qu’à ajouter des Dockers et quelques options si on souhaite les faire passer par le proxy Nginx et les mettre en SSL.

 

 

 

Plex

J’utilise le container officiel plexinc/pms-docker : DockerHub / GitHub. Pour l’installer :

docker run \
-d \
--name plex \
--restart always \
-p 32400:32400/tcp \
-p 3005:3005/tcp \
-p 8324:8324/tcp \
-p 32469:32469/tcp \
-p 1900:1900/udp \
-p 32410:32410/udp \
-p 32412:32412/udp \
-p 32413:32413/udp \
-p 32414:32414/udp \
-e TZ="Europe/Paris" \
-e PLEX_CLAIM="claim-codearallonge" \
-e ADVERTISE_IP="http://ip_de_mon_serveur:32400/" \
-h plex.upandclear.org \
-v /home/aerya/docker/plex:/config \
-v /tmp:/transcode \
-v /mnt/unionfs:/data \
-e "VIRTUAL_PORT=32400" \
-e "VIRTUAL_HOST=plex.upandclear.org" \
-e "LETSENCRYPT_HOST=plex.upandclear.org" \
-e "[email protected]" \
plexinc/pms-docker

On lance Plex, on ouvre tous les ports, on le met à la date/heure de PARIS (ou ce que vous voulez) et… on configure un peu :

  • PLEX_CLAIM : vous avez sans doute lu dans plein de tutoriels que pour activer Plex il fallait se connecter en proxy à son serveur etc. Je sens que certains ont connu des moments longs et solitaires. Avec Docker c’est plus simple : vous créez un compte gratuit sur plex.tv et vous prenez ensuite un code à usage unique (valide 4 minutes) pour lier ce nouveau serveur Plex à votre compte. Et c’est plié.
  • ADVERTISE_IP : histoire d’aider un peu vous indiquez votre IP:PORT d’installation
  • -h plex.upandclear.org, svp changez… Mettez votre sous-domaine créé pour l’occasion
  • -v /home/aerya/docker/plex : on sauvegarde localement notre configuration de Plex
  • -v /tmp : on force Plex à utiliser la RAM pour le transcodage, un peu plus rapide que via les disques durs
  • -v /mnt/unionfs : c’est le dossier où je stocke mon contenu. Si vous avez tout dans home/olivier/medias alors mettez ça et si du genre /home/olivier/films, /home/olivier/series, alors mettez /home/olivier

Et les options dédiées au proxy Nginx et au SSL :

  • -e … 32400 : le port vers lequel le proxy doit rediriger (donc 32400 vu que c’est le port d’accès de PlexWeb)
  • -e … host : le sous-domaine visé
  • -e LE host : le sous-domaine pour l’établissement du SSL via Lets Encrypt
  • -e LE email : l’email utilisé pour générer le SSL

Et voilou, bon film :)

 

 

Sauvegarde

Docker s’installe et se réinstalle en un rien de temps. Le plus long est de préparer son docker run la première fois. Du coup, selon mes exemples, ce qu’il faut réellement sauvegarder :

  • Vos médias, selon la place que ça prend c’est facile ou impossible. Parfois entre les deux
  • Le contenu de /home/aerya/docker, qui contient toutes les configurations des Dockers

 

 

(3 683 vues)
0 0 vote
Note d'article
S’abonner
Notifier de
14 Commentaires
Inline Feedbacks
Voir tout

Bonsoir,
Je ne parviens pas a faire apparaitre mon serveur maigres le CLAIM_PLEX renseigné correctement
Merci et bonne soirée

Bonsoir, J’ai fais le blond lors de l’installation de Plex. A la ligne 20 (le dossier où sont stocké les médias) j’ai fais une erreur, du coup impossible d’avoir le dossier qui va bien dans mon Plex. Y’a t’il moyen de rattraper ça ou faut que je réinstalle ? Autre question, avez vous réussi à installer UAS avec cette version… Lire la suite »

Merci bien.
Je vais me mettre Portainer du coup.
Au passage, comment valider les changements dans Portainer, lors d’un prétendent essai je n’arrivais pas à faire prendre en compte mes
Modifications.
Pour UAS certainement un soucis de droits puisqu’une fois mis dans le dossier et le docker PMS relancé celui-ci apparaît dans les plugins mais impossible d’aller dessus,

Bonjour, Le boulet est de retour. J’ai reinstallé mon docker et portainer, je fais tourner watcher3 jackett et portainer sans soucis (ou presque, mais ce sont de petits details), j’ai mes soucis avec Muximux comme evoqué sur MDD, et voila que j’ai un soucis avec Plex maintenant. Je suppose que c’est moi le soucis, mais j’ai beau lire et relire,… Lire la suite »

OMFG 😱
Un grand merci à toi, ça fonctionne top, et même UAS fonctionne.
J’ai plus qu’a trouver pourquoi Muximux/Organizr ne fonctionne pas et ce sera parfait.

Encore merci de ton aide, et de vanter les mérites de docker :), c’est clairement un ÉNORME avantage pour les gens qui ont du mal avec Linux.

J’ai crié victoire trop vite. J’ai bien accès à mon serveur, mais j’ai un message comme quoi il n’est pas dispo en dehors de mon réseau local, du coup y’a rien qui se lit, et maintenant cerise sur le gâteau mon serveur n’est pas réclame et impossible de le réclamer

Bon ben un coup de
[code]sudo service nginx stop[/code] et la hop, accès nickel.
Le temps de chercher comment régler nginx je relance donc par sécurité, et miracle je suis toujours en vert.
Je croise les doigts.

Pour ce qui est d’utiliser la RAM pour le transcodage, ne vaudrait-il pas mieux utiliser un mount tmpfs ?
https://docs.docker.com/compose/compose-file/#tmpfs