plex_fr_discord_repo/docker-compose/openvpn-rutorrent-prowlarr-jackett-flaresolver-radarr-sonarr
2021-08-20 00:39:20 +02:00
..
.env Transférer les fichiers vers 'docker-compose/openvpn-rutorrent-prowlarr-jackett-flaresolver-radarr-sonarr' 2021-08-17 23:56:04 +02:00
docker-compose.yml MAJ stackdl/docker-compose 2021-08-19 00:01:27 +02:00
readme.md MAJ stackdl/readme.md 2021-08-20 00:39:20 +02:00
rtorrent-rutorrent.env MAJ env rutorrent 2021-08-18 16:10:28 +02:00
TUN.sh Ajout TUN.sh 2021-08-18 15:34:04 +02:00

Installation de la stack "Downloads-VPN"

Cette stack docker-compose contient les logiciels :

  • OpenVPN Client
  • Jackett
  • Prowlarr
  • rutorrent
  • Qbittorrent
  • Sonarr
  • Radarr

Elle permet d'installer rapidement ces logiciels et de s'assurer que ces derniers ne communiquerons que à travers le Client VPN.

Disclamer : Ce tutoriel n'est pas là pour vous apprendre à télécharger des fichiers illégaux, tous messages à ce sujet seront supprimés.

Table des matières

1. Prérequis

  • Cette stack est concu pour fonctionner dans un dossier downloads-vpn, avec l'architecture suivante :
downloads-vpn ---- vpn ------------ config
               |                 |_ scripts
               |
               |-- rutorrent ------ data
               |                 |_ passwd
               |                 |_ downloads
               |
               |-- prowlarr ------- config
               |
               |-- sonarr --------- config
               |                 |_ downloads
               |
               |-- radarr --------- config
               |                 |_ downloads
               |
               |-- jackett -------- config
               |
               |-- qbittorrent ---- config
               |                 |_ downloads
  • Dans le paragraphe 1.a nous allons les créer avec une ligne de commande, et dans le paragraphe 1.b nous allons modifier le .env afin qu'il utilise bien ces dossiers ( en fonction de leurs localisation sur votre machine ).

1.a. Création des dossiers

  • Avec cd aller dans le dossier de votre choix, par exemple "docker". Exemple : Si votre dossier "docker" ce trouve dans /volume1, alors la commande sera : cd /volume1/docker

  • Maintenant que nous sommes dans le bon dossier, nous allons executer la commande suivante pour créer d'un coup, toute l'architecture nécessaire :

mkdir -p downloads-vpn/vpn/{config,scripts} downloads-vpn/rutorrent/{data,passwd,downloads} downloads-vpn/prowlarr/config downloads-vpn/sonarr/{config,downloads} downloads-vpn/radarr/{config,downloads} downloads-vpn/jackett/config downloads-vpn/qbitorrent/{config,downloads}

1.b. Modifications des .env

Vous pouvez faire un clic droit - Enregistrer sous ... sur les liens ci-dessus pour télécharger les fichiers.

  • Par defaut, il n'y a rien a modifier dans rtorrent-rutorrent.env.

  • Dans le fichier .env vous allez devoir modifier plusieurs chose :

PUID et PGID devront correspondre aux ID de votre utilisateurs, plus d'info ici : Connaitre le PUID / PGID d'un utilisateur RACINE correspond au chemin vers le dossier downloads-vpn créé a l'étape 1.a. Dans ce cas, c'est : /volume1/docker/downloads-vpn

1.c Transfert des fichiers dans /downloads-vpn

  • Une fois les modifications effectuées, il faut transfert tous les fichiers ( .env, TUN.sh, docker-compose.yml, rtorrent-rutorrent.env ) dans le dossier /downloads-vpn précédemment créé ! Par exemple, avec FileZilla.

1.d Mise en place de la config .opvn

  • Dans notre dossier downloads-vpn/vpn/config, nous allons placer notre configuration .ovpn récupéré sur notre serveur OpenVPN.

Note : Si votre config VPN demande une identifications par mot de passe, alors il vous faudra modifier dans votre fichier .ovpn la ligne :

