Sign inSign up

edgd1er/nordlynx-transmission

By edgd1er

Updated 8 days ago

Use nordvpn client or wireguard + proxies (SOCKS5, http). transmission v3, v4 or dev (v4.1.x)

Image
2

10K+

edgd1er/nordlynx-transmission repository overview

This image is a variation of nordlynx-proxy and has two ways to run.

  • the first one through nordvpn tooling using nordlynx. Nordvpn version of wireguard is nordlynx. Login and password are required.
  • The second one through plain wireguard. Wireguard's private key will be needed. That key is exported when running in Nordlynx mode in /etc/wireguard/wg0.conf. No fancy feature like killswitch, cybersec ...

you can then expose ports

  • 1080 from the container to access the VPN connection via the SOCKS5 proxy.
  • 8888 from the container to access the VPN connection via http proxy.
  • 9091 from the container to access transmission web UI.

To sum up, this container:

  • Opens the best connection to NordVPN using NordVpn API results according to your criteria.
  • Starts a SOCKS5 proxy that routes eth0 to nordlynx.wg0 with dante-server.
  • nordvpn dns servers perform resolution, by default.
  • uses supervisor to handle easily services.

The main advantages are:

  • you get the best recommendation for each selection.
  • can select openvpn or nordlynx protocol
  • use of nordVpn app features (Killswitch, cybersec, ....)

please note, that to avoid dns problem when the dns service is on the same server, /etc/resolv.conf is set to google DNS (1.1.1.1). That DNS is used only during startup (check latest nordvpn version)

Limitations

AS of 22/03/29, not all nordvpn client's features are implemented in plain wireguard:

  • killerswitch
  • clever usage of iptables
  • cybersec

Usage

The container may use environment variable to select a server, otherwise the best recommended server is selected: see environment variables to get all available options or nordVpn support.

adding

sysclts:
 - net.ipv6.conf.all.disable_ipv6=1 # disable ipv6

might be needed, if nordvpn cannot change the settings itself.

  • TECHNOLOGY=[NordLynx]/[OpenVPN], default: NordLynx
  • CONNECT = [country]/[server]/[country_code]/[city] or [country] [city], if none provide you will connect to the recommended server.
  • COUNTRY define the exit country. Albania, Argentina, Australia, Austria, Belgium, Bosnia_And_Herzegovina, Brazil, Bulgaria, Canada, Chile, Costa_Rica, Croatia, Cyprus, Czech_Republic, Denmark, Estonia, Finland, France, Georgia, Germany, Greece, Hong_Kong, Hungary, Iceland, India, Indonesia, Ireland, Israel, Italy, Japan, Latvia, Lithuania, Luxembourg, Malaysia, Mexico, Moldova, Netherlands, New_Zealand, North_Macedonia, Norway, Poland, Portugal, Romania, Serbia, Singapore, Slovakia, Slovenia, South_Africa, South_Korea, Spain, Sweden, Switzerland, Taiwan, Thailand, Turkey, Ukraine, United_Kingdom, United_States, Vietnam curl -LSs https://api.nordvpn.com/v1/servers/countries | jq '[.[].name ] | @csv' | tr -d '\\"' | tr ' ' '_'
  • GROUP: Double VPN, Onion Over VPN, Ultra fast TV, Anti DDoS, Dedicated IP, Standard VPN servers, Netflix USA, P2P, Obfuscated Servers, Europe, The Americas, Asia Pacific, Africa, the Middle East and India, Anycast DNS, Geo DNS, Grafana, Kapacitor, Socks5 Proxy, FastNetMon, although many categories are possible, p2p seems more adapted.
  • TECHNOLOGY: ikev2, openvpn_udp, openvpn_tcp, socks, proxy, pptp, l2tp, openvpn_xor_udp, openvpn_xor_tcp, proxy_cybersec, proxy_ssl, proxy_ssl_cybersec, ikev2_v6, openvpn_udp_v6, openvpn_tcp_v6, wireguard_udp, openvpn_udp_tls_crypt, openvpn_tcp_tls_crypt, openvpn_dedicated_udp, openvpn_dedicated_tcp, skylark, mesh_relay. curl -LSs https://api.nordvpn.com/v1/technologies | jq '[.[].identifier] | @csv' | tr -d '\\"'
  • CITY: Tirana, Buenos Aires, Adelaide, Brisbane, Melbourne, Perth, Sydney, Vienna, Brussels, Sarajevo, Sao Paulo, Sofia, Montreal, Toronto, Vancouver, Santiago, San Jose, Zagreb, Nicosia, Prague, Copenhagen, Tallinn, Helsinki, Marseille, Paris, Tbilisi, Berlin, Frankfurt, Athens, Hong Kong, Budapest, Reykjavik, Mumbai, Jakarta, Dublin, Tel Aviv, Milan, Tokyo, Riga, Vilnius, Steinsel, Kuala Lumpur, Mexico, Chisinau, Amsterdam, Auckland, Skopje, Oslo, Warsaw, Lisbon, Bucharest, Belgrade, Singapore, Bratislava, Ljubljana, Johannesburg, Seoul, Madrid, Stockholm, Zurich, Taipei, Bangkok, Istanbul, Kyiv, Dubai, Edinburgh, Glasgow, London, Manchester, Atlanta, Buffalo, Charlotte, Chicago, Dallas, Denver, Kansas City, Los Angeles, Manassas, Miami, New York, Phoenix, Saint Louis, Salt Lake City, San Francisco, Seattle, Hanoi. curl -LSs https://api.nordvpn.com/v1/servers/countries | jq '[.[].cities[].name ] | @csv' | tr -d '\\"'
  • NORDVPN_USER=email (As of 21/07/25, Service credentials are not allowed.)
  • NORDVPN_PASS=pass
  • CYBER_SEC, default off
  • KILLERSWITCH, default on
  • DNS: change dns
  • PORTS: add ports to allow
  • NETWORK: add subnet to allow
  • DOCKER_NET: optional, docker CIDR extracted from container ip if not set.
