I recently went through setting this up. I can give you a base compose.yaml based on the one I have
For the wireguard config, you would throw your .conf file to /path/to/wireguard/config, like so: /path/to/wireguard/config/wg0.conf
This setup assumes you have ipv6 working and enabled. The wg0.conf would also have the VPNs ipv6 address. I use Mullvad too btw.
You can access Qbittorrent's web UI through http://localhost:8090.
I'd like to note that the image I use for Qbittorrent has support built in for VPN, but with the setup I have I basically have the wireguard container with its network, and multiple containers on that same network. In theory it should work with other bittorrent clients.
And the docker images for reference:
version: '3.7'
services:
wireguard:
image: lscr.io/linuxserver/wireguard:latest
container_name: wireguard
cap_add:
- NET_ADMIN
- SYS_MODULE #optional
networks:
- wireguard_network
environment:
- PUID=1000
- PGID=1000
- TZ=Etc/UTC
volumes:
- /path/to/wireguard/config:/config
- /lib/modules:/lib/modules #optional
ports:
- 51820:51820/udp # Wireguard
- 8090:8090 # QBittorrent
sysctls:
- net.ipv4.conf.all.src_valid_mark=1
- net.ipv6.conf.all.disable_ipv6=0
restart: unless-stopped
qbittorrentvpn:
privileged: true
container_name: qbtwg
network_mode: service:wireguard
depends_on:
- wireguard
volumes:
- '/path/to/qbtconfig/:/config'
- '/path/to/downloads/:/downloads'
environment:
- VPN_ENABLED=no
- VPN_TYPE=wireguard
- PUID=1000
- PGID=1000
- LAN_NETWORK=192.168.1.0/24
- 'NAME_SERVERS=1.1.1.1,1.0.0.1'
restart: unless-stopped
image: dyonr/qbittorrentvpn
networks:
wireguard_network:
driver: bridge