Mise en place du couple Transmission – OpenVPN sur un NAS ASUSTOR

Mise en place du couple Transmission – OpenVPN sur un NAS ASUSTOR

Pour utiliser Transmission de façon sécurisée et anonyme, le plus simple est d’utiliser l’image haugene/transmission-openvpn. On peut le faire directement dans Portainer :

Il est également possible de générer le docker avec un fichier docker-compose.yml (méthode que je recommande) :

version: '3.3'
services:
  transmission-openvpn:
    container_name: Transmission
    restart: always
    image: haugene/transmission-openvpn:latest
    cap_add:
      - NET_ADMIN
    volumes:
      - 'transmission:/config'
      - '/volume1/Download/Transmission:/data'
    environment:
      - OPENVPN_PROVIDER=PUREVPN
      - OPENVPN_CONFIG=fr2-ovpn-udp
      - OPENVPN_USERNAME=purevpn0s2376014
      - OPENVPN_PASSWORD=shGWHqgkBgFj32fgGC3N
      - LOCAL_NETWORK=192.168.1.0/24
      - TRANSMISSION_WEB_UI=combustion
      - TRANSMISSION_DOWNLOAD_DIR=/data/complete
      - TRANSMISSION_INCOMPLETE_DIR=/data/incomplete
      - PUID=999
      - PGID=999
    logging:
      driver: json-file
      options:
        max-size: 10m
    ports:
      - '9091:9091'
    image: haugene/transmission-openvpn
    dns:
      - 8.8.8.8
      - 8.8.4.4
volumes:
  transmission:
    driver: local

Par défaut, le répertoire de download est /data/completed, il est préférable que cela soit à /data/complete, d’où les variables d’environnement correspondantes à positionner en conséquence (et notamment TRANSMISSION_COMPLETE_DIR).

La variable WEB_UI sélectionne l’interface web de Transmission, j’ai personnellement choisi combustion que je trouve plutôt réussie.

Enfin, les UID/GID doivent bien être 999/999 pour correspondre aux UID/GID de admin sur le NAS et que le système puisse avoir accès en lecture/écriture aux fichiers téléchargés par Transmission.

Ensuite, un simple :

root@astorus:/volume1/Docker/Transmission # docker-compose up -d

démarrera le docker et il apparaitra dans les deux cas, dans Portainer, dans la liste des dockers actifs.

Que ce soit dans Portainer ou avec le fichier docker-compose, il faut bien spécifier la redirection du port 9091 du NAS vers le port 9091 du container pour que les requêtes à ce port du NAS aillent directement au port du container correspondant.

Il faut aussi que des volumes persistants soient présents. Le premier conserve les identifiants de votre abonnement VPN, le second correspond aux répertoires de téléchargement de Transmission, ce serait dommage de perdre tous les téléchargements dès que l’image doit être regénérée par exemple. Cela peut se configurer dans Portainer, ou cela correspond aux lignes déclarant les volumes dans le fichier docker-compose.yml.

Le répertoire transmission-home, qui se trouve dans le répertoire /volume1/Download/Transmission, contient le fichier de paramétrage settings.json.

Je ne rentrerai pas dans le fonctionnement de cette image qui est complexe, on peut se référer directement à la page de l’auteur pour ça.

Extrait de la doc :

To understand how it works, this is the most important events and who/what starts them.

– You start the container

The container starts OpenVPN

OpenVPN starts/stops Transmission

When you start the container it is instructed to run a script to start OpenVPN. This is defined in the Dockerfile. This script is responsible for doing initial setup and prepare what is needed for OpenVPN to run successfully:

https://haugene.github.io/docker-transmission-openvpn/

Donc Transmission ne peut pas tourner si openvpn tombe, ce qui est heureux.

Par ailleurs, la doc est très claire et explique qu’il faut fixer des variables

OPENVPN_PROVIDER, OPENVPN_CONFIG, OPENVPN_USERNAME, OPENVPN_PASSWORD

que l’on peut fixer, toujours dans Portainer, en utilisant le champ ‘Env » dans « advanced settings » quand on va éditer le container :

Dans mon cas, j’ai un abonnement à PureVPN, d’où le serveur défini dans la variable OPENVPN_CONFIG.

Après tout ça, Transmission devrait fonctionner correctement.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *