Gluetun — Runbook
Routine Tasks
Check VPN status and public IP
curl http://192.168.1.110:8000/v1/vpn/status
curl http://192.168.1.110:8000/v1/publicip/ip
Test proxy routing
# Should return a NordVPN Netherlands IP, not your home IP
curl --proxy http://192.168.1.110:8888 https://ifconfig.co
Rotate NordVPN WireGuard key
- Get a new key via NordVPN API with a fresh access token
- Store via vault-write workflow: path
gluetun/nordvpn, patchtrue, data{"wireguard_private_key": "<new-key>"} - Trigger Deploy Gluetun workflow to redeploy
Killswitch & VPN leak protection
Gluetun itself blocks all traffic from its container if the VPN drops.
Both qBittorrent instances on LXC 110 (dlbox) use network_mode: "service:gluetun", which forces all traffic through the VPN tunnel at the Docker network level. No iptables killswitch needed — if the VPN drops, the containers have no internet.
Additionally, FIREWALL_OUTBOUND_SUBNETS=192.168.1.0/24 allows LAN access (WebUI, Samba) from inside the VPN namespace.
Alerting
Gatus monitors GET /v1/vpn/status every minute and alerts via n8n if the VPN status is not running.
Logs
| Log | Contents | Location | Loki query | Format |
|---|---|---|---|---|
| Gluetun | VPN connection status, WireGuard handshakes, DNS, errors | Docker (LXC 110) stdout | {job="gluetun", container="gluetun"} |
Plain text |
Notes:
- SSH fallback: ssh [email protected] "docker logs gluetun"
Troubleshooting
Services routing through Gluetun can't reach the internet
- Check VPN status:
curl http://192.168.1.110:8000/v1/vpn/status - Check logs for WireGuard connection errors or authentication failures
- Verify the WireGuard private key in Vault is still valid (
secret/gluetun/nordvpn) - If the key has been rotated in NordVPN, update via vault-write workflow and redeploy
Seedbox (qBittorrent) not connecting to peers
Gluetun (LXC 110) must be running. Check VPN status first, then restart qBittorrent if needed.