Unofficial community project · MIT licensed

VPN Gate Client for Linux

A Linux GUI for free VPN Gate servers — one-click connection, verified IP, and zero leftover profiles.

1-clickconnect / disconnect
0pip dependencies
~18 KBpackaged .deb
TCP:443firewall-friendly
Which client should you use?
The name “VPN Gate Client” officially belongs to a Windows-only freeware by the VPN Gate Academic Experiment Project — Windows users should get it from the official download page. macOS, iPhone/iPad and Android are covered by the official step-by-step how-tos. No official client exists for Linux — this app fills exactly that gap. It is independent and unaffiliated.

Features

Everything handled, nothing left behind

Server browser

Live list with country, ping, speed, score, sessions and uptime — sortable, filterable, searchable, cached for instant startup.

One-click toggle

A single CONNECT / DISCONNECT button with busy state. Never a half-connected UI, never a stale label.

Legacy-cipher patching

VPN Gate configs are auto-patched (AES-128-CBC, SHA1) so they import cleanly on OpenVPN 2.6 / OpenSSL 3.

Verified connection

Public-IP lookup retries after connect while routes settle; tunnel IP shown meanwhile instead of a bare “?”.

Full cleanup

Disconnect deletes the NetworkManager profile, staged certificates and cached files — then verifies nothing remains.

Crash-safety sweep

Every startup removes inactive profiles orphaned by a previous crash, with an on-screen report.

Headless mode

--list, --status, --dry-run-host and --disconnect-all for scripting and diagnostics.

Native packaging

Dependency-declared .deb with app-grid entry, hicolor icon and manpage. Python + PyGObject only.

Install

Up and running in a minute

Option A — Download from Releases (recommended)

Get the .deb from the Releases page. No build tools needed.

sudo dpkg -i vpngate-client_1.0-1_all.deb
Go to Releases

Option B — Build from source

./packaging/build-deb.sh
sudo dpkg -i packaging/vpngate-client_1.0-1_all.deb

Option C — Run from source (development)

sudo apt install python3-gi gir1.2-gtk-4.0 gir1.2-adw-1 network-manager-openvpn openvpn
python3 vpngate_gtk.py

Usage

Four steps to a tunnel

  1. Open the app from the app grid (“VPN Gate Client”) or run vpngate-client. The list loads instantly from cache, then refreshes silently.
  2. Pick a server — filter by country, sort by ping / score / speed, or type to search.
  3. Hit CONNECT. Status and public IP appear bottom-right once verified.
  4. Hit DISCONNECT when done — profile and files are removed, route returns to normal.

FAQ

Troubleshooting

First refresh takes ~1 minute
The VPN Gate API itself is slow. The UI stays usable on cache meanwhile — only use a forced refresh when you need fresh data.
“IP: ?” right after connecting
Routes and DNS need seconds to settle. The app retries automatically and shows the tunnel IP as proof meanwhile.
“Connect failed — try another server”
Servers are volunteer-run and come and go. Pick one with low ping and recent uptime.
IP doesn't change after connect
Another VPN (e.g. ProtonVPN) may be holding the default route — disconnect it first.
App-grid entry missing after install
Log out and back in once so GNOME reloads the desktop database.

Security notes

Know what you're trusting

  • Volunteer servers. Logging policy is typically 2 weeks — choose servers accordingly.
  • No killswitch in v1. Traffic may leak to the direct route if the tunnel drops. Not for high-risk activity.
  • 0600 hygiene. Credentials and auth files are owner-only; the VPN password lives in the NetworkManager profile, never in this repo.

License

MIT, with one trademark note

License

MIT

Free to use, modify and redistribute — code, styling and icon included. See the LICENSE file in the repo.

Trademarks

Not affiliated

Styling is merely BMW M-inspired. BMW M marks belong to BMW AG; VPN Gate belongs to its academic project. No affiliation or endorsement implied.

Source

Open on GitHub

Issues and pull requests welcome. Four Python modules, standard library + PyGObject only.

Open repo