EVOTk

[EN COURS] [TUTO] rtorrent/rutorrent au travers d'un VPN OpenVPN

Recommended Posts

rtorrent/rutorrent au travers d'un VPN OpenVPN ( Docker )

 

Bonjour,

Topic en cours de rédaction 😘 Je suis encore en phase de test, tout aide, commentaires, ... et la bienvenue afin de rendre ce topic le plus complet possible.

 

Je vous propose ici, une solution afin de pouvoir télécharger des torrents, au travers d'un VPN OpenVPN, sans avoir a faire passer tout le NAS par le VPN, ce qui en temps normal n'est pas possible sur nos Synology/Xpenology.

 

Nous allons ici utiliser docker-compose, cette solution ne pourra donc ce faire, uniquement sur un NAS ou est possible d'installer Docker.

 

Le but de ce tuto sera de rendre cette installation facile et accessible a tous, bien que loin d’être un expert de docker/docker-compose, n’hésiter pas à répondre à ce sujet avec vos interrogations, ..

Pour ceux qui sont plus alèze avec ce genre d'installation, n'hésiter pas a proposer des améliorations, ou des conseils, ...

 

Sommaire :

  • 1/ Connaitre le PUID et PGID d'un utilisateur
  • 2/ Créer les dossiers nécessaires
  • 3/ Mise en place de la config .opvn
  • 4/ Création du fichier "docker-compose.yml"
  • 5/ Création des conteneurs avec docker-compose
  • 6/ Accéder a l'interface rutorrent grace au Proxy inversé
  • 7/ Sécuriser l’accès à l'interface rutorrent

 

Pré-requis

Avoir installé le paquet Docker

Avoir un accès SSH au Syno/Xpenology

Avoir un serveur OpenVPN

Dans docker : télécharger l'image linuxserver/rutorrent et dperson/openvpn-client

Posséder un nom de domaine

 

A modifier selon votre installation :

Toute mon installation, va ce faire dans un dossier partagé "docker" situé sur "@volume1"

Je vais donc installer le vpn dans /volume1/docker/vpn et rutorrent dans /volume1/docker/rutorrent-vpn

Les PUID/PGID de mon compte utilisateur sont : PUID=9999 PGID=111

Le nom de domaine utilisé pour l'exemple sera : tutoevo.fr

 

1/ Connaitre le PUID et PGID d'un utilisateur

//EN RÉDACTION//

 

2/ Créer les dossiers nécessaires

Comme dit au dessus, les chemins sont basé sur mon installation, à adapter selon votre installation.

Voici les dossiers a créer :

     - /volume1/docker/vpn/config

     - /volume1/docker/rutorrent-vpn/config
     - /volume1/docker/rutorrent-vpn/downloads

 

3/ Mise en place de la config .opvn

Dans notre dossier /volume1/docker/vpn/config, nous allons placer notre configuration .ovpn récupéré sur notre serveur OpenVPN.

 

4/ Création du fichier "docker-compose.yml"

Nous allons maintenant créer un fichier "docker-compose.yml" avec les paramètres des conteneurs.

Voici mon fichier "docker-compose.yml" :

Citation

version: '3'
      
services: 
  vpn:
    image: dperson/openvpn-client:latest
    container_name: vpn
    restart: unless-stopped
    cap_add:
     - NET_ADMIN
    sysctls:
     - net.ipv6.conf.all.disable_ipv6=0
    security_opt:
     - label:disable
    environment:
     - PUID=9999
     - PGID=111
     - TZ=Europe/Paris
    networks:
     - vpn-network
    dns:
     - 84.200.69.80
     - 8.8.8.8
     - 9.9.9.9
    devices:
     - /dev/net/tun:/dev/net/tun
    expose:
     - "8080"
    volumes:
     - /volume1/docker/vpn/config:/vpn
    command: '-f "" -r 192.168.0.0/24'
    healthcheck:
      test: ["CMD", "curl", "-Ss", "ifconfig.co"]
      interval: 60s
      timeout: 15s
      
  rutorrent:
    image: linuxserver/rutorrent:latest
    container_name: rutorrent-vpn
    restart: unless-stopped
    network_mode: "services:vpn"
    environment:
     - PUID=9999
     - PGID=111
     - TZ=Europe/Paris
    volumes:
     - /volume1/docker/rutorrent-vpn/config:/config
     - /volume1/docker/rutorrent-vpn/downloads:/downloads
     
