Transmission_VPN

Transmission_VPN

Docker app from clowrym's Repository

Overview

Transmission is a full-featured ​BitTorrent client for Linux, OS X, Unix and Windows.
This Docker includes OpenVPN to ensure a secure and private connection to the Internet, including use of iptables to prevent IP leakage when the tunnel is down. It also includes Privoxy to allow unfiltered access to index sites, to use Privoxy please point your application at "host ip:8118"

Configuration
/config This is where Transmission will store it's configuration file, database and logs.
/data This is where Transmision will store data downloaded, watched folder, and archived torrents.

Notes
For help on configuration for PIA, AirVPN and custom VPN providers please go here http://lime-technology.com/forum/index.php?topic=45812.msg437678#msg437678
IMPORTANT - To allow access to the Transmission webui, Privoxy and Transmission deamon you need to specify you LAN network, using CIDR notation for the mask, a subnet mask of 255.255.255.0 would equate to CIDR /24, 255.255.0.0 would equate to CIDR /16.

OpenVPN and Transmission with WebUI

Docker Build Docker Pulls

This container contains OpenVPN and Transmission with a configuration where Transmission is running only when OpenVPN has an active tunnel. It has built-in support for many popular VPN providers to make the setup easier.

Read this first

The documentation for this image is hosted on GitHub pages:

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

If you can't find what you're looking for there, please have a look in the discussions as we're trying to use that for general questions.

If you have found what you believe to be an issue or bug, create an issue and provide enough details for us to have a chance to reproduce it or understand what's going on. NB: Be sure to search for similar issues (open and closed) before opening a new one.

Quick Start

These examples show valid setups using PIA as the provider for both docker run and docker-compose. Note that you should read some documentation at some point, but this is a good place to start.

Docker run

$ docker run --cap-add=NET_ADMIN -d \
              -v /your/storage/path/:/data \
              -v /your/config/path/:/config \
              -e OPENVPN_PROVIDER=PIA \
              -e OPENVPN_CONFIG=france \
              -e OPENVPN_USERNAME=user \
              -e OPENVPN_PASSWORD=pass \
              -e LOCAL_NETWORK=192.168.0.0/16 \
              --log-driver json-file \
              --log-opt max-size=10m \
              -p 9091:9091 \
              haugene/transmission-openvpn

Podman run

Beware: container is run as privileged, meaning it has full access to host OS.

$ podman run --privileged -d \
              -v /your/storage/path/:/data \
              -v /your/config/path/:/config \
              -e OPENVPN_PROVIDER=PIA \
              -e OPENVPN_CONFIG=france \
              -e OPENVPN_USERNAME=user \
              -e OPENVPN_PASSWORD=pass \
              -e LOCAL_NETWORK=192.168.0.0/16 \
              --log-driver k8s-file \
              --log-opt max-size=10m \
              -p 9091:9091 \
              haugene/transmission-openvpn

Docker version 3.x Compose

version: '3.3'
services:
    transmission-openvpn:
        cap_add:
            - NET_ADMIN
        volumes:
            - '/your/storage/path/:/data'
            - '/your/config/path/:/config'
        environment:
            - OPENVPN_PROVIDER=PIA
            - OPENVPN_CONFIG=france
            - OPENVPN_USERNAME=user
            - OPENVPN_PASSWORD=pass
            - LOCAL_NETWORK=192.168.0.0/16
        logging:
            driver: json-file
            options:
                max-size: 10m
        ports:
            - '9091:9091'
        image: haugene/transmission-openvpn

Docker version 2.x Compose

version: "2.0"
services:
    transmission-openvpn:
        container_name: transmission
        cap_add:
            - NET_ADMIN
        volumes:
            - '/your/storage/path/:/data'
            - '/your/config/path/:/config'
        environment:
            - OPENVPN_PROVIDER=PIA
            - OPENVPN_CONFIG=france
            - OPENVPN_USERNAME=user
            - OPENVPN_PASSWORD=pass
            - LOCAL_NETWORK=192.168.0.0/16
        logging:
            driver: "json-file"
            options:
                max-size: 10m
        ports:
            - 9091:9091
        image: haugene/transmission-openvpn

Known issues

If you've been running a stable setup that has recently started to fail, please check your logs. Are you seeing curl: (6) getaddrinfo() thread failed to start or WARNING: initial DNS resolution test failed? Then have a look at #2410 and this comment in particular. There is a fix and a workaround available.

Image versioning

We aim to create periodic fixed releases with a semver versioning scheme. The latest of the tagged fixed releases will also have the latest tag.

A semver release will be tagged with major, major.minor and major.minor.patch versions so that you can lock the version at either level.

We also have a tag called edge which will always be the latest commit on master, and dev which is the last commit on the dev branch. From time to time we can also have various beta branches and tags, but using either dev or beta tags is probably not for the average user and you should expect there to be occasional breakage or even the deletion of the tags upstream.

Please help out (about:maintenance)

This image was created for my own use, but sharing is caring, so it had to be open source. It has now gotten quite popular, and that's great! But keeping it up to date, providing support, fixes and new features take time. If you feel that you're getting a good tool and want to support it, there are a couple of options:

A small montly amount through Donate with Patreon or a one time donation with Donate with PayPal

All donations are greatly appreciated! Another great way to contribute is of course through code. A big thanks to everyone who has contributed so far!

Install Transmission_VPN on Unraid in a few clicks.

Find Transmission_VPN in Community Apps on your Unraid server, review the template, and click Install. Unraid handles the Docker app or plugin setup from the published template.

Open the Apps tab on your Unraid server Search Community Apps for Transmission_VPN Review the template variables and paths Click Install

Categories

Download Statistics