auth-user-pass

par :

auth-user-pass /vpn/vpn.auth

Dans le dossier downloads-vpn/vpn/config en plus du fichier .ovpn, vous aller devoir créer un fichier vpn.auth contenant 2 lignes, sur la 1ere ligne, votre identifiant de connexion au VPN, et sur la 2eme ligne, votre mot de passe.

Exemple :

votreidentifiantdeconnexion
votremotdepasse

1.e Optionnel - Création et Execution de /tun

  • Si vous êtes sur un NAS de type Synology par exemple, alors la création du TUN est obligatoire.

  • Pour cela : Recupérer le fichier TUN.sh présent, et placer le dans votre dossier downloads-vpn.

Vous devez être "root" pour l'executer, pour cela, passer en root avec sudo :

sudo su -

Puis rendez-vous dans le dossier contenant TUN.sh, dans mon cas /volume1/docker/downloads-vpn

cd /volume1/docker/downloads-vpn

on chmod le script pour le rendre executable :

chmod 0755 TUN.sh

et executer le script :

./TUN.sh

2. Création des conteneurs

2.a Création du réseau

  • On créé le reseau vpn-network necesaire au fonctionnement du conteneurs VPN :
docker network create vpn-network

2.b Création des conteneurs

Maintenant que votre "stack" est prete rendez-vous dans le dossier downloads-vpn, dans mon cas /volume1/docker/downloads-vpn :

cd /volume1/docker/downloads-vpn

3. Les Bases

L'installation n'étant pas classique, si vous utilisez l'interface Docker de DSM par exemple, elle va refuser de démarrer les conteneurs rattachés au conteneur vpn ( car pour elle, il n'est relié a aucun réseau, et ne comprend pas que son réseau soit un conteneur.

Il faut donc obligatoirement utiliser les commandes en SSH ou autre logiciel de monitoring Docker compatible*. Voici quelques commandes de base :

*L'utilisation de Portainer est possible par exemple.

3.a Commandes de bases ( Docker )

  • Arreter un conteneur : docker stop <nom_du_conteneur> Exemple pour le conteneur rutorrent : docker stop rutorrent

  • Redémarrer un conteneur : docker restart <nom_du_conteneur> Exemple pour le conteneur rutorrent : docker restart rutorrent

  • Démarrer un conteneur : docker start <nom_du_conteneur> Exemple pour le conteneur rutorrent : docker start rutorrent

  • Supprimer un conteneur : docker rm <nom_du_conteneur> Exemple pour le conteneur rutorrent : docker rm rutorrent

  • Créer / Mettre à jour la "stack" : docker-compose up -d Cette commande permet de créer la stack présent dans le fichier docker-compose.yml, les conteneurs non-existant seront créés, les modifiés seront mis à jour.

Note : Vous devez etre dans la dossier contenant le fichier docker-compose.yml pour que cette commande fonctionne.

3.b Accès aux interfaces ( WebUI )

  • L'acces à chaque service se fait via une WebUI ( Interface Web ), sur un port quil lui est propre.

  • Pour rutorrent, c'est le port 8080. Donc l'adresse sera sous la forme : http://IP_DE_LA_MACHINE:8080 Exemple : Si l'adresse IP de votre machine est 192.168.1.10, alors l'adresse d'accès sera : http://192.168.1.10:8080

  • Ci-dessus la liste des ports des interfaces de chaque service :

    Service Port
    jackett 9117
    prowlarr 9696
    rutorrent 8080
    sonarr 8989
    radarr 7878
    qbittorrent 8586

4. Configuration de rutorrent

Depuis l'interface SSH, les commandes ci-dessous sont à executer en étant a la racine de votre dossier downloads-vpn.

4.a Réactiver la fonction Effacer / Effacer et Supprimer les données

  • Par défaut dans l'image de crazymax, la fonction "Effacer et Supprimer les données" sur un torrent n'existe pas. Uniquement la fonction "Effacer", et celle-ci efface le torrent ET les données.

