{"id":155,"date":"2021-02-21T12:34:42","date_gmt":"2021-02-21T11:34:42","guid":{"rendered":"https:\/\/www.webdot.fr\/blog\/?p=155"},"modified":"2021-04-02T09:23:47","modified_gmt":"2021-04-02T07:23:47","slug":"mise-en-place-de-transmission-openvpn-sur-un-nas-asustor","status":"publish","type":"post","link":"https:\/\/www.webdot.fr\/blog\/2021\/02\/mise-en-place-de-transmission-openvpn-sur-un-nas-asustor\/","title":{"rendered":"Mise en place du couple Transmission &#8211; OpenVPN sur un NAS ASUSTOR"},"content":{"rendered":"\n<p>Pour utiliser Transmission de fa\u00e7on s\u00e9curis\u00e9e et anonyme, le plus simple est d&rsquo;utiliser l&rsquo;image haugene\/transmission-openvpn. On peut le faire directement dans Portainer :<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"597\" src=\"https:\/\/www.webdot.fr\/blog\/wp-content\/uploads\/2021\/02\/image-18-1024x597.png\" alt=\"\" class=\"wp-image-168\" srcset=\"https:\/\/www.webdot.fr\/blog\/wp-content\/uploads\/2021\/02\/image-18-1024x597.png 1024w, https:\/\/www.webdot.fr\/blog\/wp-content\/uploads\/2021\/02\/image-18-300x175.png 300w, https:\/\/www.webdot.fr\/blog\/wp-content\/uploads\/2021\/02\/image-18-768x448.png 768w, https:\/\/www.webdot.fr\/blog\/wp-content\/uploads\/2021\/02\/image-18-515x300.png 515w, https:\/\/www.webdot.fr\/blog\/wp-content\/uploads\/2021\/02\/image-18-512x300.png 512w, https:\/\/www.webdot.fr\/blog\/wp-content\/uploads\/2021\/02\/image-18.png 1372w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Il est \u00e9galement possible de g\u00e9n\u00e9rer le docker avec un fichier docker-compose.yml (m\u00e9thode que je recommande) :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>version: '3.3'\nservices:\n  transmission-openvpn:\n    container_name: Transmission\n    restart: always\n    image: haugene\/transmission-openvpn:latest\n    cap_add:\n      - NET_ADMIN\n    volumes:\n      - 'transmission:\/config'\n      - '\/volume1\/Download\/Transmission:\/data'\n    environment:\n      - OPENVPN_PROVIDER=PUREVPN\n      - OPENVPN_CONFIG=fr2-ovpn-udp\n      - OPENVPN_USERNAME=purevpn0s2376014\n      - OPENVPN_PASSWORD=shGWHqgkBgFj32fgGC3N\n      - LOCAL_NETWORK=192.168.1.0\/24\n      - TRANSMISSION_WEB_UI=combustion\n      - TRANSMISSION_DOWNLOAD_DIR=\/data\/complete\n      - TRANSMISSION_INCOMPLETE_DIR=\/data\/incomplete\n      - PUID=999\n      - PGID=999\n    logging:\n      driver: json-file\n      options:\n        max-size: 10m\n    ports:\n      - '9091:9091'\n    image: haugene\/transmission-openvpn\n    dns:\n      - 8.8.8.8\n      - 8.8.4.4\nvolumes:\n  transmission:\n    driver: local<\/code><\/pre>\n\n\n\n<p>Par d\u00e9faut, le r\u00e9pertoire de download est <em>\/data\/completed,<\/em> il est pr\u00e9f\u00e9rable que cela soit \u00e0 <em>\/data\/complete<\/em>, d&rsquo;o\u00f9 les variables d&rsquo;environnement correspondantes \u00e0 positionner en cons\u00e9quence (et notamment TRANSMISSION_COMPLETE_DIR). <\/p>\n\n\n\n<p>La variable WEB_UI s\u00e9lectionne l&rsquo;interface web de Transmission, j&rsquo;ai personnellement choisi combustion que je trouve plut\u00f4t r\u00e9ussie.<\/p>\n\n\n\n<p>Enfin, les UID\/GID doivent bien \u00eatre 999\/999 pour correspondre aux UID\/GID de admin sur le NAS et que le syst\u00e8me puisse avoir acc\u00e8s en lecture\/\u00e9criture aux fichiers t\u00e9l\u00e9charg\u00e9s par Transmission.<\/p>\n\n\n\n<p>Ensuite, un simple :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>root@astorus:\/volume1\/Docker\/Transmission # docker-compose up -d<\/code><\/pre>\n\n\n\n<p>d\u00e9marrera le docker et il apparaitra dans les deux cas, dans Portainer, dans la liste des dockers actifs.<\/p>\n\n\n\n<p>Que ce soit dans Portainer ou avec le fichier docker-compose, il faut bien sp\u00e9cifier la redirection du port 9091 du NAS vers le port 9091 du container pour que les requ\u00eates \u00e0 ce port du NAS aillent directement au port du container correspondant. <\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"597\" src=\"https:\/\/www.webdot.fr\/blog\/wp-content\/uploads\/2021\/02\/image-20-1024x597.png\" alt=\"\" class=\"wp-image-170\" srcset=\"https:\/\/www.webdot.fr\/blog\/wp-content\/uploads\/2021\/02\/image-20-1024x597.png 1024w, https:\/\/www.webdot.fr\/blog\/wp-content\/uploads\/2021\/02\/image-20-300x175.png 300w, https:\/\/www.webdot.fr\/blog\/wp-content\/uploads\/2021\/02\/image-20-768x448.png 768w, https:\/\/www.webdot.fr\/blog\/wp-content\/uploads\/2021\/02\/image-20-515x300.png 515w, https:\/\/www.webdot.fr\/blog\/wp-content\/uploads\/2021\/02\/image-20-512x300.png 512w, https:\/\/www.webdot.fr\/blog\/wp-content\/uploads\/2021\/02\/image-20.png 1372w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Il faut aussi que des volumes persistants soient pr\u00e9sents. Le premier conserve les identifiants de votre abonnement VPN, le second correspond aux r\u00e9pertoires de t\u00e9l\u00e9chargement de Transmission, ce serait dommage de perdre tous les t\u00e9l\u00e9chargements d\u00e8s que l&rsquo;image doit \u00eatre reg\u00e9n\u00e9r\u00e9e par exemple. Cela peut se configurer dans Portainer, ou cela correspond aux lignes d\u00e9clarant les volumes dans le fichier <em>docker-compose.yml<\/em>. <\/p>\n\n\n\n<p>Le r\u00e9pertoire <em>transmission-home,<\/em> qui se trouve dans le r\u00e9pertoire \/volume1\/Download\/Transmission, contient le fichier de param\u00e9trage <em>settings.json<\/em>.<\/p>\n\n\n\n<p>Je ne rentrerai pas dans le fonctionnement de cette image qui est complexe, on peut se r\u00e9f\u00e9rer directement \u00e0 la page de l&rsquo;auteur pour \u00e7a.<\/p>\n\n\n\n<p>Extrait de la doc :<\/p>\n\n\n\n<div class=\"wp-block-group\"><div class=\"wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow\">\n<div class=\"wp-block-group\"><div class=\"wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow\">\n<blockquote class=\"wp-block-quote\"><p>To understand how it works, this is the most important events and who\/what starts them.<\/p><p>&#8211; You start the container<\/p><p>The container starts OpenVPN<\/p><p>OpenVPN starts\/stops Transmission<\/p><p>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:<\/p><cite><a href=\"https:\/\/haugene.github.io\/docker-transmission-openvpn\/\">https:\/\/haugene.github.io\/docker-transmission-openvpn\/<\/a><\/cite><\/blockquote>\n\n\n\n<p><\/p>\n<\/div><\/div>\n<\/div><\/div>\n\n\n\n<p>Donc Transmission ne peut pas tourner si openvpn tombe, ce qui est heureux.<\/p>\n\n\n\n<p>Par ailleurs, la doc est tr\u00e8s claire et explique qu&rsquo;il faut fixer des variables <\/p>\n\n\n\n<p><code>OPENVPN_PROVIDER<\/code>, <code>OPENVPN_CONFIG<\/code>, <code>OPENVPN_USERNAME<\/code>, <code>OPENVPN_PASSWORD<\/code><\/p>\n\n\n\n<p>que l&rsquo;on peut fixer, toujours dans Portainer, en utilisant le champ &lsquo;Env\u00a0\u00bb dans \u00ab\u00a0advanced settings\u00a0\u00bb quand on va \u00e9diter le container :<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"278\" src=\"https:\/\/www.webdot.fr\/blog\/wp-content\/uploads\/2021\/02\/image-21-1024x278.png\" alt=\"\" class=\"wp-image-172\" srcset=\"https:\/\/www.webdot.fr\/blog\/wp-content\/uploads\/2021\/02\/image-21-1024x278.png 1024w, https:\/\/www.webdot.fr\/blog\/wp-content\/uploads\/2021\/02\/image-21-300x81.png 300w, https:\/\/www.webdot.fr\/blog\/wp-content\/uploads\/2021\/02\/image-21-768x208.png 768w, https:\/\/www.webdot.fr\/blog\/wp-content\/uploads\/2021\/02\/image-21-590x160.png 590w, https:\/\/www.webdot.fr\/blog\/wp-content\/uploads\/2021\/02\/image-21.png 1190w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Dans mon cas, j&rsquo;ai un abonnement \u00e0 PureVPN, d&rsquo;o\u00f9 le serveur d\u00e9fini dans la variable OPENVPN_CONFIG.<\/p>\n\n\n\n<p>Apr\u00e8s tout \u00e7a, Transmission devrait fonctionner correctement.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Pour utiliser Transmission de fa\u00e7on s\u00e9curis\u00e9e et anonyme, le plus simple est d&rsquo;utiliser l&rsquo;image haugene\/transmission-openvpn. On peut le faire directement dans Portainer : Il est \u00e9galement possible de g\u00e9n\u00e9rer le docker avec un fichier docker-compose.yml &hellip;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6,7],"tags":[],"_links":{"self":[{"href":"https:\/\/www.webdot.fr\/blog\/wp-json\/wp\/v2\/posts\/155"}],"collection":[{"href":"https:\/\/www.webdot.fr\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.webdot.fr\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.webdot.fr\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.webdot.fr\/blog\/wp-json\/wp\/v2\/comments?post=155"}],"version-history":[{"count":11,"href":"https:\/\/www.webdot.fr\/blog\/wp-json\/wp\/v2\/posts\/155\/revisions"}],"predecessor-version":[{"id":441,"href":"https:\/\/www.webdot.fr\/blog\/wp-json\/wp\/v2\/posts\/155\/revisions\/441"}],"wp:attachment":[{"href":"https:\/\/www.webdot.fr\/blog\/wp-json\/wp\/v2\/media?parent=155"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.webdot.fr\/blog\/wp-json\/wp\/v2\/categories?post=155"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.webdot.fr\/blog\/wp-json\/wp\/v2\/tags?post=155"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}