You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -69,7 +69,7 @@ The README is a tour. The full user guide lives under `docs/`.
69
69
- Caddy reverse proxy with three remote-access modes: LAN (plain HTTP), DuckDNS (Let's Encrypt), Cloudflare DNS-01 wildcard Let's Encrypt
70
70
- Two LAN hostname modes: install dnsmasq for LAN-wide resolution, or print a single `/etc/hosts` line
71
71
- TRaSH-compliant shared `/data` mount so hardlinks work across `torrents/` and `media/`
72
-
- Optional gluetun + WireGuard VPN container in front of qBittorrent
72
+
- Optional gluetun + WireGuard VPN container in front of qBittorrent (Mullvad, Proton, NordVPN, or any custom WireGuard provider; for NordVPN you paste an access token and the WireGuard key is derived for you)
Copy file name to clipboardExpand all lines: docs/guide/06-vpn.md
+56-2Lines changed: 56 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
1
# 06. VPN (gluetun + WireGuard)
2
2
3
-
arrstack routes **qBittorrent only** through a VPN by default. Prowlarr, Sonarr, Radarr, and the rest use your normal internet connection. This page covers enabling gluetun, pasting a WireGuard config from Mullvador Proton (or any provider via the custom path), and understanding the kill-switch behavior so your torrent traffic never leaks.
3
+
arrstack routes **qBittorrent only** through a VPN by default. Prowlarr, Sonarr, Radarr, and the rest use your normal internet connection. This page covers enabling gluetun, pasting a WireGuard config from Mullvad, Proton, or NordVPN (or any other provider via the custom path), and understanding the kill-switch behavior so your torrent traffic never leaks.
# Your host's own public IP, for comparison with Sonarr's
54
+
curl -s https://ifconfig.me;echo
55
+
```
56
+
57
+
If qBittorrent's IP differs from the other two (a NordVPN address) while Sonarr
58
+
matches your host, the split is working as designed. If qBittorrent's IP equals
59
+
your ISP IP, the tunnel is not up, check `arrstack logs gluetun`.
60
+
61
+
This is structural, not luck: only qBittorrent is rendered with
62
+
`network_mode: service:gluetun`, so its *only* possible route is gluetun's tunnel
63
+
(that is also the kill switch). Every other service sits on the `arrstack` bridge
64
+
and egresses through the host, so it cannot use the VPN even if the tunnel is up.
65
+
To route something else through the VPN you would have to add it to gluetun's
66
+
network namespace too; arrstack does not do this by default.
67
+
33
68
## Kill-switch behavior
34
69
35
70
gluetun sets strict firewall rules: the only egress allowed is through the WireGuard tunnel. If the tunnel drops, packets are rejected. qBittorrent, living inside the same netns, cannot talk to anything.
ProtonVPN's free tier does not allow P2P. You need Plus or higher. Port forwarding works but requires `natpmpc` inside the container, which gluetun handles.
95
130
131
+
### NordVPN
132
+
133
+
NordVPN uses WireGuard via its NordLynx protocol. You do not paste a `.conf` file or hunt for a private key, you paste a **NordVPN access token** and arrstack derives the WireGuard key for you.
134
+
135
+
1. Create an access token at **https://my.nordaccount.com/dashboard/nordvpn/access-tokens/** ("Generate new token", then copy the 64-character value). The wizard prints this same link right under the token field.
136
+
2. In the wizard, pick provider `nordvpn` and paste the token into the **NordVPN token** field.
4. Optionally set **Countries** (e.g. `Netherlands`), which maps to gluetun's `SERVER_COUNTRIES`.
139
+
140
+
At install time arrstack calls NordVPN's credentials API with your token, pulls the NordLynx private key, and writes it into gluetun's config as `WIREGUARD_PRIVATE_KEY`. The **token** is what gets saved in `state.json` (so reconfigure and `--resume` keep working); the derived key only lives in the generated `docker-compose.yml`. gluetun ships a built-in NordVPN server list, so unlike the `custom` path you never provide an endpoint IP, port, or server public key. NordVPN allows P2P and gluetun picks a P2P-capable server when you torrent.
141
+
142
+
Already extracted the NordLynx key yourself? Running
returns a `nordlynx_private_key`. You can paste that 44-character key into the field instead of the token and arrstack will use it as-is (it only auto-derives when the value looks like a 64-character token).
149
+
96
150
### AirVPN and other providers (use `custom`)
97
151
98
152
AirVPN, PrivateInternetAccess, and any other WireGuard provider that hands you a `.conf` file go through the `custom` path. Gluetun has a built-in server list for Mullvad and Proton only; for everything else you feed it the endpoint yourself.
<pclass="svc-desc"><spanclass="svc-role">vpn</span> Wraps the download client in a killswitched VPN tunnel. Enabled when you pick a provider (Mullvad, Proton, or custom) and provide WireGuard credentials in the wizard.</p>
215
+
<pclass="svc-desc"><spanclass="svc-role">vpn</span> Wraps the download client in a killswitched VPN tunnel. Enabled when you pick a provider (Mullvad, Proton, NordVPN, or custom) in the wizard. NordVPN just needs an access token, the WireGuard key is derived for you.</p>
0 commit comments