Créer un média-center avec Jellyfin, Sonarr, Radarr et Prowlarr

Avant de créer un média-center, si vous ne l’avez pas encore fait, allez voir l’aperçu générale du serveur, son utilité et sa configuration, pour voir à quoi vous attendre.

Il est recommandé de se connecter à votre serveur à partir de votre PC pour plus de facilité. Vous pourrez copier-coller, et scroll le terminal de votre serveur. Pour plus d’info: Se connecter a votre serveur par SSH

Créer vos Répertoires de Fichiers

Nous utiliserons des hardlinks afin que lorsque les torrents soient téléchargés, ils soient liés directement au dossier média et au dossier torrents sans utiliser le double espace de stockage pour copier-coller le ficher.

Ici je prends en compte que votre dossier de médias sur votre HDD est monté à /mnt/data.

Plus d’info sur les possibles structures des dossiers → Lien

mkdir /mnt/data/server
mkdir /mnt/data/server/media # dossier des médias
mkdir /mnt/data/server/torrents # dossier des torrents

cd /mnt/data/server/torrents
mkdir audiobooks  books  incomplete  movies  music  tv xxx

cd /mnt/data/server/media
mkdir audiobooks  books  movies  music  tv xxx

Nous allons aussi créer un dossier server sur votre SSD principale pour le reste des configs. ~ fait référence à /home/user_name.

mkdir ~/server
mkdir ~/server/compose

Installer Portainer

Image d'exemple de l'ensemble de différents services installés dans Portainer

Portainer va nous faciliter la suite de de ce guide. On va pouvoir installer les conteneurs de Docker (services), les gérer, ect, et ce beaucoup plus facilement.

Allez dans le dossier compose et créer le fichier docker-compose.yml.

cd ~/server/compose
nano ~/server/compose/docker-compose.yml

Ensuite dans l’éditeur de texte, rentrez le code ci-dessous, puis Ctrl + S pour sauvegarder et Ctrl + X pour quitter:

version: '3'
services:
  portainer:
    image: portainer/portainer-ce:latest
    ports:
      - 9000:9000
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - portainer_data:/data
    restart: always
volumes:
  portainer_data:

Attention, respectez bien l’indentation !

Puis enfin, pour installer et lancer le conteneur:

docker-compose up -d

Vous pourrez ainsi accéder à Portainer à l’adresse http://VOTRE_ADRESSE_IP_DU_SERVEUR:9000

Si vous allez dans containers, vous verrez la liste de vos services que vous avez installé, leur nom, leur port externe et interne (sous le format externe:interne), leur adresse IP, mais aussi accéder au logs ou encore à la console depuis les Quick Actions.

Vous pouvez aussi stopper, lancer, relancer, supprimer, etc les différents conteneurs simplement, d’où l’avantage de Portainer.

Ne surtout pas créer des conteneurs directement dans Portainer, où alors en passant depuis le stack et le web editor comme ci-dessous, car Portainer peut créer certain problème.

Les conteneurs se trouvant sur le même réseau communiquent entre eux à partir de leur nom et non de leur IP.

Mettre en place l’ensemble des services du serveur

Dans Portainer, cliquez sur l’environnement local (c’est le seul environnement disponible), puis Stacks, puis sur le bouton + Add stack. Donnez un nom à votre stack, ex main, puis copier-coller dans le Web editor le code ci-dessous:

Installer les conteneurs