networks:
  vpn-network:
    external:
      name: vpn-network

 

On peut y voir 2 services "vpn" et "rutorrent".

Dans le service "vpn" vous allez devoir porter votre attention sur :

- PUID=9999, à modifier avec le PUID de votre utilisateur
- PGID=111, à modifier avec le PUID de votre utilisateur

- /volume1/docker/vpn/config:/vpn, la 1ere partie "/volume1/docker/vpn/config" correspond au chemin vers votre config OpenVPN.

 

Dans le service "rutorrent", vous allez devoir porter votre attention sur :

- PUID=9999, à modifier avec le PUID de votre utilisateur
- PGID=111, à modifier avec le PUID de votre utilisateur

- /volume1/docker/rutorrent-vpn/config:/config, la 1ere partie "/volume1/docker/rutorrent-vpn/config" correspond au chemin vers le futur dossier config de rutorrent
- /volume1/docker/rutorrent-vpn/downloads:/downloads, la 1ere partie "/volume1/docker/rutorrent-vpn/downloads" correspond au chemin vers le dossier downloads par défaut pour rutorrent

 

Une fois les modifications effectuées, enregistrer votre fichier sous le nom : docker-compose.yml

Puis charger le fichier sur votre NAS ( chez moi, il se trouve dans /volume1/docker )

 

5/ Création des conteneurs avec docker-compose

 

En SSH, 1ere chose, je passe en mode administrateur avec la commande :

Citation

sudo su -

Le mot de passe admin vous est demandé.

 

Dans mon dossier /volume1/docker, j'ai chargé mon fichier docker-compose.yml. Je vais donc accéder à ce dossier, pour cela je fait :

Citation

cd /volume1/docker

 

Ensuite, afin "d’exécuter" mon fichier docker-compose.yml, je tape en ssh :

Citation

sudo docker-compose up -d

 

La création des conteneurs se fait, ils deviennent visible dans l'appli "Docker" de DSM. Si tout se passe bien, ils doivent apparaître démarrer dans Docker.

 

6/ Accéder a l'interface rutorrent grace au Proxy inversé

 

Le problème se pose pour accéder a l'interface de rutorrent, effectivement, rutorrent démarre maintenant a travers le VPN, il n'est donc pas accessible directement.

Nous allons régler le soucis grâce au Proxy inversé proposé par DSM ( dans Panneau de configuration > Portail des applications > Proxy inversé )

 

Dans un 1er temps, il faut connaitre l'ip du conteneur VPN, une commande SSH permet de la connaitre :

Citation

docker inspect --format='{{ $n := .Name }}{{range .NetworkSettings.Networks}}{{ print .IPAddress "\t" $n "\n"}}{{end}}' $(docker ps -q)

 

Cette commande, va vous retourner l'ip du conteneur /vpn, il sera présente juste avant son nom, sous la forme :

Citation

172.21.0.2                        /vpn

 

Ici l'ip de mon conteneur vpn est 172.21.0.2

Dans le "Proxy inversé", nous allons donc rediriger le port 80 ( http ) et 443 ( https ) vers un sous domaine de mon domaine "tutoevo.fr".

