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

Stockage

Disque système

Disque de téléchargement

Disque de stockage

Système d'exploitation

Les systèmes d'exploitation testés et recommandés :

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 :

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

  1. Rendez-vous sur la page de gestion des tokens : https://my.nordaccount.com/dashboard/nordvpn/access-tokens/
  2. Générez un nouveau token d'accès
  3. 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 à :

  1. Se rendre sur un site de téléchargement
  2. Télécharger le fichier directement ou récupérer un fichier torrent
  3. 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 à :

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é :

  1. Il est ajouté à la base de données de Radarr/Sonarr
  2. Le torrent est envoyé au client de téléchargement (qBittorrent ou Transmission)
  3. Le téléchargement démarre automatiquement dans le dossier configuré

5. Import et renommage

À la fin du téléchargement, Radarr/Sonarr :

6. Mise à disposition (Plex/Jellyfin)

Plex et/ou Jellyfin détectent automatiquement les nouveaux fichiers dans leurs bibliothèques et :

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 :

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

  1. Ajouter une bibliothèque > Films > Parcourir... > /Films
  2. Avancé > Mettre 2 dans le paramètre "Taille minimum des collections automatiques"

Séries

Ajouter une bibliothèque > Séries TV > Parcourir... > /Series

Animés

  1. Ajouter une bibliothèque > Séries TV > Parcourir... > /Animes
  2. Avancé > 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

Notifications

Cliquez sur la clé en haut à droite > Réglages > Général

Accès à distance

Cliquez sur la clé en haut à droite > Réglages > Accès à distance

Bibliothèque

Cliquez sur la clé en haut à droite > Réglages > Bibliothèque

Réseau

Cliquez sur la clé en haut à droite > Réglages > Réseau

⚠️ 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.