Présentation de l'éditeur web de Portainer
services:
  transmission:
    image: haugene/transmission-openvpn
    container_name: transmission
    volumes:
        - '/home/${USER}/server/configs/transmission:/config'
        - '/mnt/data/server/torrents:/data/torrents'
    environment:
        - PUID=1000
        - PGID=1000
        - CREATE_TUN_DEVICE=true
        - OPENVPN_PROVIDER=your_provider
        - OPENVPN_CONFIG=your_country
        - OPENVPN_USERNAME=your_username
        - OPENVPN_PASSWORD=your_password
        - WEBPROXY_ENABLED=false
        - TRANSMISSION_DOWNLOAD_DIR=/data/torrents/
        - TRANSMISSION_IDLE_SEEDING_LIMIT_ENABLED=true
        - TRANSMISSION_SEED_QUEUE_ENABLED=true
        - TRANSMISSION_INCOMPLETE_DIR=/data/torrents/incomplete
        - LOCAL_NETWORK=192.168.0.0/24
    cap_add:
        - NET_ADMIN
    logging:
        driver: json-file
        options:
            max-size: 10m
    ports:
        - "9091:9091"
    restart: unless-stopped
  jellyfin:
    container_name: jellyfin
    image: ghcr.io/linuxserver/jellyfin
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/Paris
    ports:
      - '8096:8096'
    devices:
      - '/dev/dri/renderD128:/dev/dri/renderD128'
      - '/dev/dri/card0:/dev/dri/card0'
    volumes:
      - '/home/${USER}/server/configs/jellyfin:/config'
      - '/mnt/data/server/media:/data/media'
    restart: unless-stopped
  sonarr:
    container_name: sonarr
    image: linuxserver/sonarr
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/Paris
    ports:
      - '8989:8989'
    volumes:
      - '/home/${USER}/server/configs/sonarr:/config'
      - '/mnt/data/server:/data'
    restart: unless-stopped
  radarr:
    container_name: radarr
    image: linuxserver/radarr
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/Paris
    ports:
      - '7878:7878'
    volumes:
      - '/home/${USER}/server/configs/radarr:/config'
      - '/mnt/data/server:/data'
    restart: unless-stopped
  prowlarr:
    container_name: prowlarr
    image: 'hotio/prowlarr:latest'
    ports:
      - '9696:9696'
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/Paris
    volumes:
      - '/home/${USER}/server/configs/prowlarr:/config'
    restart: unless-stopped
    dns:
      - 1.1.1.1
      - 8.8.8.8
      - 8.8.4.4
  lidarr:
    container_name: lidarr
    image: ghcr.io/linuxserver/lidarr
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/Paris
    volumes:
      - '/home/${USER}/server/configs/liadarr:/config'
      - '/mnt/data/server:/data'
    ports:
      - '8686:8686'
    restart: unless-stopped
  readarr:
    container_name: readarr
    image: 'hotio/readarr:nightly'
    ports:
      - '8787:8787'
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/Paris
    volumes:
      - '/home/${USER}/server/configs/readarr:/config'
      - '/mnt/data/server:/data'
    restart: unless-stopped
  readarr-audio-books:
    container_name: readarr-audio-books
    image: 'hotio/readarr:nightly'
    ports:
      - '8786:8787'
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/Paris
    volumes:
      - '/home/${USER}/server/configs/readarr-audio-books:/config'
      - '/mnt/data/server:/data'
    restart: unless-stopped
  flaresolverr:
    container_name: flaresolverr
    image: 'ghcr.io/flaresolverr/flaresolverr:latest'
    ports:
      - '8191:8191'
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/Paris
    restart: unless-stopped

Vous allez devoir modifier certaine données dans ce fichier:

  • OPENVPN_PROVIDER=your_provider
  • OPENVPN_CONFIG=your_country
  • OPENVPN_USERNAME=your_username
  • OPENVPN_PASSWORD=your_password
  • TZ=your_time_zone

Plus d’info pour le VPN: Supported providers et Provider specific settings

Configuration des *arrs (Sonarr, Radarr, …)

La config est similaire pour toutes les applications *arrs, exemple ci-dessous avec Sonarr:

Accédez à http://VOTRE_ADRESSE_IP_DU_SERVEUR:8989

Allez dans Settings → Download Clients → + → Transmission et ajoutez:

  • Name = Transmission
  • Host = transmission (le nom du conteneur de transmission)
  • Port = 9091 (le port interne du conteneur)
  • Category = tv (le nom de votre dossier pour les séries)
Exemple de configuration de transmission

Toujours tester si vous avez la possibilité avant de sauvegarder un quelconque changement.

Allez dans Settings → Media Management → Root Folders → Add Root Folder et ajoutez: /data/media/tv ou le chemin et nom de votre dossier pour les séries.

Allez dans Settings → General → Security → API Key et notez votre clé personnel.

Répétez le même processus pour radarr, lidarr … en changeant à chaque fois la catégorie et le root folder correspond à l’application.

Les liens suivent toujours le format suivant: http://VOTRE_ADRESSE_IP_DU_SERVEUR:port_externe

Bravo vous avez configurer vos différentes applications, mais maintenant il faut les lier avec prowlarr pour commencer à demander et télécharger des médias.

Configurer Prowlarr

Image d'exemple montrant l'ensemble de différents indexers

Mettre en place FlareSolverr

Allez dans Settings → Indexers → + → FlareSolverr et ajoutez:

Exemple de configuration de FlareSolverr

Connecter les *arrs

Allez dans Settings → Apps → + → Lidarr et ajoutez:

Répéter le processus pour tous les services que vous avez installés.

Les liens suivent toujours le format suivant:
http://nom_du_conteneur:port_interne

