[OMV] Rediriger une application Docker vers un VPN

Répondre
Avatar du membre
keyser
Messages : 183
Enregistré le : 12 mai 2023 11:00
Localisation : Dans ma Principauté...

[OMV] Rediriger une application Docker vers un VPN

Message par keyser »

Si vous êtes un brin parano, ou simplement prudent de protéger votre anonymat, l'utilisation d'un VPN peut s'avérer très intéressante. En achetant ce genre de service payant chez un fournisseur style CyberGhost VPN, NordVPN, AirVPN, ou autre, vous allez vous promener sur le web comme si vous étiez dans un autre pays. La technique n'est pas infaillible, ne vous méprenez pas, mais c'est déjà un bon début. Sans parler de l'avantage que ça apporte avec des plateformes de streaming comme Netflix en vous ouvrant le catalogue d'autres pays qui diffusent parfois (souvent !) des programmes non disponibles dans votre pays.

Petite démonstration via notre serveur de téléchargements créé dans le tuto correspondant

Connectez-vous via Putty à votre serveur
Image
Tapez la commande suivante et exécutez-la

Code : Tout sélectionner

curl ipinfo.io
Image
Si vous recevez un message d'erreur à propos de curl qui n'est pas disponible, il suffit de l'installer via la commande suivante :

Code : Tout sélectionner

apt install curl -y
Les infos retournées par la commande montrent clairement votre localisation, ainsi que votre adresse IP publique fournie par votre ISP, et les infos qui le concernent (dans mon exemple, je suis en Belgique).
Image
Intéressons-nous maintenant aux applications qui tournent sous Docker, en prenant par exemple qBittorrent. Toujours sous Putty, lancez la commande suivante afin de vous connecter dans l'environnement dédié à qBittorrent par Docker (remplacez qbittorrent par le nom du conteneur Docker auquel vous désirez vous connecter)...

Code : Tout sélectionner

docker exec -it qbittorrent sh
...et relancez la commande précédente

Code : Tout sélectionner

curl ipinfo.io
Même résultat qui confirme une nouvelle fois votre localisation
Image
Cette information est également visible directement dans l'interface de qBittorrent si on l'active pour qu'elle s'affiche dans la barre d'état (cachée, mais c'est bien la même IP que celle retournée dans Putty)
Image

Nous allons donc installer une nouvelle application dans Docker, Gluetun, qui va nous permettre de nous connecter à notre fournisseur VPN (liste des compatibles ici).

Les étapes à suivre :
  • créer une nouvelle connexion pour notre serveur chez notre fournisseur
  • rediriger les ports utilisés par nos applications dans Gluetun
  • dire aux applications d'utiliser Gluetun
En 1er lieu, allez sur votre compte chez votre fournisseur VPN, et créez manuellement une nouvelle connexion, en n'oubliant pas de télécharger les certificats qui seront créés. Je suis actuellement chez CyberGhost VPN et vais donc illustrer comment faire via celui-là, mais c'est +/- similaire chez les autres.

Dans les paramètres de votre compte CyberGhost, cliquez sur VPN...
Image
...et cliquez sur le bouton Configurer l'appareil de la Configuration manuelle dans la zone Configuration avancée
Image
Choisissez Open VPN comme protocole, le pays de votre choix (Kazakhstan dans mon exemple) ainsi que Premium Servers comme Groupe de serveurs. Donnez un nom à votre appareil, et cliquez sur Sauvegarder la Configuration
Image
Votre nouvel appareil apparaîtra maintenant dans la liste des appareils configurés. Cliquez sur Afficher...
Image
... pour copier votre login et votre mot de passe. Cliquez également sur Configuration de téléchargement pour récupérer les fichiers de configuration nécessaires.
Image
Comme nous l'avions fait lors de la création des applications Docker précédentes, nous allons maintenant créer un répertoire gluetun dans le dossier partagé configs de façon à garder la même cohérence de centraliser tout au même endroit
Image
Ouvrez maintenant l'archive ZIP récupérée chez votre fournisseur VPN, et décompressez les fichiers dans le répertoire nouvellement créé (donc logiquement \\VOTRE_SERVEUR\configs\gluetun)
Image

