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