- 6.a [Rajouter les chemins vers ces médias](#6-a-rajouter-les-chemins-vers-ces-médias)
- 6.b [Mise à jour automatique ( watchtower )](#6-b-mise-à-jour-automatique-watchtower)
- 6.c [Reboot automatique en cas de soucis ( autoheal )](#6-c-reboot-automatique-en-cas-de-soucis-autoheal)
- 7. 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 :
- Récupérer sur votre machine les fichiers `.env`, `TUN.sh`, `docker-compose.yml` et `rtorrent-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](https://www.forum-nas.fr/viewtopic.php?f=56&t=13213)
**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 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](https://www.forum-nas.fr/viewtopic.php?f=56&t=14030) 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 à 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 :
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.
- 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 )](#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](https://www.forum-nas.fr/viewtopic.php?f=56&t=14474), 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 )](#3-a-commandes-de-bases-docker).
### 6.c Reboot automatique en cas de soucis ( autoheal )
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.