miklosbagi/gluetrans

By miklosbagi

Updated about 1 month ago

This image brings together Gluetun, Transmission, and VPN Peer Ports (for PIAVPN and ProtonVPN).

Image
Networking
Developer Tools

1.4K

GlueTrans Peer Port updater images

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.

Warning
Breaking 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.

Tags

  • latest: matches latest released
  • vX.Y: previous releases for legacy compatibility. Releases page has detailed info on these.
  • dev: against various dev branches, please expect issues with this

Minimal

docker 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

Docker-compose examples

PiaVPN (gluetun + transmission + piavpn)

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
ProtonVPN (gluetun + transmission + protonvpn) (gluetun v3.36 and above only)

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.

Gluetun config.toml

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 Command

docker pull miklosbagi/gluetrans