{"id":13465969,"url":"https://github.com/qdm12/gluetun","last_synced_at":"2025-05-14T07:07:58.703Z","repository":{"id":37618280,"uuid":"120530079","full_name":"qdm12/gluetun","owner":"qdm12","description":"VPN client in a thin Docker container for multiple VPN providers, written in Go, and using OpenVPN or Wireguard, DNS over TLS, with a few proxy servers built-in.","archived":false,"fork":false,"pushed_at":"2025-04-15T00:18:21.000Z","size":12967,"stargazers_count":9738,"open_issues_count":316,"forks_count":431,"subscribers_count":38,"default_branch":"master","last_synced_at":"2025-05-07T07:00:02.833Z","etag":null,"topics":["alpine","cyberghost","dns-over-tls","docker","golang","http-proxy","mullvad","nordvpn","openvpn","pia","privado","private-internet-access","purevpn","shadowsocks","surfshark","vpn-client","vyprvpn","windscribe","wireguard"],"latest_commit_sha":null,"homepage":"https://hub.docker.com/r/qmcgaw/gluetun","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/qdm12.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":".github/CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":["qdm12"]}},"created_at":"2018-02-06T22:16:29.000Z","updated_at":"2025-05-07T04:11:43.000Z","dependencies_parsed_at":"2023-09-26T17:27:04.705Z","dependency_job_id":"b909a691-027a-4250-b804-6e9515df341d","html_url":"https://github.com/qdm12/gluetun","commit_stats":{"total_commits":1985,"total_committers":44,"mean_commits":45.11363636363637,"dds":0.08060453400503775,"last_synced_commit":"ddd9f4d0210c35d062896ffa2c7dc6e585deddfb"},"previous_names":["qdm12/private-internet-access-docker"],"tags_count":72,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qdm12%2Fgluetun","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qdm12%2Fgluetun/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qdm12%2Fgluetun/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qdm12%2Fgluetun/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/qdm12","download_url":"https://codeload.github.com/qdm12/gluetun/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254092650,"owners_count":22013290,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["alpine","cyberghost","dns-over-tls","docker","golang","http-proxy","mullvad","nordvpn","openvpn","pia","privado","private-internet-access","purevpn","shadowsocks","surfshark","vpn-client","vyprvpn","windscribe","wireguard"],"created_at":"2024-07-31T15:00:37.454Z","updated_at":"2025-05-14T07:07:58.483Z","avatar_url":"https://github.com/qdm12.png","language":"Go","funding_links":["https://github.com/sponsors/qdm12","https://www.paypal.me/qmcgaw"],"categories":["Go","Install from Source","VPN","shadowsocks","Software","Table of Contents","Libraries"],"sub_categories":["WireGuard Tools","VPN","Go"],"readme":"# Gluetun VPN client\n\nLightweight swiss-army-knife-like VPN client to multiple VPN service providers\n\n![Title image](https://raw.githubusercontent.com/qdm12/gluetun/master/title.svg)\n\n[![Build status](https://github.com/qdm12/gluetun/actions/workflows/ci.yml/badge.svg)](https://github.com/qdm12/gluetun/actions/workflows/ci.yml)\n\n[![Docker pulls qmcgaw/gluetun](https://img.shields.io/docker/pulls/qmcgaw/gluetun.svg)](https://hub.docker.com/r/qmcgaw/gluetun)\n[![Docker pulls qmcgaw/private-internet-access](https://img.shields.io/docker/pulls/qmcgaw/private-internet-access.svg)](https://hub.docker.com/r/qmcgaw/gluetun)\n\n[![Docker stars qmcgaw/gluetun](https://img.shields.io/docker/stars/qmcgaw/gluetun.svg)](https://hub.docker.com/r/qmcgaw/gluetun)\n[![Docker stars qmcgaw/private-internet-access](https://img.shields.io/docker/stars/qmcgaw/private-internet-access.svg)](https://hub.docker.com/r/qmcgaw/gluetun)\n\n![Last release](https://img.shields.io/github/release/qdm12/gluetun?label=Last%20release)\n![Last Docker tag](https://img.shields.io/docker/v/qmcgaw/gluetun?sort=semver\u0026label=Last%20Docker%20tag)\n[![Last release size](https://img.shields.io/docker/image-size/qmcgaw/gluetun?sort=semver\u0026label=Last%20released%20image)](https://hub.docker.com/r/qmcgaw/gluetun/tags?page=1\u0026ordering=last_updated)\n![GitHub last release date](https://img.shields.io/github/release-date/qdm12/gluetun?label=Last%20release%20date)\n![Commits since release](https://img.shields.io/github/commits-since/qdm12/gluetun/latest?sort=semver)\n\n[![Latest size](https://img.shields.io/docker/image-size/qmcgaw/gluetun/latest?label=Latest%20image)](https://hub.docker.com/r/qmcgaw/gluetun/tags)\n\n[![GitHub last commit](https://img.shields.io/github/last-commit/qdm12/gluetun.svg)](https://github.com/qdm12/gluetun/commits/master)\n[![GitHub commit activity](https://img.shields.io/github/commit-activity/y/qdm12/gluetun.svg)](https://github.com/qdm12/gluetun/graphs/contributors)\n[![GitHub closed PRs](https://img.shields.io/github/issues-pr-closed/qdm12/gluetun.svg)](https://github.com/qdm12/gluetun/pulls?q=is%3Apr+is%3Aclosed)\n[![GitHub issues](https://img.shields.io/github/issues/qdm12/gluetun.svg)](https://github.com/qdm12/gluetun/issues)\n[![GitHub closed issues](https://img.shields.io/github/issues-closed/qdm12/gluetun.svg)](https://github.com/qdm12/gluetun/issues?q=is%3Aissue+is%3Aclosed)\n\n[![Lines of code](https://img.shields.io/tokei/lines/github/qdm12/gluetun)](https://github.com/qdm12/gluetun)\n![Code size](https://img.shields.io/github/languages/code-size/qdm12/gluetun)\n![GitHub repo size](https://img.shields.io/github/repo-size/qdm12/gluetun)\n![Go version](https://img.shields.io/github/go-mod/go-version/qdm12/gluetun)\n\n![Visitors count](https://visitor-badge.laobi.icu/badge?page_id=gluetun.readme)\n\n## Quick links\n\n- [Setup](#setup)\n- [Features](#features)\n- Problem?\n  - Check the Wiki [common errors](https://github.com/qdm12/gluetun-wiki/tree/main/errors) and [faq](https://github.com/qdm12/gluetun-wiki/tree/main/faq)\n  - [Start a discussion](https://github.com/qdm12/gluetun/discussions)\n  - [Fix the Unraid template](https://github.com/qdm12/gluetun/discussions/550)\n- Suggestion?\n  - [Create an issue](https://github.com/qdm12/gluetun/issues)\n- Happy?\n  - Sponsor me on [github.com/sponsors/qdm12](https://github.com/sponsors/qdm12)\n  - Donate to [paypal.me/qmcgaw](https://www.paypal.me/qmcgaw)\n  - Drop me [an email](mailto:quentin.mcgaw@gmail.com)\n- **Want to add a VPN provider?** check [the development page](https://github.com/qdm12/gluetun-wiki/blob/main/contributing/development.md) and [add a provider page](https://github.com/qdm12/gluetun-wiki/blob/main/contributing/add-a-provider.md)\n- Video:\n\n  [![Video Gif](https://i.imgur.com/CetWunc.gif)](https://youtu.be/0F6I03LQcI4)\n\n- [Substack Console interview](https://console.substack.com/p/console-72)\n\n## Features\n\n- Based on Alpine 3.20 for a small Docker image of 35.6MB\n- Supports: **AirVPN**, **Cyberghost**, **ExpressVPN**, **FastestVPN**, **Giganews**, **HideMyAss**, **IPVanish**, **IVPN**, **Mullvad**, **NordVPN**, **Perfect Privacy**, **Privado**, **Private Internet Access**, **PrivateVPN**, **ProtonVPN**, **PureVPN**,  **SlickVPN**, **Surfshark**, **TorGuard**, **VPNSecure.me**, **VPNUnlimited**, **Vyprvpn**, **WeVPN**, **Windscribe** servers\n- Supports OpenVPN for all providers listed\n- Supports Wireguard both kernelspace and userspace\n  - For **AirVPN**, **FastestVPN**, **Ivpn**, **Mullvad**, **NordVPN**, **Perfect privacy**, **ProtonVPN**, **Surfshark** and **Windscribe**\n  - For **Cyberghost**, **Private Internet Access**, **PrivateVPN**, **PureVPN**, **Torguard**, **VPN Unlimited**, **VyprVPN** and **WeVPN** using [the custom provider](https://github.com/qdm12/gluetun-wiki/blob/main/setup/providers/custom.md)\n  - For custom Wireguard configurations using [the custom provider](https://github.com/qdm12/gluetun-wiki/blob/main/setup/providers/custom.md)\n  - More in progress, see [#134](https://github.com/qdm12/gluetun/issues/134)\n- DNS over TLS baked in with service provider(s) of your choice\n- DNS fine blocking of malicious/ads/surveillance hostnames and IP addresses, with live update every 24 hours\n- Choose the vpn network protocol, `udp` or `tcp`\n- Built in firewall kill switch to allow traffic only with needed the VPN servers and LAN devices\n- Built in Shadowsocks proxy server (protocol based on SOCKS5 with an encryption layer, tunnels TCP+UDP)\n- Built in HTTP proxy (tunnels HTTP and HTTPS through TCP)\n- [Connect other containers to it](https://github.com/qdm12/gluetun-wiki/blob/main/setup/connect-a-container-to-gluetun.md)\n- [Connect LAN devices to it](https://github.com/qdm12/gluetun-wiki/blob/main/setup/connect-a-lan-device-to-gluetun.md)\n- Compatible with amd64, i686 (32 bit), **ARM** 64 bit, ARM 32 bit v6 and v7, and even ppc64le 🎆\n- Custom VPN server side port forwarding for [Perfect Privacy](https://github.com/qdm12/gluetun-wiki/blob/main/setup/providers/perfect-privacy.md#vpn-server-port-forwarding), [Private Internet Access](https://github.com/qdm12/gluetun-wiki/blob/main/setup/providers/private-internet-access.md#vpn-server-port-forwarding), [PrivateVPN](https://github.com/qdm12/gluetun-wiki/blob/main/setup/providers/privatevpn.md#vpn-server-port-forwarding) and [ProtonVPN](https://github.com/qdm12/gluetun-wiki/blob/main/setup/providers/protonvpn.md#vpn-server-port-forwarding)\n- Possibility of split horizon DNS by selecting multiple DNS over TLS providers\n- Can work as a Kubernetes sidecar container, thanks @rorph\n\n## Setup\n\n🎉 There are now instructions specific to each VPN provider with examples to help you get started as quickly as possible!\n\nGo to the [Wiki](https://github.com/qdm12/gluetun-wiki)!\n\n[🐛 Found a bug in the Wiki?!](https://github.com/qdm12/gluetun-wiki/issues/new/choose)\n\nHere's a docker-compose.yml for the laziest:\n\n```yml\n---\nservices:\n  gluetun:\n    image: qmcgaw/gluetun\n    # container_name: gluetun\n    # line above must be uncommented to allow external containers to connect.\n    # See https://github.com/qdm12/gluetun-wiki/blob/main/setup/connect-a-container-to-gluetun.md#external-container-to-gluetun\n    cap_add:\n      - NET_ADMIN\n    devices:\n      - /dev/net/tun:/dev/net/tun\n    ports:\n      - 8888:8888/tcp # HTTP proxy\n      - 8388:8388/tcp # Shadowsocks\n      - 8388:8388/udp # Shadowsocks\n    volumes:\n      - /yourpath:/gluetun\n    environment:\n      # See https://github.com/qdm12/gluetun-wiki/tree/main/setup#setup\n      - VPN_SERVICE_PROVIDER=ivpn\n      - VPN_TYPE=openvpn\n      # OpenVPN:\n      - OPENVPN_USER=\n      - OPENVPN_PASSWORD=\n      # Wireguard:\n      # - WIREGUARD_PRIVATE_KEY=wOEI9rqqbDwnN8/Bpp22sVz48T71vJ4fYmFWujulwUU=\n      # - WIREGUARD_ADDRESSES=10.64.222.21/32\n      # Timezone for accurate log times\n      - TZ=\n      # Server list updater\n      # See https://github.com/qdm12/gluetun-wiki/blob/main/setup/servers.md#update-the-vpn-servers-list\n      - UPDATER_PERIOD=\n```\n\n🆕 Image also available as `ghcr.io/qdm12/gluetun`\n\n## License\n\n[![MIT](https://img.shields.io/github/license/qdm12/gluetun)](https://github.com/qdm12/gluetun/blob/master/LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fqdm12%2Fgluetun","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fqdm12%2Fgluetun","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fqdm12%2Fgluetun/lists"}