• 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
        ·
        18 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
          14 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