Maintenant, nous allons ajouter un container Docker pour Gluetun et y définir dans un premier temps les ports utilisés par qBittorrent. Et dans le script de qBittorrent, nous allons supprimer les ports et rediriger l'application vers Gluetun.
Commençons par éditer le script qBittorrent existant. Allez dans Services -> Compose -> Files, sélectionnez l'application qbittorent et cliquez sur la flèche vers le bas en haut pour l'éteindre. Elle passera en statut Down
Image
Toujours avec l'application qbittorent sélectionnée, cliquez maintenant sur le crayon de la barre de menu afin de l'éditer
Image
Sélectionnez les 4 lignes en rapport avec les ports, et coupez/collez-les dans un bloc-notes.
Image
Insérez la ligne suivante (l'endroit n'a normalement pas d'importance) et cliquez sur Enregistrer

Code : Tout sélectionner

    network_mode: container:gluetun
Image
Copiez le code suivant dans votre bloc-notes en y insérant les informations relatives à votre fournisseur VPN (instructions pour chacun ici). Pour rappel, l'exemple ci-dessous est pour CyberGhost VPN.

Code : Tout sélectionner

services:
  gluetun:
    image: qmcgaw/gluetun
    container_name: gluetun
    cap_add:
      - NET_ADMIN
    ports:
      - 8082:8082 #qbittorrent
      - 6881:6881 #qbittorrent
      - 6881:6881/udp #qbittorrent
    devices:
      - /dev/net/tun:/dev/net/tun
    environment:
      - VPN_SERVICE_PROVIDER=cyberghost
      - OPENVPN_USER=
      - OPENVPN_PASSWORD=
      - SERVER_COUNTRIES=
    volumes:
      - /srv/dev-disk-by-uuid-fc70f6e9-109d-414a-8788-ab7d14ac4b6d/configs/gluetun:/gluetun
    restart: unless-stopped
Retournez sur votre serveur et ajoutez une nouvelle application via + et Ajouter dans le menu. Nommez celle-ci gluetun et copiez le script dans la zone File. Cliquez sur Enregistrer. Remarquez que j'ai rajouté un commentaire #qbittorrent devant chaque ligne des ports retirés à qBittorrent et rajoutés à Gluetun. C'est juste purement cosmétique et pour m'y retrouver.
Image
Sélectionnez gluetun dans la liste et cliquez sur la flèche vers le haut du menu pour installer et lancer l'application
Image
Faites la même chose avec l'application qbittorrent. Remarquez qu'il n'y a aucun port affiché
Image
Si on retourne dans Putty et qu'on lance de nouveau la commande curl ipinfo.io, notre serveur tourne toujours sur notre adresse normale.
Image
Par contre, si nous retournons dans le container qBittorrent et que nous lançons la même commande, nous constatons que nous sommes maintenant en Bulgarie (je suppose que CyberGhost connecte le Kazkhstan en Bulgarie).
Image
Et l'adresse IP affichée dans qBittorrent correspond bien
Image

CQFD !

Maintenant, plus qu'à éditer les autres applications (JDownloader 2, SABnzbd et MeTube) en y rajoutant la ligne

Code : Tout sélectionner

    network_mode: container:gluetun
et supprimer les ports pour les transférer dans l'application gluetun (Toujours faire Down via la flèche vers le bas avant de modifier une application !!! Faites aussi bien attention de ne recopier QUE les lignes avec les numéros de ports, et pas la balise ports: à plusieurs reprises, sans quoi Gluetun planterait).

Dernières opérations après toutes ces modifications : faire Up sur chaque application en commençant par gluetun. Les autres applications dépendent maintenant de cette dernière, donc elles ne se lanceront pas et afficheront une erreur si elles sont lancées avant.

Le script de votre application gluetun ressemblera finalement à ceci

Code : Tout sélectionner

services:
  gluetun:
    image: qmcgaw/gluetun
    container_name: gluetun
    cap_add:
      - NET_ADMIN
    ports:
      - 5800:5800 #jdownloader-2
      - 8080:8080 #sabnzbd
      - 8081:8081 #metube
      - 8082:8082 #qbittorrent
      - 6881:6881 #qbittorrent
      - 6881:6881/udp #qbittorrent
    devices:
      - /dev/net/tun:/dev/net/tun
    environment:
      - VPN_SERVICE_PROVIDER=cyberghost
      - OPENVPN_USER=
      - OPENVPN_PASSWORD=
      - SERVER_COUNTRIES=Kazakhstan
    volumes:
      - /srv/dev-disk-by-uuid-fc70f6e9-109d-414a-8788-ab7d14ac4b6d/configs/gluetun:/gluetun
    restart: unless-stopped
Et le panneau des applications ressemblera à ça, avec tous les ports dans gluetun et plus aucun dans les autres applications
Image
Vous pourrez évidemment retourner dans l'environnement Docker de chaque application via Putty pour vérifier qu'elle tourne bien en utilisant le VPN.

En rapport avec le post Trucs et astuces concernant l'accélération de vos téléchargements sous jdownloader via un VPN, ceci est bien évidemment directement opérationnel en suivant ce tuto, et vous n'aurez jamais à activer/désactiver le VPN. J'ai même poussé le vice plus loin en créant plusieurs Docker Gluetun et jdownloader2 suivant différents pays afin de bénéficier des avantages de chacun.

Attention toutefois que si vous utilisez un service de débridage comme AllDebrid ou Real-Debrid, ils peuvent s'emmêler les pinceaux si vous swappez souvent vos téléchargements depuis plusieurs pays en même temps.
- J'ai vu des photos ce matin...
- J'étais jeune, je crevais de faim !

- Joey, as-tu déjà visité une prison turque ?
- Joey, tu aimes les films de gladiateurs ?
- Joey, es-tu déjà rentré dans une salle de bain quand un monsieur tout nu s'y trouvait ?
Répondre

Retourner vers « OpenMediaVault »