• Valmond@lemmy.dbzer0.com
      link
      fedilink
      English
      arrow-up
      2
      ·
      1 day ago

      Interesting!

      So it pings some entity and they send back your external port? I speed read the code (but I’m on mobile) and that’s what it looks like. Any information greatly appreciated.

      • Jakeroxs@sh.itjust.works
        link
        fedilink
        English
        arrow-up
        2
        ·
        1 day ago

        Gluetun itself already knows the forwarded port via NAT-PMP, this program just gets it from gluetun and assigns it in qbt via the qbt api and if it returns a 200 response it considers it confirmed, here’s an example log:

        waiting for qBittorrent WebUI…

        qBittorrent WebUI is ready (authenticated).

        port file did not contain an integer: /tmp/gluetun/forwarded_port

        port file did not contain an integer: /tmp/gluetun/forwarded_port

        gluetun provided forwarded port: 36884

        syncing port 36884 to qBittorrent…

        successfully updated qBittorrent to port 36884 (confirmed)

        port file did not contain an integer: /tmp/gluetun/forwarded_port

        port file did not contain an integer: /tmp/gluetun/forwarded_port

        gluetun provided forwarded port: 39293

        syncing port 39293 to qBittorrent…

        successfully updated qBittorrent to port 39293 (confirmed)

        • Valmond@lemmy.dbzer0.com
          link
          fedilink
          English
          arrow-up
          1
          ·
          20 hours ago

          Where is the Gluetun server running? I mean if you run it yourself you have to like forward all ports to it?

          Thanks for the writeup!

          • Jakeroxs@sh.itjust.works
            link
            fedilink
            English
            arrow-up
            1
            ·
            edit-2
            15 hours ago

            So gluetun is for docker networks and lets you isolate traffic to/from other docker containers into a VPN, you run it and qbt inside docker containers with gluetun configured to your vpn, then qbt configured to route all its traffic through it.

            Edit: I didn’t have to port forward at all on my network for this to access it locally (I run it on a separate computer), because all the “outside” traffic in qbt is going through the vpn that has a forwarded port seeders/leachers can connect (which is dynamically updated as it changes with the aforementioned qbt port manager)

            For example (truncated docker compose just the part related to above): services: qbittorrent-vpn: image: lscr.io/linuxserver/qbittorrent:latest container_name: qbittorrent-vpn depends_on: gluetun: condition: service_started restart: true restart: unless-stopped network_mode: “service:gluetun”

            Then gluetun: services: gluetun: image: qmcgaw/gluetun container_name: gluetun restart: unless-stopped networks: - default cap_add: - NET_ADMIN devices: - /dev/net/tun - 8888:8888/tcp # HTTP proxy volumes: - /appdata/gluetun:/gluetun - /appdata/gluetun/tmp:/tmp/gluetun environment: TZ: $TZ VPN_SERVICE_PROVIDER: $GLUETUN_VPN_SERVICE_PROVIDER VPN_TYPE: $GLUETUN_VPN_TYPE # wireguard / openvpn WIREGUARD_PRIVATE_KEY: $GLUETUN_WIREGUARD_PRIVATE_KEY WIREGUARD_ADDRESSES: $GLUETUN_WIREGUARD_ADDRESSES VPN_PORT_FORWARDING: on VPN_PORT_FORWARDING_PROVIDER: protonvpn # or your provider VPN_PORT_FORWARDING_STATUS_FILE: /tmp/gluetun/forwarded_port # OPENVPN_USER: $GLUETUN_OPENVPN_USERNAME # OPENVPN_PASSWORD: $GLUETUN_OPENVPN_PASSWORD healthcheck: test: [“CMD”, “/gluetun-entrypoint”, “healthcheck”] interval: 5s timeout: 5s retries: 1 start_period: 10s

            gluetun-qbittorrent-port-manager: image: jopiermeier/gluetun-qbittorrent-port-manager:latest network_mode: “service:gluetun” container_name: gluetun-port-manager depends_on: gluetun: condition: service_started restart: true qbittorrent-vpn: condition: service_started restart: true environment: - QBITTORRENT_USER= - QBITTORRENT_PASS= - QBITTORRENT_PORT=$QBITTORRENTVPN_PORT volumes: - /appdata/gluetun/tmp:/tmp/gluetun