Il n'est donc pas possible d'effacer simplement un torrent du client, sans supprimer les fichiers associés.

Ici nous allons voir comment ré-activer cette fonction :

Ceci doit être fait, conteneur à larrêt, pour arrêter le conteneur, utiliser la commande :

docker stop rutorrent

Pour réactiver cette fonction, il faut éditer le fichier rtorrent-rutorrent.env :

Note : Vous pouvez l'éditer directement depuis SSH avec l'utilitaire nano : nano rtorrent-rutorrent.env.

Retirer erasedata de la ligne ( N°23 ) suivante :

RU_REMOVE_CORE_PLUGINS=erasedata,httprpc,geoip,geoip2

Ce qui donne :

RU_REMOVE_CORE_PLUGINS=httprpc,geoip,geoip2

Enregistrer, et quitter.

Puis, nous allons editer le fichier .rtorrent.rc présent dans downloads-vpn/rutorrent/data/rtorrent :

Note : Vous pouvez l'éditer directement depuis SSH avec l'utilitaire nano : nano rutorrent/data/rtorrent/.rtorrent.rc.

Les deux dernieres lignes sont :

# Erase data when torrent deleted (no need erasedata plugin on ruTorrent)
method.set_key = event.download.erased,delete_erased,"execute=rm,-rf,--,$d.data_path="

Nous allons commenter la commande avec le caractère # afin de la désactiver, ce qui donne :

# Erase data when torrent deleted (no need erasedata plugin on ruTorrent)
#method.set_key = event.download.erased,delete_erased,"execute=rm,-rf,--,$d.data_path="

Enregistrer, et quitter.

Nous allons re-créer le conteneur rutorrent, avec cette nouvelle configuration, pour cela nous executons simplement la commande : docker-compose up -d.

4.b Sécuriser laccès à l'interface

  • La création du fichier htaccess afin de sécuriser l'acces a l'interface de rutorrent est très simple.

Arreter le conteneur :

docker stop rutorrent

Puis executer la commande suivante :

docker run --rm -it httpd:2.4-alpine htpasswd -Bbn MON_PSEUDO MON_MOT_DE_PASSE >> $(pwd)/rutorrent/passwd/rutorrent.htpasswd

Dans cette commande, il faut modifier : MON_PSEUDO, par le pseudo voulu pour l'identification MON_MOT_DE_PASSE, par le mot de passe souhaité pour l'identification

Une fois la commande executée, redémarrer le conteneur rutorrent :

docker start rutorrent

Maintenant, l'acces à l'interface de rutorrent réclame une identification :)

5. Configuration de jackett]

5.a Configurer Flaresolverr]

6. Aller plus loin

  • Retrouvez ici des astuces pour aller "un peu plus loin" dans la configurations de vos conteneurs, avec par exemple, la méthode pour rajouter des montages ( dossier de votre serveur dans le conteneur ), ou régler la mise à jour automatique de vos conteneurs.

/!\ Depuis l'interface SSH, les commandes ci-dessous sont à executer en étant à la racine de votre dossier downloads-vpn.

6.a Rajouter les chemins vers ces médias

Comment rajouter simplement des montages de dossiers aux instances rutorrent, qbittorrent, sonarr, ... ?

Pour cela plusieurs méthodes, en voici une : Nous allons ici rajouter un dossier de Films ( /volume1/films ) et un dossier Series ( /volume1/series ) Editer le fichier .env avec la commande nano .env

En dessus de la ligne RACINE=... rajouter les lignes vers vos medias sous la forme :

NOM_VARIABLE=/Chemin/Dossier

Dans notre exemple, le fichier .env aura donc la forme suivante :

PUID=1000
PGID=1000
TZ=Europe/Paris

RACINE=/volume1/docker/downloads-vpn

FILMS=/volume1/films
SERIES=/volume1/series

Une fois les modifications effectuées, on enregistre et on quitte le fichier.

Maintenant, nous allons donner acces à ces dossiers a nos conteneurs. Prenons exemple avec le conteneur rutorrent. Editer le fichier docker-compose.yml avec la commande nano docker-compose.yml