Container variables
  • DEBUG: (true/false) verbose mode for initial script launch and dante server.
docker run -it --rm --cap-add NET_ADMIN -p 1081:1080 --device /dev/net/tun -e NORDVPN_USER=<email> -e NORDVPN_PASS='<pass>' -e COUNTRY=Poland
 -e edgd1er/nordlynx-proxy
version: '3.8'
services:
  proxy:
    image: edgd1er/nordvpn-proxy:latest
    restart: unless-stopped
    ports:
      - "1080:1080"
    devices:
      - /dev/net/tun
    sysctls:
        - net.ipv4.conf.all.src_valid_mark=1 # remove need to have privilegied
        - net.ipv4.ip_forward=1
        - net.ipv4.conf.all.rp_filter=2 # Loose Reverse Path: https://access.redhat.com/solutions/53031
        - net.ipv6.conf.all.disable_ipv6=1 # disable ipv6
        - net.ipv6.conf.all.forwarding=1
      #      - net.ipv4.conf.all.rp_filter=2 # Loose Reverse Path: https://access.redhat.com/solutions/53031
    cap_add:
      - NET_ADMIN               # Required
#      - SYS_MODULE              # Required for TECHNOLOGY=NordLynx
    environment:
      - TZ=America/Chicago
      - CONNECT=uk
      - TECHNOLOGY=NordLynx
      - DEBUG=
      - NORDVPN_USER=<email> #Not required if using secrets
      - NORDVPN_PASS=<pass> #Not required if using secrets
    secrets:
      - NORDVPN_LOGIN
      - NORDVPN_PASS

secrets:
    NORDVPN_LOGIN:
        file: ./nordvpn_login
    NORDVPN_PASS:
        file: ./nordvpn_pwd

https://github.com/edgd1er/nordlynx-transmission

Tag summary

Content type

Image

Digest

sha256:b61110d82

Size

157.9 MB

Last updated

8 days ago

docker pull edgd1er/nordlynx-transmission