All Projects → tprasadtp → protonvpn-docker

tprasadtp / protonvpn-docker

Licence: GPL-3.0 license
ProtonVPN docker image. Supports ARMv7(32-bit), ARMv8 (64-bit ) and x86 (64-Bit).

Programming Languages

shell
77523 projects
Makefile
30231 projects
python
139335 projects - #7 most used programming language
Dockerfile
14818 projects
Smarty
1635 projects
javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to protonvpn-docker

linux-gui-legacy
(Discontinued in favor of official client) GTK3 GUI client with systray, for ProtonVPN. Works on top of linux-cli.
Stars: ✭ 181 (+166.18%)
Mutual labels:  vpn, protonvpn
linux-cli-community
Linux command-line client for ProtonVPN. Written in Python.
Stars: ✭ 1,166 (+1614.71%)
Mutual labels:  vpn, protonvpn
Skeleton
Skeleton is a Social Engineering tool attack switcher
Stars: ✭ 44 (-35.29%)
Mutual labels:  vpn
tunneldigger
L2TPv3 VPN tunneling solution
Stars: ✭ 68 (+0%)
Mutual labels:  vpn
vpngate-automator
Python script to pull down valid OpenVPN configs from vpngate.net, and launch
Stars: ✭ 15 (-77.94%)
Mutual labels:  vpn
EtornamVpnFlutter
A UI implementation of a VPN app in Flutter
Stars: ✭ 62 (-8.82%)
Mutual labels:  vpn
openbsd-server-setup
A collection of scripts to ease bootstrapping of a new OpenBSD server. Includes nginx with SSL, mail with DKIM, WireGuard and IKEv2 VPN setup.
Stars: ✭ 33 (-51.47%)
Mutual labels:  vpn
auto-change-tor-ip
Automatically change tor ip address over time when accessing the internet. Make it private and safe for you
Stars: ✭ 29 (-57.35%)
Mutual labels:  vpn
wireguard-manager-and-api
A Wireguard VPN Server Manager and API to add and remove clients
Stars: ✭ 124 (+82.35%)
Mutual labels:  vpn
tulingx
TULINGX(图灵)VPN下载页 翻墙 代理 科学上网 外网 加速器 梯子 路由
Stars: ✭ 59 (-13.24%)
Mutual labels:  vpn
husarnet
Husarnet is a Peer-to-Peer VPN to connect your laptops, servers and microcontrollers over the Internet with zero configuration.
Stars: ✭ 128 (+88.24%)
Mutual labels:  vpn
ip2proxy-nodejs
IP2Proxy Node.js module allows users to query an IP address to determine if it was being used as open proxy, web proxy, VPN anonymizer and TOR exits.
Stars: ✭ 35 (-48.53%)
Mutual labels:  vpn
Geolocate-IP-Browser-Extension
A browser extension, which shows you the origin of your IP address.
Stars: ✭ 21 (-69.12%)
Mutual labels:  vpn
openvpn
OpenVPN is an open source VPN daemon
Stars: ✭ 7,291 (+10622.06%)
Mutual labels:  vpn
greentunnel4jvm
Green Tunnel Alternative for JVM Languages
Stars: ✭ 15 (-77.94%)
Mutual labels:  vpn
dockerMullvadVPN
Mullvad VPN container tutorial for docker
Stars: ✭ 38 (-44.12%)
Mutual labels:  vpn
autovpn2
OpenVPN VPN Gate Client for Linux, connects you to a random Free VPN in a country of your choice by country code.
Stars: ✭ 30 (-55.88%)
Mutual labels:  vpn
softether-docker
container for Softether Server based on Alpine
Stars: ✭ 15 (-77.94%)
Mutual labels:  vpn
Raspberry-Pi-VPN-Gateway
Raspberry Pi VPN gateway installer for Private Internet Access
Stars: ✭ 44 (-35.29%)
Mutual labels:  vpn
tunfish-vxlan
A proof-of-concept for creating convenient VPN environments on top of secure WireGuard tunnels, with VXLAN.
Stars: ✭ 22 (-67.65%)
Mutual labels:  vpn

protonvpn-docker

protonvpn docker

build release releases license

Docker Images

Images are published on GitHub Container Registry.

Its recommended that you use 64 bit hosts. ARM32 hosts have known issues see here.

Environment Variables

