Awesome Open Source
Awesome Open Source

Gluetun VPN client

Lightweight swiss-knife-like VPN client to multiple VPN service providers

Title image

Build status

Docker pulls qmcgaw/gluetun Docker pulls qmcgaw/private-internet-access

Docker stars qmcgaw/gluetun Docker stars qmcgaw/private-internet-access

Last release Last Docker tag Last release size GitHub last release date Commits since release

Latest size

GitHub last commit GitHub commit activity GitHub closed PRs GitHub issues GitHub closed issues

Lines of code Code size GitHub repo size Go version

Visitors count

Quick links


  • Based on Alpine 3.16 for a small Docker image of 30MB
  • Supports: AirVPN, Cyberghost, ExpressVPN, FastestVPN, HideMyAss, IPVanish, IVPN, Mullvad, NordVPN, Perfect Privacy, Privado, Private Internet Access, PrivateVPN, ProtonVPN, PureVPN, SlickVPN, Surfshark, TorGuard,, VPNUnlimited, Vyprvpn, WeVPN, Windscribe servers
  • Supports OpenVPN for all providers listed
  • Supports Wireguard both kernelspace and userspace
    • For Mullvad, Ivpn, Surfshark and Windscribe
    • For ProtonVPN, PureVPN, Torguard, VPN Unlimited and WeVPN using the custom provider
    • For custom Wireguard configurations using the custom provider
    • More in progress, see #134
  • DNS over TLS baked in with service provider(s) of your choice
  • DNS fine blocking of malicious/ads/surveillance hostnames and IP addresses, with live update every 24 hours
  • Choose the vpn network protocol, udp or tcp
  • Built in firewall kill switch to allow traffic only with needed the VPN servers and LAN devices
  • Built in Shadowsocks proxy (protocol based on SOCKS5 with an encryption layer, tunnels TCP+UDP)
  • Built in HTTP proxy (tunnels HTTP and HTTPS through TCP)
  • Connect other containers to it
  • Connect LAN devices to it
  • Compatible with amd64, i686 (32 bit), ARM 64 bit, ARM 32 bit v6 and v7, and even ppc64le 🎆
  • Custom VPN server side port forwarding for Private Internet Access
  • Possibility of split horizon DNS by selecting multiple DNS over TLS providers
  • Unbound subprogram drops root privileges once launched
  • Can work as a Kubernetes sidecar container, thanks @rorph


🎉 There are now instructions specific to each VPN provider with examples to help you get started as quickly as possible!

Go to the Wiki!

🐛 Found a bug in the Wiki?!

Here's a docker-compose.yml for the laziest:

version: "3"
    image: qmcgaw/gluetun
    # container_name: gluetun
    # line above must be uncommented to allow external containers to connect. See
      - NET_ADMIN
      - /dev/net/tun:/dev/net/tun
      - 8888:8888/tcp # HTTP proxy
      - 8388:8388/tcp # Shadowsocks
      - 8388:8388/udp # Shadowsocks
      - /yourpath:/gluetun
      # See
      - VPN_TYPE=openvpn
      # OpenVPN:
      # Wireguard:
      # - WIREGUARD_PRIVATE_KEY=wOEI9rqqbDwnN8/Bpp22sVz48T71vJ4fYmFWujulwUU=
      # Timezone for accurate log times
      - TZ=

🆕 Image also available as



Alternatives To Gluetun
Select To Compare

Alternative Project Comparisons
Related Awesome Lists
Top Programming Languages

Get A Weekly Email With Trending Projects For These Topics
No Spam. Unsubscribe easily at any time.
Golang (171,926
Docker (99,639
Proxy (24,703
Dns (10,291
Tls (5,004
Vpn (4,002
Tunnel (2,804
Openvpn (1,832
Shadowsocks (1,522
Http Proxy (1,011
Wireguard (802
Vpn Client (230
Dns Over Tls (95
Nordvpn (63
Mullvad (22
Pia (18
Privateinternetaccess (17
Windscribe (13
Surfshark (6
Vyprvpn (4
Purevpn (3
Cyberghost (3