gluetun: switch to protonvpn provider with port forwarding enabled

Custom WireGuard mode doesn't support NAT-PMP port forwarding — peers
can't connect inbound so most torrents stall. Switching to protonvpn
provider with SERVER_FEATURES=p2p picks a port-forwarding-capable server
and VPN_PORT_FORWARDING=on handles the NAT-PMP handshake. Up command
updates qBittorrent listen port automatically when gluetun gets the port.
This commit is contained in:
Will Anderson
2026-04-11 04:09:29 -05:00
parent d59af5b6aa
commit 9cd3dd0134
@@ -35,7 +35,7 @@ spec:
add: ["NET_ADMIN"] add: ["NET_ADMIN"]
env: env:
- name: VPN_SERVICE_PROVIDER - name: VPN_SERVICE_PROVIDER
value: "custom" value: "protonvpn"
- name: VPN_TYPE - name: VPN_TYPE
value: "wireguard" value: "wireguard"
- name: WIREGUARD_PRIVATE_KEY - name: WIREGUARD_PRIVATE_KEY
@@ -43,19 +43,22 @@ spec:
secretKeyRef: secretKeyRef:
name: media-secrets name: media-secrets
key: PROTONVPN_PRIVATE_KEY key: PROTONVPN_PRIVATE_KEY
- name: WIREGUARD_PUBLIC_KEY # Pick a US P2P server — P2P servers support port forwarding
value: "mngiSxBpH7GU24nnWdBEcnhDnCPn2jq5+ZP3zwPwISA=" - name: SERVER_COUNTRIES
- name: WIREGUARD_ADDRESSES value: "United States"
value: "10.2.0.2/32" - name: SERVER_FEATURES
- name: VPN_ENDPOINT_IP value: "p2p"
value: "95.173.217.29" # Port forwarding via NAT-PMP — lets peers connect inbound, fixes slow/stalled downloads
- name: VPN_ENDPOINT_PORT - name: VPN_PORT_FORWARDING
value: "51820" value: "on"
# When gluetun gets a forwarded port, tell qBittorrent to listen on it
- name: VPN_PORT_FORWARDING_UP_COMMAND
value: "/bin/sh -c 'curl -s -c /tmp/pf.jar -X POST http://localhost:8080/api/v2/auth/login -d username=admin&password=adminadmin >/dev/null && curl -s -b /tmp/pf.jar -X POST http://localhost:8080/api/v2/app/setPreferences -d \"json={\\\"listen_port\\\":{{FORWARDED_PORT}}}\"'"
# Allow cluster-internal traffic to bypass VPN (for Radarr/Sonarr → qBittorrent API) # Allow cluster-internal traffic to bypass VPN (for Radarr/Sonarr → qBittorrent API)
- name: FIREWALL_OUTBOUND_SUBNETS - name: FIREWALL_OUTBOUND_SUBNETS
value: "10.42.0.0/16,10.43.0.0/16" value: "10.42.0.0/16,10.43.0.0/16"
- name: UPDATER_PERIOD - name: UPDATER_PERIOD
value: "0" value: "24h"
ports: ports:
- containerPort: 8888 # gluetun HTTP proxy (unused but required) - containerPort: 8888 # gluetun HTTP proxy (unused but required)
resources: resources: