1) Docker Compose (Gluetun + Transmission)
Transmission shares the Gluetun network namespace. Publish Web UI and ports on the gluetun service only.
services:
gluetun:
image: qmcgaw/gluetun
container_name: gluetun
cap_add: [NET_ADMIN]
environment:
- TZ=UTC
# Choose ONE stack (WireGuard shown):
- VPN_SERVICE_PROVIDER=custom
- VPN_TYPE=wireguard
- WIREGUARD_PRIVATE_KEY=<your_private_key>
- WIREGUARD_ADDRESSES=<10.x.x.x/32>
- SERVER_HOSTNAMES=<provider_servername>
# Or OpenVPN: set OPENVPN_USER/OPENVPN_PASSWORD/OPENVPN_CONFIG
volumes:
- ./gluetun:/gluetun
ports:
- "9091:9091" # Transmission Web UI (via gluetun)
- "51413:51413" # BitTorrent TCP
- "51413:51413/udp" # BitTorrent UDP
restart: unless-stopped
transmission:
image: lscr.io/linuxserver/transmission:latest
container_name: transmission
network_mode: "service:gluetun"
depends_on: [gluetun]
environment:
- PUID=1000
- PGID=1000
- TZ=UTC
- USER=<webui-user>
- PASS=<webui-pass>
volumes:
- ./transmission/config:/config
- ./transmission/downloads:/downloads
restart: unless-stopped
Access Transmission Web UI at http://HOST:9091 (published on gluetun).
2) Safelist your VPN egress
/24 range.Type: IP or CIDR
Value: 198.51.100.42 # Your VPN egress IP
or 198.51.100.0/24 # Range if provider rotates
Label: Transmission VPN
Egress rotates? Prefer a /24 covering your provider pool to keep announces marked Covered.
3) Transmission checks
51413 TCP/UDP.
4) Start the Test Torrent
Open Services → Torrents → Test Torrent, copy the magnet into Transmission, then wait ~1–3 minutes for an announce.
- Ensure the torrent is added and not paused.
- Confirm dashboard shows a recent Last Seen and Monitoring state.
No content is downloaded. The test torrent is metadata-only and exists to validate announce routing.
5) Alerts
- Email: add your address and confirm.
- Telegram: click Connect Telegram, then tap Start in the bot.
FAQ & Troubleshooting
Does Transmission support SOCKS5?
No. Transmission does not include a native SOCKS5 proxy. This Monitor guide covers VPN egress via Gluetun only.
Web UI not reachable on 9091?
Ensure 9091:9091 is published on the gluetun service, and that transmission uses network_mode: "service:gluetun".
Egress IP changed & now shows Uncovered
Update your Safelist IP or use a /24 CIDR that includes the new egress.