Trouver dans le fichier la configuration du conteneur rutorrent que voici :

  rtorrent-rutorrent:
    image: crazymax/rtorrent-rutorrent:latest
    container_name: rutorrent
#    labels:
#     - com.centurylinklabs.watchtower.enable=true
#     - autoheal=true
    depends_on:
      - vpn
    env_file:
      - "./rtorrent-rutorrent.env"
    environment:
      - PUID=${PUID}
      - PGID=${PGID}
      - TZ=${TZ}
    network_mode: "service:vpn"
    volumes:
      - ${RACINE}/rutorrent/data:/data
      - ${RACINE}/rutorrent/passwd:/passwd
      - ${RACINE}/rutorrent/downloads:/downloads
    ulimits:
      nproc: 65535
      nofile:
         soft: 32000
         hard: 40000
    restart: unless-stopped

Dans la partie volumes, nous allons rajouter 2 lignes correspondantes à nos dossiers Films et Series qui nous avons configurés dans le fichier .env.

De cette manière :

  rtorrent-rutorrent:
    image: crazymax/rtorrent-rutorrent:latest
    container_name: rutorrent
#    labels:
#     - com.centurylinklabs.watchtower.enable=true
#     - autoheal=true
    depends_on:
      - vpn
    env_file:
      - "./rtorrent-rutorrent.env"
    environment:
      - PUID=${PUID}
      - PGID=${PGID}
      - TZ=${TZ}
    network_mode: "service:vpn"
    volumes:
      - ${RACINE}/rutorrent/data:/data
      - ${RACINE}/rutorrent/passwd:/passwd
      - ${RACINE}/rutorrent/downloads:/downloads
      - ${FILMS}:/media/film
      - ${SERIES}:/media/series
    ulimits:
      nproc: 65535
      nofile:
        soft: 32000
        hard: 40000
    restart: unless-stopped

De cette manières, les dossiers films et séries seront accessible dans le conteneur rutorrent dans un dossier /media. Vous pouvez suivre cette même procédure pour les autres conteneurs.

Pour appliquer les changements, il ne reste qu'à mettre à jour la stack avec la commande docker-compose up -d, plus d'info dans le point 3.a Commandes de bases ( Docker ).

6.b Mise à jour automatique ( watchtower )

Watchtower est un conteneur qui va surveiller vos conteneurs à la recherche de mise à jour disponible ! Si une mise a jour est disponible, alors Watchtower, arrete le conteneur, récupere la nouvelle image, et re-créé le conteneur avec le nouvelle image.

Pour l'installation de Watchtower en Docker sur votre serveur, je vous laisse avec ce tuto : Installation de Watchtower en Docker un NAS Synology, le point 1 vous apprendra à installer Watchtower.

une fois Watchtower installé, il vous suffit de décommenter pour chaque services la ligne labels ( si cela n'est pas déja fait ) et la ligne - com.centurylinklabs.watchtower.enable=true.

Exemple :

  rtorrent-rutorrent:
    image: crazymax/rtorrent-rutorrent:latest
    container_name: rutorrent
    labels:
     - com.centurylinklabs.watchtower.enable=true
#     - autoheal=true
    depends_on:
      - vpn
    env_file:
      - "./rtorrent-rutorrent.env"
    environment:
      - PUID=${PUID}
      - PGID=${PGID}
      - TZ=${TZ}
    network_mode: "service:vpn"
    volumes:
      - ${RACINE}/rutorrent/data:/data
      - ${RACINE}/rutorrent/passwd:/passwd
      - ${RACINE}/rutorrent/downloads:/downloads
    ulimits:
      nproc: 65535
      nofile:
        soft: 32000
        hard: 40000
    restart: unless-stopped

La procédure est identique pour chacun des services du docker-compose que vous souhaitez surveiller.

Pour appliquer les changements, il ne reste qu'à mettre à jour la stack avec la commande docker-compose up -d, plus d'info dans le point 3.a Commandes de bases ( Docker ).

6.c Reboot automatique en cas de soucis ( autoheal )