Name Required Description
PROTONVPN_TIER Yes Proton VPN Tier (0=Free, 1=Basic, 2=Pro, 3=Visionary)
PROTONVPN_USERNAME Yes OpenVPN Username. This is NOT your Proton Account Username.
PROTONVPN_PASSWORD Yes OpenVPN Password. This is NOT your Proton Account Password.
PROTONVPN_SERVER Yes ProtonVPN server to connect to. See PROTONVPN_SERVER for more info.
PROTONVPN_PROTOCOL No Protocol to use. By default udp is used.
PROTONVPN_EXCLUDE_CIDRS No Comma separated list of CIDRs to exclude from VPN. Uses split tunnel. Default is set to 169.254.169.254/32,169.254.170.2/32
PROTONVPN_DNS_LEAK_PROTECT No (Integer) Setting this to 0 will disable DNS leak protection. If you wish to specify custom DNS server via --dns option or running on k8s, you MUST set this to 0.
PROTONVPN_CHECK_INTERVAL No (Integer) Interval between internal healthcheck in seconds. Defaults to 90 if not specified or invalid.
PROTONVPN_IPCHECK_ENDPOINT No Healthcheck endpoint to determine if you are connected via VPN. Defaults to https://icanhazip.com/. Must return Your public IP
PROTONVPN_FAIL_THRESHOLD No (Integer) Number of allowed consecutive internal healthcheck failures before an attempt to reconnect is made. Defaults to 3 if invalid or not specified.

PROTONVPN_SERVER

  • If set to RANDOM, a random server compatible with your plan will be chosen.
  • If set to P2P will choose fastest P2P server. Please note that this requires setting correct plan in PROTONVPN_TIER.
  • If set to ProtonVPN supported country code, will choose the fastest server from this country. (case insensitive). For example to connect to fastest server from Netherlands, set PROTONVPN_SERVER to NL.
  • If none of the above are true, container will attempt to connect to this server and fail if it is not possible. Please note that Secure Core servers are only available with pro plan and above.

Run Container

# Pull Image
docker pull ghcr.io/tprasadtp/protonvpn:latest
# Run in background
docker run \
--rm \
--detach \
--name=protonvpn \
--device=/dev/net/tun \
--cap-add=NET_ADMIN \
--env PROTONVPN_USERNAME="xxxx" \
--env PROTONVPN_PASSWORD="xxxx" \
--env PROTONVPN_TIER=0 \
--env PROTONVPN_SERVER=NL \
ghcr.io/tprasadtp/protonvpn:latest

Using VPN in other containers

You can use,

docker run \
--name container-with-vpn \
--net=container:protonvpn \
my-awesome-image-name:tag

Docker-Compose

version: '3.4'
services:
  protonvpn:
    container_name: protonvpn
    environment:
      # Credentials
      PROTONVPN_USERNAME: ${PROTONVPN_USERNAME}
      PROTONVPN_PASSWORD: ${PROTONVPN_PASSWORD}
      # Override these where applicable
      PROTONVPN_SERVER: ${PROTONVPN_SERVER:-NL}
      PROTONVPN_TIER: ${PROTONVPN_TIER:-0}
    # Always use semver tags, avoid using tag latest!
    image: ghcr.io/tprasadtp/protonvpn:latest
    restart: unless-stopped
    networks:
      - internet
      - proxy
    cap_add:
      - NET_ADMIN
    devices:
      - /dev/net/tun:/dev/net/tun
    # Expose pyload container's port here!
    expose:
      - 8000
  # Your app using the VPN
  # Here we use pyload as an example
  pyload:
    depends_on:
      - protonvpn
    container_name: pyload
    environment:
      TZ: "Europe/Berlin"
      PGID: "1000"
      PUID: "1000"
    image: linuxserver/pyload:latest
    restart: unless-stopped
    userns_mode: host
    # Do not apply any networking configs
    # on this container!
    # All networking labels and settings should be defined
    # on the vpn container.
    network_mode: service:protonvpn
    volumes:
      - config:/config
      - ./downloads/:/downloads/:rw
volumes:
  config:
networks:
  internet:
  proxy:
    internal: true
  • It is essential to apply labels and expose port on protonvpn container instead of your application. This is because your application container shares network namespace of protonvpn container.
  • If using Traefik, apply labels to protonvpn container, and expose your application ports.
  • You DO NOT need to run the container as privileged. By passing the right tun device and adding NET_ADMIN capabilities should be sufficient.

Changelog

This project follows Semantic Versioning 2.0.0. Changelogs can be found at here.

Troubleshooting

See Troubleshooting.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].