.. | ||
.env | ||
docker-compose.yml | ||
readme.md | ||
rtorrent-rutorrent.env | ||
TUN.sh |
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
-
- Dépannage ( Ce construira au fur et a mesure des questions )
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
-
Récupérer sur votre machine les fichiers
.env
,TUN.sh
,docker-compose.yml
etrtorrent-rutorrent.env
. -
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 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 fichiervpn.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 dossierdownloads-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 est192.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 à l’arrê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 l’accè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 ).