Si vous avez par exemple deux instances de radarr pour les anime ou la 4k, vous aurez http://radarr:7878 et http://radarranime:7878 avec le même port interne, même si le port externe pour y accéder depuis votre réseau local est différent.

Image d'ensemble de la configuration des *arrs

Mettre en place des indexers

Allez dans indexers → + Add Indexer et ajoutez les différents indexers que vous souhaitez et sélectionnant bien le protocol torrent. Suivez les instructions pour les configurer, comme des cookies, mot de passe, ect.

Plus d’indexers signifie plus de temps pour les rechercher lorsque vos applications *arr font une demande. Néanmoins il est recommandé d’en mettre plusieurs car cela augmente les chances de récupérer un torrent de bonne qualité.

Si Prowlarr vous indique que votre indexer semble être protégé par la protection DDoS de Cloudflare, ajoutez le tag flaresolverr créer ci-dessus pour la contourner.

Bravo, maintenant Prowlarr va automatiquement synchroniser vos indexers avec vos apps *arr.

Configurer Jellyfin

Accédez à http://VOTRE_ADRESSE_IP_DU_SERVEUR:8096

  • Ajoutez toutes les médiathèque en sélectionnant le type de contenu et son emplacement correspondant dans /data/media.
  • Répétez cette opération pour tous les types de médias que vous possédez.
  • Allez dans Tableau de bord → Lecture et activez le transcodage en sélectionnant Intel QuickSync (QSV) si le iGPU de votre CPU intel est assez récent, sinon sélectionner Video Acceleration API (VAAPI) et rentrer /dev/dri/renderD128 dans Appareil VA-API.
Exemple de configuration des médiathèques
Exemple de configuration des options de transcodage

Prochaines étapes après avoir créer un média-center

Bravo vous savez comment créer un média-center, vous avez mis en place le votre, et avez installé le principale pour commencer à lire et télécharger des médias.

Avant de passer à la suite, testez votre installation en essayant de télécharger un film. Si vous avez un quelques problèmes, vérifiez que tout est bien configurer ou allez voir la page de dépannage.


Mettre en place un tunnel Cloudflare et NPM (Nginx Proxy Manager) pour accéder à votre serveur depuis internet sans ouvrir les ports de votre box ou VPN: Accéder à son serveur depuis internet avec NPM et Cloudflare


Paramétrer Homepage pour accéder à vos différents services depuis une page d’accueil: Comment créer une page d’accueil pour ses applications avec Homepage


Installer Authentik pour sécuriser vos services que vous avez mis en ligne et pour gérer la gestion des comptes de façon global: Comment sécuriser vos services grâce au Fournisseur d’Identité Authentik

Puis Comment se connecter en SSO à Jellyfin avec Authentik pour pouvoir se connectant automatiquement.


Configurer Notifiarr pour avoir plein de notifications pour beaucoup de services différents dans votre serveur Discord: Comment recevoir des notifications de vos services sur Discord


Recyclarr est super important, permettant de synchroniser les profils de qualité et langue de TRaSH Guide pour Radarr et Sonarr. Sans, vous allez sans doutes récupérer des médias de mauvaises qualités ou encore avec des sous titre en mandarins incrustés en jaune dans les vidéos. Le faire à la main est fastidieux et plutôt compliqué, d’où l’utilité de Recyclarr: Comment synchroniser automatiquement vos profiles Radarr/Sonarr


Finalement, Whisparr pour télécharger vos contenus pour adulte et Stash comme alternative à Jellyfin pour les visonnés et les gérer, afin d’éviter de l’ajouter à ce dernier. De plus, Stash inclus des fonctionalités supplémentaire spécialement conçu pour:

  • Guide Whisparr pour télécharger vos vidéos pour adultes
  • Guide Stash pour organisater votre contenu pour adultes

Autres:

  • Speedtest tracker | Speedtest automatiques
  • Nextcloud | Hébergement d’un cloud et de son propre Office 365
  • Jellystat | Stats pour Jellyfin
  • Glances | Aperçu de l’utilisation des ressources du système
  • WordPress | Création de site internet, blog, e-commerce
  • Ombi | Découvrir et demander des films et séries
  • Jellyseerr | Découvrir et demander des films et séries
  • Bazarr | Télécharger automatiquement des sous-titres pour vos médias
  • Watchtower | Automatiquement mettre à jours vos conteneurs (services/applications)

Vous avez maintenant une configuration complète pour gérer, accéder et télécharger vos médias, avec des outils pour sécuriser, surveiller et améliorer votre serveur multimédia. Bonne configuration !

Laisser un commentaire