Navigate:
All Reposgluetun
~$GLUETU0.3%

Gluetun: VPN client for Docker containers

Lightweight Go VPN client for routing containerized traffic.

LIVE RANKINGS • 06:23 AM • STEADY
TOP 50TOP 50TOP 50TOP 50TOP 50TOP 50TOP 50TOP 50TOP 50TOP 50TOP 50TOP 50
OVERALL
#42
17
30 DAY RANKING TREND
ovr#42
STARS
12.5K
FORKS
520
DOWNLOADS
7D STARS
+43
7D FORKS
-2
See Repo:
Share:

Learn more about gluetun

version: "3" services: gluetun: image: qmcgaw/gluetun container_name: gluetun cap_add: - NET_ADMIN devices: - /dev/net/tun:/dev/net/tun ports: - 8888:8888/tcp # HTTP proxy - 9091:9091/tcp # Transmission Web UI - 51413:51413 # Transmission torrent port environment: - VPN_SERVICE_PROVIDER=mullvad - VPN_TYPE=wireguard - WIREGUARD_PRIVATE_KEY=${MULLVAD_PRIVATE_KEY} - WIREGUARD_ADDRESSES=10.64.0.1/32 - SERVER_CITIES=New York restart: unless-stopped transmission: image: linuxserver/transmission container_name: transmission network_mode: "service:gluetun" environment: - PUID=1000 - PGID=1000 - TZ=America/New_York volumes: - ./config:/config - ./downloads:/downloads depends_on: - gluetun restart: unless-stopped

gluetun

1

Multi-provider support

Supports 25+ VPN providers including NordVPN, Mullvad, Private Internet Access, Surfshark, and others. Each provider can be configured with either OpenVPN or Wireguard depending on provider support.

2

Minimal container footprint

Built on Alpine Linux 3.22 with a Docker image size of approximately 41MB, reducing resource consumption and deployment overhead compared to larger VPN client implementations.

3

Built-in proxy services

Includes HTTP proxy and SOCKS proxy servers within the container, allowing other services to route traffic through the VPN without requiring separate proxy containers or configuration.


import requests

# Query gluetun's control server for VPN status
response = requests.get('http://localhost:8000/v1/openvpn/status')
status = response.json()

if status['status'] == 'running':
    print(f"Connected to VPN: {status['country']}")
else:
    print("VPN not connected")

vv3.40.0

Replaces Unbound DNS with qdm12/dns v2.0.0-rc8 for faster startup; default MTU drops from 1400 to 1320 for Wireguard and OpenVPN mssfix.

  • Set WIREGUARD_MTU=1400 explicitly if you require the old default; new default is 1320 to address MTU issues.
  • Use PUBLICIP_ENABLED (on/off) instead of PUBLICIP_PERIOD=0; old syntax still works but logs warnings.
vv3.39.1

Control server now requires authentication on vulnerable routes; firewall rule deletion and several provider fixes included.

  • Update control server clients to authenticate on previously open routes to avoid access issues.
  • ProtonVPN users cannot combine FREE_ONLY and PORT_FORWARD_ONLY flags; IVPN city/region parsing now handles commas correctly.
vv3.39.0

OpenVPN defaults to 2.6, Alpine 3.20, and iptables-nft; FIREWALL_ENABLED renamed to prevent misuse, old name now ignored.

  • Split VPN_ENDPOINT_IP and VPN_ENDPOINT_PORT into protocol-specific OPENVPN_* and WIREGUARD_* variables for clearer configuration.
  • Enable Wireguard for FastestVPN and ProtonVPN; Perfect Privacy now supports port forwarding with VPN_PORT_FORWARDING=on.


[ EXPLORE MORE ]

Related Repositories

Discover similar tools and frameworks used by developers