Skip to content

Commit 83a3aa8

Browse files
committed
Add VPN kill switch verification and improve Watchtower visibility
1 parent 6be2c38 commit 83a3aa8

2 files changed

Lines changed: 37 additions & 1 deletion

File tree

README.md

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@ Then open Tidarr at `http://localhost:8484` to authenticate with your Tidal acco
7777
| Log prune | Daily | Removes log files older than 30 days |
7878
| Franchise sort | After Kometa | Sorts franchise collection movies by release date in Plex |
7979
| VPN failover | Every 2 min (optional) | Auto-switches between ProtonVPN and NordVPN on sustained failure |
80+
| Watchtower | Weekly (optional) | Auto-pulls latest container images and recreates updated services |
8081

8182
## One-Command Install
8283

@@ -107,6 +108,8 @@ bash scripts/configure.sh
107108
bash scripts/install-launchd-jobs.sh
108109
```
109110

111+
The `watchtower` line above enables automatic container image updates (checks weekly). It's optional but recommended so your services stay patched without manual pulls.
112+
110113
## Full Setup Guide
111114

112115
See [SETUP.md](SETUP.md) for the complete walkthrough.
@@ -136,7 +139,7 @@ Optional music:
136139
Tidarr (Tidal FLAC downloads) ----^
137140
```
138141

139-
All download traffic routes through ProtonVPN (with optional NordVPN failover). Everything else uses your normal connection. All services auto-start on boot and self-heal if they go down.
142+
All download traffic routes through ProtonVPN (with optional NordVPN failover). Gluetun's built-in kill switch blocks traffic if the VPN drops, so your real IP is never exposed through the tunnel. Everything else uses your normal connection. All services auto-start on boot and self-heal if they go down.
140143

141144
## Scripts
142145

SETUP.md

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,39 @@ docker compose --profile autoupdate up -d watchtower
9898

9999
---
100100

101+
## Verify Your VPN Kill Switch
102+
103+
Once the stack is running, confirm your real IP is never exposed through the VPN tunnel:
104+
105+
```bash
106+
# 1. Check the VPN's IP (should be your VPN provider, not your ISP)
107+
docker exec gluetun sh -c 'wget -qO- https://ipinfo.io/ip'
108+
109+
# 2. Check your real IP (run outside Docker)
110+
curl -s https://ipinfo.io/ip
111+
112+
# 3. Confirm they're different
113+
```
114+
115+
To test the kill switch (traffic should be blocked when the VPN drops):
116+
117+
```bash
118+
# Kill the VPN process inside the container
119+
docker exec gluetun sh -c 'killall -SIGUSR1 openvpn'
120+
121+
# Try reaching the internet from inside the VPN namespace — should fail/timeout
122+
docker exec gluetun sh -c 'wget -qO- --timeout=5 https://ipinfo.io/ip'
123+
124+
# Restore the VPN
125+
docker restart gluetun
126+
```
127+
128+
If the second `wget` returns an IP instead of timing out, your kill switch isn't working. Check your Gluetun configuration.
129+
130+
> **macOS note:** On macOS, Docker runs inside a Linux VM (OrbStack or Docker Desktop). The kill switch blocks traffic at the container/VM level, not at the macOS network layer. This means containers routed through Gluetun are protected, but apps running directly on macOS are not affected. This is normal and expected.
131+
132+
---
133+
101134
## Step 5: Auto-Configure Services
102135

103136
```bash

0 commit comments

Comments
 (0)