Automatisation d'un Plex
Prérequis
Prérequis
Configuration matérielle
Pour cette mise en place, vous aurez besoin d'une machine suffisamment puissante. Voici la configuration recommandée basée sur mon installation/expérience :
Processeur et mémoire
- 2 Sockets
- 10 Cœurs
- 32 Go de RAM
Stockage
Disque système
- 64 Go minimum (HDD ou SSD)
Disque de téléchargement
- Type : SSD
- Important : La vitesse d'écriture doit être supérieure à votre débit de connexion Internet pour éviter de saturer la RAM lors de téléchargements importants
Disque de stockage
- Grande capacité pour le stockage final des médias
- Exemple de configuration : RAID 5 de 7 To en HDD SAS (bon compromis entre vitesse, capacité et coût)
Système d'exploitation
Les systèmes d'exploitation testés et recommandés :
- Debian
- Ubuntu Server 24.04 (actuellement utilisé)
Compatibilité : Tout système d'exploitation supportant Docker devrait fonctionner, y compris les systèmes NAS compatibles.
Reverse Proxy
Certain services pourront être accessible depuis l'exterieur de votre réseau notamment pour le serveur Plex et le serveur Jellyfin. C'est pourquoi je vous conseille l'utilisation d'un reverse proxy pour géré les sous domaines d'accès externe.
Compétences requises
Pour mettre en place et administrer cette infrastructure, vous aurez besoin de :
- Connaissances de base en réseau
- Bases en Docker (recommandé pour comprendre le fonctionnement de l'ensemble)
NordVPN
Installation et Configuration de NordVPN sur Linux
Installation
Téléchargez et exécutez le script d'installation officiel de NordVPN :
wget https://downloads.nordcdn.com/apps/linux/install.sh
chmod +x install.sh
sudo ./install.sh
Une fois le script terminé, la commande nordvpn est disponible sur votre système.
Authentification
Génération du token d'accès
- Rendez-vous sur la page de gestion des tokens : https://my.nordaccount.com/dashboard/nordvpn/access-tokens/
- Générez un nouveau token d'accès
- Conservez ce token en lieu sûr
Connexion avec le token
nordvpn login --token votretoken
Test de connexion
Vérifiez que l'authentification a réussi en vous connectant à un serveur :
nordvpn c
Un message de connexion devrait s'afficher, confirmant la bonne identification.
Configuration
Liste blanche (Allowlist)
Ajoutez les sous-réseaux et ports nécessaires à la liste blanche :
# Autoriser tous les sous-réseaux (ou configurez manuellement des sous-réseaux spécifiques)
nordvpn allowlist add subnet 0.0.0.0/0
# Port SSH
nordvpn allowlist add port 22
# Port pour qBittorrent (torrent)
nordvpn allowlist add port 6881
# Port pour l'interface Web de qBittorrent
nordvpn allowlist add port 8080
# Port pour l'interface Plex
nordvpn allowlist add port 32400
Paramètres DNS et connexion automatique
# Configuration du DNS (modifiable selon vos préférences)
nordvpn set dns 1.1.1.1
# Activation de la connexion automatique sur un serveur suisse optimisé P2P
nordvpn set autoconnect enable ch368
# Connexion manuelle au serveur (nécessaire avant d'activer le kill switch)
nordvpn c ch368
# Activation du kill switch (évite les fuites de données en cas de déconnexion)
nordvpn set killswitch enabled
Vérification
Redémarrez votre machine :
sudo reboot
Après le redémarrage, vérifiez l'état de la connexion VPN :
nordvpn status
Vous devriez être automatiquement connecté au serveur configuré (ch368).
La configuration de NordVPN est maintenant terminée.
Explication et Contexte
Présentation de la stack et fonctionnement
Contexte
Lors du téléchargement de fichiers multimédias sur Internet (films, séries, animés), la méthode traditionnelle consiste à :
- Se rendre sur un site de téléchargement
- Télécharger le fichier directement ou récupérer un fichier torrent
- L'ajouter manuellement à un client de téléchargement
Cette approche devient rapidement fastidieuse, surtout lorsque plusieurs personnes font des demandes régulières.
Objectif de l'automatisation
L'infrastructure présentée ici permet d'automatiser entièrement ce processus. Elle s'inspire de nombreuses sources et combine plusieurs outils open source pour créer un système fluide et efficace.
Fonctionnement de la chaîne automatisée
1. Demande utilisateur (Jellyseerr)
L'utilisateur se connecte à Jellyseerr, une interface web présentant un catalogue de films et séries similaire à Netflix. En un seul clic, il peut effectuer une demande de téléchargement de manière simple et intuitive.
2. Gestion des demandes (Radarr/Sonarr)
Jellyseerr transmet automatiquement la demande à :
- Radarr pour les films
- Sonarr pour les séries et animés
3. Recherche sur les indexeurs (Prowlarr/Jackett)
Radarr ou Sonarr interrogent Prowlarr et/ou Jackett qui vont rechercher le média sur les différents indexeurs configurés (YGG, The Pirate Bay, etc.).
Si le média existe, Radarr/Sonarr appliquent les filtres de qualité prédéfinis (résolution, codec, taille, etc.).
4. Téléchargement (qBittorrent/Transmission)
Une fois le fichier torrent correspondant aux critères trouvé :
- Il est ajouté à la base de données de Radarr/Sonarr
- Le torrent est envoyé au client de téléchargement (qBittorrent ou Transmission)
- Le téléchargement démarre automatiquement dans le dossier configuré
5. Import et renommage
À la fin du téléchargement, Radarr/Sonarr :
- Importent le fichier téléchargé
- Le déplacent vers le dossier de bibliothèque approprié
- Le renomment selon une nomenclature standardisée pour assurer la compatibilité avec Plex/Jellyfin
6. Mise à disposition (Plex/Jellyfin)
Plex et/ou Jellyfin détectent automatiquement les nouveaux fichiers dans leurs bibliothèques et :
- Récupèrent les métadonnées (affiches, synopsis, casting, etc.) depuis des bases de données tierces
- Rendent le contenu immédiatement disponible pour le visionnage
Résultat pour l'utilisateur
Expérience utilisateur : Un simple clic sur un bouton
Délai de disponibilité : Entre 10 et 15 minutes (selon la vitesse de connexion et la taille du fichier)
Intervention manuelle : Aucune
Améliorations supplémentaires
D'autres logiciels seront ajoutés à cette stack pour améliorer encore la gestion et l'interaction avec les utilisateurs. Ces outils seront présentés dans la suite de cette procédure.
Gestion du stockage
Configuration du montage des disques de stockage
Pour le stockage, j'utilise deux disques :
- 1 disque pour les téléchargements à court terme (SSD de 600 Go)
- 1 disque pour le stockage des films (HDD SAS RAID 5 de 7 To)
Afin de monter les disques de manière fiable et stable, il est nécessaire de faire un montage via le fichier fstab en utilisant l'UUID du disque.
Récupération des UUID des disques
Pour récupérer l'UUID de chaque partition que nous voulons monter, utilisez la commande suivante qui permet de lister les UUID des disques :
ls -l /dev/disk/by-uuid/
Voici les deux UUID dont j'ai besoin dans mon cas :
63dd0799-8ae8-4a4d-9d4e-dfd685839c63
84f40021-c9af-4e3f-ae3d-9aa4ada4559d
Modification du fichier fstab
Avec ces informations, nous allons modifier le fichier /etc/fstab pour effectuer un montage permanent de ces disques.
Ajoutez les lignes suivantes en remplaçant les UUID par les vôtres :
UUID="84f40021-c9af-4e3f-ae3d-9aa4ada4559d" /mnt/uploads ext4 defaults 0 2
UUID="63dd0799-8ae8-4a4d-9d4e-dfd685839c63" /mnt/mediatech ext4 defaults 0 2
Application de la configuration
Une fois les modifications effectuées, rechargez la configuration du système :
sudo systemctl daemon-reload
Puis appliquez les montages avec la commande :
sudo mount -a
Si vous n'obtenez aucun message d'erreur, tout s'est bien passé.
Vérification
Vous pouvez vérifier que le montage fonctionne correctement avec la commande suivante :
df -h
Cette commande permet de voir les points de montage des disques ainsi que leur taille.
Configuration du Conteneur Plex
Configuration du conteneur Plex avec Docker Compose
Pour la configuration du conteneur Plex, je vais vous présenter ma configuration et l'expliquer en détail.
J'utilise Docker Compose car je trouve cette approche plus pertinente que docker run et plus propre à maintenir.
Création du dossier et du fichier de configuration
Pour commencer, créez un dossier avec les permissions 755 depuis l'utilisateur classique (non root).
Créez ensuite un fichier compose.yml avec le contenu suivant :
---
services:
plex:
image: lscr.io/linuxserver/plex:latest
container_name: plex # nom du conteneur
network_mode: host # meilleure solution pour l'accès externe
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/Paris # Timezone facultatif mais conseillé surtout pour les logs
- VERSION=docker
- PLEX_CLAIM=claim-yCeL6NtACpscyk-nYrxA # Token obtenu sur le site de plex
volumes:
- ./config:/config # Stocke la configuration de votre conteneur
- /mnt/mediatech/Series:/Series # Pointe vers le stockage des Séries
- /mnt/mediatech/Films:/Films # Pointe vers le stockage des Films
- /mnt/mediatech/Animes:/Animes # Pointe vers le stockage des Animés
restart: unless-stopped # Démarrage automatique sauf si arrêté manuellement
⚠️ Important : Le token de Plex est valable 4 minutes, donc ajoutez-le au dernier moment avant le démarrage.
Démarrage du conteneur
Téléchargez l'image Docker :
docker compose pull
Puis lancez le conteneur en mode "detached" (en daemon / tâche de fond) :
docker compose up -d
Vous pouvez éventuellement consulter les logs en cas d'erreur :
docker logs -f plex
Vous devriez voir que le serveur a bien été "claim". Dans ce cas, rendez-vous sur l'adresse du serveur : https://<adresseip>:32400/web
Connectez-vous avec votre compte Plex puis suivez la procédure de configuration.
Ajout des bibliothèques
Films
Ajouter une bibliothèque > Films > Parcourir... > /FilmsAvancé > Mettre 2 dans le paramètre "Taille minimum des collections automatiques"
Séries
Ajouter une bibliothèque > Séries TV > Parcourir... > /Series
Animés
Ajouter une bibliothèque > Séries TV > Parcourir... > /AnimesAvancé > Ordre des épisodes > The TVDB(Permet de mieux trier les épisodes des animés qui sont parfois complexes à gérer)
Une fois les trois (ou plus) bibliothèques ajoutées, vous pouvez finaliser la configuration. En fonction du nombre de médias, la détection des affiches et autres métadonnées peut prendre du temps, laissez le processus se terminer.
Configuration des paramètres Plex (obligatoires selon moi)
Plex Home
Cliquez sur la clé en haut à droite > Plex Home
- Créez les profils pour les membres de votre entourage afin que chaque personne ait son propre historique.
Notifications
Cliquez sur la clé en haut à droite > Réglages > Général
- Cochez "Notifications push" (cette option peut nécessiter Plex Pass)
Accès à distance
Cliquez sur la clé en haut à droite > Réglages > Accès à distance
- Cochez "Spécifier un port public manuellement" et indiquez le port 32400 (ou autre)
- N'oubliez pas de faire la redirection de port sur votre routeur/box
Bibliothèque
Cliquez sur la clé en haut à droite > Réglages > Bibliothèque
- Cochez les quatre premiers paramètres (certaines options peuvent nécessiter Plex Pass)
Réseau
Cliquez sur la clé en haut à droite > Réglages > Réseau
- Choisissez votre interface avec l'adresse locale dans le paramètre "Interface réseau préférée" (dans mon cas "ens18")
⚠️ Important : À chaque modification, pensez à enregistrer les paramètres.
Conclusion
La configuration de Plex est maintenant terminée. Si un film est ajouté et correctement nommé dans les dossiers que vous avez configurés, il devrait apparaître assez rapidement dans l'interface et être lisible.