- Go 96.6%
- Nix 2%
- Just 1.4%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| .github/workflows | ||
| cmd | ||
| docs | ||
| pkg | ||
| test_data | ||
| tools/gendocs | ||
| .envrc | ||
| .gitignore | ||
| .goreleaser.yaml | ||
| AGENTS.md | ||
| CHANGELOG.md | ||
| flake.lock | ||
| flake.nix | ||
| go.mod | ||
| go.sum | ||
| justfile | ||
| LICENSE | ||
| main.go | ||
| README.md | ||
| renovate.json | ||
| vpngate.gif | ||
vpngate
This is a client for vpngate.net.
This client fetches the list of available relay servers provided by vpngate.net, and allows you to filter and connect to a server of your liking.
You can check out your current IP address and region at https://ipinfo.io/json, or run the following:
curl ipinfo.io
Requirements
- OpenVPN
- macOS, Linux, or Windows
Install
Check out vpngate-mac for a native macOS Client
You can install vpngate in a few different ways, and it will differ slightly depending on your OS.
Homebrew (macOS and linux)
vpngate can be installed with homebrew (if on macOS, ensure that xcode is installed before installing homebrew by running xcode-select --install).
brew install openvpn davegallant/public/vpngate
Windows
vpngate can be installed with winget, which also installs OpenVPN as a dependency:
winget install davegallant.vpngate
Alternatively, install OpenVPN from the official website, then manually download and extract the Windows release from the relevant Github release.
Once the release is extracted, open Command Prompt as Administrator, and run vpngate.exe from the location where it was extracted.
Build from source
Ensure that go is installed.
CGO_ENABLED=0 go get github.com/davegallant/vpngate
Ensure that the go bin path is discoverable:
echo 'export PATH=$PATH:$HOME/go/bin' >> ~/.profile
source ~/.profile
Usage
For full usage instructions, see the cli docs.
If on macOS, you may need to add openvpn to your PATH (if you installed it with brew):
export PATH=$(brew --prefix openvpn)/sbin:$PATH
Examples
Run in the background, then check on it, tail its log, or disconnect later.
status, logs, and disconnect need sudo too, since the daemon's state
is only readable by the user that ran connect -d (root):
sudo vpngate connect -d --country Japan
sudo vpngate status
sudo vpngate logs -f
sudo vpngate disconnect
List Japanese servers sorted by lowest ping:
vpngate list --country Japan --sort ping
List high-scoring US servers as JSON:
vpngate list --country us --min-score 1000000 --output json
Connect to a random server with quality filters:
sudo vpngate connect --random --country Japan --max-ping 100 --min-score 500000
Refresh the cached server list before listing:
vpngate list --refresh
Bypass the cache entirely:
vpngate list --no-cache
Inspect or clear the cache:
vpngate cache path
vpngate cache clear
Notes
- I do not maintain any of the servers on vpngate.net (connect to these servers at your own discretion)
- Many of the listed servers claim to have a logging policy of 2 weeks
