Someone already has a project for that on GitHub. I haven't tried it yet tho. The creator is also rewriting it to support other clients such as transmission and qbittorrent (v3 branch).
post
If you happen to use gluetun (great project btw) you can use the environment property VPN_PORT_FORWARDING=on and a volume mapping to /tmp/gluetun/forwarded_port to obtain the port number from the container. Then with the bittorrent-port-forward-file container (Link) you can automatically set the port from the file to qbittorrent.
I use this with ProtonVPN and it works like a charm.
Here the relevant parts of my docker compose file:
gluetun:
image: qmcgaw/gluetun
<...>
volumes:
<...>
- ./port-forwarding/forwarded_port:/tmp/gluetun/forwarded_port:rw
environment:
# See https://github.com/qdm12/gluetun/wiki
<...>
- VPN_PORT_FORWARDING=on
- VPN_PORT_FORWARDING_PROVIDER=protonvpn
qbittorrent-port-forward-file:
platform: linux/amd64 #needed for raspi
image: charlocharlie/qbittorrent-port-forward-file
container_name: port-forward-file
depends_on:
- qbittorrent
- gluetun
restart: unless-stopped
volumes:
- ./port-forwarding:/config:ro
environment:
- QBT_USERNAME=
- QBT_PASSWORD=
- QBT_ADDR=gluetun:9092
- PORT_FILE=/config/forwarded_port
The file containing the port number sits at ./port-forwarding/forwarded_port on the host (you may need to create the empty file before first usage).
See gluetun wiki here: Link
This has been on my list of things to do for some time. I took a look at the API calls once and it seems they purposefully obfuscate doing a manual call.
all 5 comments