Le sous domaine choisi sera : rutorrent.tutoevo.fr ( Pour que cela fonctionne le nom d'hote doit aussi être crer chez votre fournisseur du nom de domaine ).

Dans l'image ci-dessous, nous avons créé une règle "rutorrentHTTPS",  allons rediriger le protocole "HTTPS" au nom d’hôte "rutorrent.tutoevo.fr". Nous activons "HTTP/2" et renseignons en destination, l'ip du conteneur vpn, soit "172.21.0.2" sur le port "443".

SNT0DZ2.png

Une fois cela fait, on pourra accéder à l'interface de rutorrent, via l'adresse "https://rutorrent.tutoevo.fr".

 

7/ Sécuriser l’accès à l'interface rutorrent

Dans le dossier "/volume1/docker/rutorrent-vpn/config/nginx" éditer le fichier "nginx.conf"

Puis après :

Citation

    # server_tokens off;

 

Rajouter :

Citation

    auth_basic             "Restricted Access!";
    auth_basic_user_file    /config/nginx/.htpasswd;

 

Voici un exemple :

f3t08vU.png

Dans le dossier "/docker/rutorrent-vpn/config/nginx", vous devez créer un fichier ".htpasswd" qui contiendra ceci :

Citation

pseudo:votremotdepassecrypté

 

Vous pouvez utiliser ce générateur afin de crypter le mot de passe choisi http://www.infowebmaster.fr/outils/crypter-htpasswd.php

 

 

Citation

24/10/2019 - Création du sujet

31/10/2019 - Mise en page

 

Edited by EVOTk
  • Thanks 1

Share this post


Link to post
Share on other sites

Salut,

 

J'ai peur de pas bien comprendre certaines choses :

 - La redirection HTTPS vers RUtorrent dans le RP pointe vers le conteneur VPN, et pas celui de Rutorrent. C'est normal ?

 - es-tu sûr que le traffic torrent est chiffré de bout en bout ? J'ai l'impression que le traffic n'est chiffré qu'au sein de ton réseau local mais sorti de la Box tout est en clair. Je me trompe ? Pour moi, pour que ce soit faisable il aurait  fallu se connecter à un serveur VPN sur Internet et non hébergé en local. MAis peut-être que j'ai tord, je dis ça en n'ayant pas testé ton tuto.

Share this post


Link to post
Share on other sites

Salut, 

Effectivement on passe par le conteneur vpn. 

Le conteneur vpn est un client, et non un serveur. 

 

Il te faut donc par exemple loué un vps, y installer un serveur OpenVPN et implémenter ton fichier de configuration dans le conteneur vpn afin qu'il puisse s'y connecter. 

 

Je peux te confirmer le fonctionnement, tester avec un torrent ip. Et en cas de coupure du vpn, rtorrent devient inaccessible, afin de ne pas télécharger les torrent en divulgant sa vrai adresse ip.

 

Je continuerai à étoffer le tuto ce soir, et autres. Mais j'ai commencer à le poster car d'autres pourrai peut être m'aider. Il me reste encore quelques points à éclaircir comme par exemple l'ouverture de port sur le vpn,.. 

 

Le reverse proxy permet juste d’accéder facilement en https a l'interface rutorrent sans passer par le VPN.

Edited by EVOTk

Share this post


Link to post
Share on other sites

Hello, chouette tuto et un grand merci pour le partage de connaissances! Je faisais un peu pareil avant de louer un VPS hébergeant un serveur OpenVPN Server pour plus de commodité mais j'utilisais la solution prête à l'emploi d'haugene, docker-transmission-openvpn. Cela avait l'avantage d'être très simple à configurer mais il faut supporter l'aridité de l'interface de transmission...

Edited by pmchan

Share this post


Link to post
Share on other sites
Il y a 10 heures, pmchan a dit :

Hello, chouette tuto et un grand merci pour le partage de connaissances! Je faisais un peu pareil avant de louer un VPS hébergeant un serveur OpenVPN Server pour plus de commodité mais j'utilisais la solution prête à l'emploi d'haugene, docker-transmission-openvpn. Cela avait l'avantage d'être très simple à configurer mais il faut supporter l'aridité de l'interface de transmission...

 

Salut, merci.

Effectivement la solution haugene est bien, et plutôt simple d'emploi mais j'avais trouvé transmission très "lourd", a partir de 100 torrents, perdait de sa fluidité contrairement a utorrent qui avec 300 torrents ne dit rien.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.