393,614,173
Total Downloads
195,244
This Month
349,086
Avg / Month

Total Downloads Over Time

Loading chart...

Related apps

Explore more like this

Explore all

Details

Repository
haugene/transmission-openvpn:dev
Last Updated2026-04-02
First Seen2020-11-25

Runtime arguments

Web UI
http://[IP]:[PORT:9091]/
Network
bridge
Shell
sh
Privileged
true
Extra Params
--cap-add=NET_ADMIN --restart=unless-stopped --log-opt max-size=50m --log-driver json-file --dns 8.8.8.8 --dns 1.1.1.1

Template configuration

Host Port 1Porttcp

Container Port: 9091

Target
9091
Default
9091
Value
9091
Host Path 2Pathrw

Container Path: /data

Target
/data
Default
path for downloads
Value
/mnt/user/T_Media/Torrent/
Key 2Variable

Container Variable: OPENVPN_USERNAME

Target
OPENVPN_USERNAME
Default
vpn username
Value
VPN_USER
Key 3Variable

Container Variable: VPN_PASSWORD

Target
OPENVPN_PASSWORD
Default
vpn password
Value
VPN_PASSWORD
OPENVPN_CONFIGVariable

OPENVPN_CONFIG

Default
au_melbourne|au_sydney|brazil|ca_north_York|ca_toronto|denmark|finland|france|germany|hong_kong|india|ireland|israel|italy|japan|mexico|netherlands|new_zealand|norway|romania|singapore|sweden|switzerland|turkey|uk_london|uk_southampton|us_california|us_east|us_florida|us_midwest|us_new_york_city|us_seattle|us_silicon_valley|us_texas|us_west|default|
Value
switzerland
OPENVPN_PROVIDERVariable

Container Variable: OPENVPN_PROVIDER

Default
ANONINE|BTGUARD|CRYPTOSTORM|CUSTOM|FROOT|FROSTVPN|GIGANEWS|HIDEME|HIDEMYASS|INTEGRITYVPN|IPREDATOR|IPVANISH|IVACY|IVPN|NEWSHOSTING|NORDVPN|OVPN|PIA|PRIVATEVPN|PRIVADO|PROXPN|PUREVPN|RA4W|SLICKVPN|SMARTVPNTIGER|TORGUARD|TUNNELBEAR|USENETSERVER|WINDSCRIBE|VPNHT|VPNBOOK|VPNTUNNEL|VPNUNLIMITED|VYPRVPN|
Value
PIA
LOCAL_NETWORKVariable

Container Variable: LOCAL_NETWORK

Value
192.168.0.0/24
Transmission_UsernameVariable

Container Variable: RPC_USERNAME

Target
TRANSMISSION_RPC_USERNAME
Default
admin
Value
TRANS_USER
Transmission_PasswordVariable

Container Variable: RPC_PASSWORD

Target
TRANSMISSION_RPC_PASSWORD
Default
password
Value
TRANS_PASSWORD
OpenVPN_OPTIONSVariable

--inactive 3600 --ping 10 --ping-exit 60 --restart=always

Target
OPENVPN_OPTS
Value
--inactive 3600 --ping 10 --ping-exit 60 --mute-replay-warnings
PUIDVariable

Container Variable: PUID

Value
99
PGIDVariable

Container Variable: PGID

Value
100
DownloadPathrw

Container Path: /downloads

Target
/downloads
Value
/mnt/user/T_Media/Torrent/
Watch FolderPathrw

Container Path: /watch

Target
/watch
Default
/mnt/user/T_Media/Torrent/watch/
Value
/mnt/user/T_Media/Torrent/watch/
Trans_Option_Download DirVariable

Container Variable: TRANSMISSION_DOWNLOAD_DIR

Target
TRANSMISSION_DOWNLOAD_DIR
Value
/downloads
TRANSMISSION_RPC_AUTHENTICATION_REQUIREDVariable

Container Variable: TRANSMISSION_RPC_AUTHENTICATION_REQUIRED

Default
true|false
Value
true
RATIO_LIMIT_ENABLEDVariable

Enable Ratio Limits

Target
TRANSMISSION_RATIO_LIMIT_ENABLED
Default
true|false
Value
true
TRANSMISSION_DOWNLOAD_QUEUE_SIZEVariable

Container Variable: TRANSMISSION_DOWNLOAD_QUEUE_SIZE

Default
10
Value
15
TRANSMISSION_CACHE_SIZE_MBVariable

Container Variable: TRANSMISSION_CACHE_SIZE_MB

Default
10
Value
10
TRANSMISSION_INCOMPLETE_DIRVariable

Container Variable: TRANSMISSION_INCOMPLETE_DIR

Default
/downloads/incomplete
Value
/downloads/incomplete
DownloadPathrw

Container Path: /mnt/user/T_Media/Torrent/

Target
/mnt/user/T_Media/Torrent/
Default
/mnt/user/T_Media/Torrent/
Value
/mnt/user/T_Media/Torrent/
WEB_GUIVariable

Web UI Options

Target
TRANSMISSION_WEB_UI
Default
transmission-web-control|kettu|combustion
Value
transmission-web-control
GLOBAL_APPLY_PERMISSIONSVariable

Apply permsissions Globally on Transmissions files / Folders

Default
true|false
Value
false
WebProxyVariable

Container Path: WEBPROXY_ENABLED

Target
WEBPROXY_ENABLED
Default
false
Value
false
PIA_OPENVPN_CONFIG_BUNDLE=openvpn-tcp-nextgenVariable

testing openvpn-tcp-nextgen

Target
PIA_OPENVPN_CONFIG_BUNDLE
Default
openvpn-tcp|openvpn|openvpn-strong|openvpn-strong-tcp
Value
openvpn-tcp