miklosbagi/gluetrans
This image brings together Gluetun, Transmission, and VPN Peer Ports (for PIAVPN and ProtonVPN).
1.4K
This image updates Transmission peer port with the one received from VPN via Gluetun.
Please see the github page for usage details.
AMD64 and ARM64 platforms are supported.
WarningBreaking change ahead: starting from gluetun 3.40.0+ versions, control server requires authentication.
Gluetrans, from version 0.3.5 and above provides support for this change, but an API key must be provided. Please the docker compose examples and config.toml example below.
In short:
1. Set `GLUETUN_CONTROL_API_KEY` in your environment variables.
2. Create a role in gluetun's `config.toml` with the same API key.
3. Map `config.toml` to gluetun container.
4. Set the same API key in gluetrans' environment variables.
latest
: matches latest releasedvX.Y
: previous releases for legacy compatibility. Releases page has detailed info on these.dev
: against various dev branches, please expect issues with thisdocker run \
-e GLUETUN_CONTROL_ENDPOINT=http://gluetun:8000 \
-e GLUETUN_HEALTH_ENDPOINT=http://gluetun:8080 \
-e TRANSMISSION_ENDPOINT=http://transmission:9091/transmission/rpc \
-e TRANSMISSION_USER=transmission \
-e TRANSMISSION_PASS=transmission \
miklosbagi/gluetrans:latest
Please note that data
directory will be created if this gets executed as is.
Also, please note that we test against versions, not :latest, as that's like a weather report.
services:
gluetun:
image: qmcgaw/gluetun:v3.40.0
volumes:
- ./data/gluetun:/gluetun
cap_add:
- NET_ADMIN
ports:
- 8000:8000 # Control server
- 9091:9091 # Transmission UI
environment:
VPN_SERVICE_PROVIDER: "private internet access"
OPENVPN_USER: My OpenVPN Username
OPENVPN_PASSWORD: My OpenVPN Password
SERVER_REGIONS: "FI Helsinki,France,Norway,SE Stockholm,Serbia"
VPN_PORT_FORWARDING: on
VPN_PORT_FORWARDING_PROVIDER: "private internet access"
# from gluetun v3.40.0+ control server auth, mapping config.toml with api key is required
volumes:
- ./gluetun-config/config.toml:/gluetun/auth/config.toml
restart: unless-stopped
# for ubuntu-latest, you may need:
devices:
- /dev/net/tun:/dev/net/tun
transmission:
image: linuxserver/transmission:4.0.6
environment:
USER: My Transmission Username
PASS: My Transmission Password
#PEERPORT: # this is what we do here, so skip it.
volumes:
- ./data/transmission:/config
- ./data/transmission_downloads:/downloads
network_mode: "service:gluetun" # go through gluetun's VPN
restart: unless-stopped
depends_on:
- gluetun
gluetrans:
image: miklosbagi/gluetrans:latest
environment:
GLUETUN_CONTROL_ENDPOINT: http://localhost:8000
GLUETUN_HEALTH_ENDPOINT: http://localhost:9999
# from gluetun v3.40.0+ control server auth key must be passed
GLUETUN_CONTROL_API_KEY: "secret-apikey-for-gluetrans" # must match the one in config.toml
TRANSMISSION_ENDPOINT: http://localhost:9091/transmission/rpc
TRANSMISSION_USER: My Transmission Username
TRANSMISSION_PASS: My Transmission Password
PEERPORT_CHECK_INTERVAL: 30 # optional, default: 15, in seconds
GLUETUN_PICK_NEW_SERVER_AFTER: 15 # optional, default: 10, in number of retries
FORCED_COUNTRY_JUMP: 0 # optional, default: 0 (means: disabled). Example: 120 (jump to new country every 2 hours)
network_mode: "service:gluetun" # go through gluetun's VPN
depends_on:
- gluetun
Please note that data
directory will be created if this gets executed as is.
Also, please note that we test against versions, not :latest, as that's like a weather report.
services:
gluetun:
image: qmcgaw/gluetun:v3.40.0
volumes:
- ./data/gluetun:/gluetun
cap_add:
- NET_ADMIN
ports:
- 8000:8000 # Control server
- 9091:9091 # Transmission UI
environment:
VPN_SERVICE_PROVIDER: "protonvpn"
OPENVPN_USER: My OpenVPN Username
OPENVPN_PASSWORD: My OpenVPN Password
SERVER_COUNTRIES: "Romania,Poland,Netherlands,Moldova"
VPN_PORT_FORWARDING: on
VPN_PORT_FORWARDING_PROVIDER: "protonvpn"
# from gluetun v3.40.0+ control server auth, mapping config.toml with api key is required
volumes:
- ./gluetun-config/config.toml:/gluetun/auth/config.toml
restart: unless-stopped
# for ubuntu-latest, you may need:
devices:
- /dev/net/tun:/dev/net/tun
transmission: ...same as with piavpn above...
gluetrans: ....same as with piavpn above...
Please note that the above is example for piavpn. Nightly tests are running against protonvpn provider, feel free to take a look into the compose file in test for a working example.
For control server authentication, config.toml
will be required to allow gluetrans to send authenticated requests to gluetun.
[[roles]]
name = "gluetrans"
routes = ["GET /v1/openvpn/portforwarded", "PUT /v1/openvpn/status"]
auth = "apikey"
apikey = "secret-apikey-for-gluetrans"
Also available on ghcr.
docker pull miklosbagi/gluetrans