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 un média-center : Préambule
Lire la liste des prérequis !
Installer Docker et Docker Compose → Comment installer Docker sur Debian
Monter et fusionner vos HDD de médias → Comment monter et fusionner plusieurs disques durs sous Linux
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

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

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)

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

Mettre en place FlareSolverr
Allez dans Settings → Indexers → + → FlareSolverr et ajoutez:
- Name = FlareSolverr
- Tags = flaresolverr
- Host = http://flaresolverr:8191/

Connecter les *arrs
Allez dans Settings → Apps → + → Lidarr et ajoutez:
- Name = Lidarr
- Lidarr Server = http://lidarr:8686
- API Key = votre clée que vous avez noté
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.

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.


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 !