{"id":48216231,"url":"https://github.com/dhruvinsh/ws-ephemeral","last_synced_at":"2026-04-04T18:59:45.586Z","repository":{"id":59275065,"uuid":"533785733","full_name":"dhruvinsh/ws-ephemeral","owner":"dhruvinsh","description":"setup ephemeral port on the windscribe VPN service","archived":false,"fork":false,"pushed_at":"2025-04-26T02:38:36.000Z","size":237,"stargazers_count":31,"open_issues_count":5,"forks_count":9,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-04-26T03:39:32.641Z","etag":null,"topics":["qbittorrent","vpn","windscribe","windscribe-vpn"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dhruvinsh.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2022-09-07T13:47:27.000Z","updated_at":"2025-04-26T02:38:40.000Z","dependencies_parsed_at":"2024-01-05T14:28:49.633Z","dependency_job_id":"c6589dde-aea3-46ef-b67f-744138863fbb","html_url":"https://github.com/dhruvinsh/ws-ephemeral","commit_stats":null,"previous_names":[],"tags_count":12,"template":false,"template_full_name":null,"purl":"pkg:github/dhruvinsh/ws-ephemeral","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dhruvinsh%2Fws-ephemeral","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dhruvinsh%2Fws-ephemeral/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dhruvinsh%2Fws-ephemeral/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dhruvinsh%2Fws-ephemeral/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dhruvinsh","download_url":"https://codeload.github.com/dhruvinsh/ws-ephemeral/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dhruvinsh%2Fws-ephemeral/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31409470,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-04T10:20:44.708Z","status":"ssl_error","status_checked_at":"2026-04-04T10:20:06.846Z","response_time":60,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["qbittorrent","vpn","windscribe","windscribe-vpn"],"created_at":"2026-04-04T18:59:45.491Z","updated_at":"2026-04-04T18:59:45.573Z","avatar_url":"https://github.com/dhruvinsh.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# WS-EPHEMERAL\n\n\u003e [!WARNING]\n\u003e Please use this tool responsibly. Excessive or inappropriate\n\u003e usage may result in temporary suspension of your account. Due to lack of\n\u003e time I will try to revisit sometime in future but I strongly advice to let\n\u003e it run at default pace, that is once every week. For new user cookie generation\n\u003e might fail at the beginning, please try again after some time once you delete\n\u003e partially created cookie.\n\n\u003e [!NOTE]\n\u003e **Current State of the Project:** There are upstream web changes affecting this project. I am also suffering from issue and I would like implement fixes but lack of time its not possible at the moment. I plan to get back to it as soon as possible.\n\nThis project aims to automate setting up ephemeral port on Windscribe VPN\nservice for the purpose of port forwarding. Once the setup is done it wait\npatiently for next seven days. It delete the ephemeral port setting if any and\nset the new one. Useful for some torrent application which are running behind\nWindscribe VPN and need to open the ports.\n\n## Docker Setup\n\n\u003e [!important]\n\u003e NOTE: V1 is deprecated and should not be used.\n\n### Registries\n\nThere are two registries available:\n\n- dhruvinsh/ws-ephemeral\n- ghcr.io/dhruvinsh/ws-ephemeral\n\n### Tags\n\nAvailable tags for docker image (based on semver):\n\n| Tag    | Container Type                 |\n| ------ | ------------------------------ |\n| main   | straight from `main` branch    |\n| latest | latest stable released version |\n| x      | specific major version         |\n| x.x.x  | specific version               |\n\n### Deploy\n\n#### Cli\n\n```bash\ndocker run \\\n-e ONESHOT=false \\\n-e QBIT_HOST=http://192.168.1.10 \\\n-e QBIT_PASSWORD=password \\\n-e QBIT_PORT=8080 \\\n-e QBIT_PRIVATE_TRACKER=true \\\n-e QBIT_USERNAME=username \\\n-e REQUEST_TIMEOUT=10 \\\n-e WS_COOKIE_PATH=/cookie \\\n-e WS_DEBUG=False \\\n-e WS_PASSWORD=password \\\n-e WS_USERNAME=username \\\n-e WS_TOPT=totp_token \\\n-v /path/to/local/data:/cookie \\\ndhruvinsh/ws-ephemeral:latest\n```\n\n#### Docker-compose\n\nDocker compose file is provided for example, make some adjustment and run as,\n\n```bash\ndocker compose up -d\n```\n\n### Environment Variables\n\n| Variable             | Comment                                                                          |\n| -------------------- | -------------------------------------------------------------------------------- |\n| WS_USERNAME          | WS username                                                                      |\n| WS_PASSWORD          | WS password                                                                      |\n| WS_TOTP              | WS totp token for 2fa                                                            |\n| WS_DEBUG             | Enable Debug logging                                                             |\n| WS_COOKIE_PATH       | Persistent location for the cookie. (v3.x.x only)                                |\n| QBIT_USERNAME        | QBIT username                                                                    |\n| QBIT_PASSWORD        | QBIT password                                                                    |\n| QBIT_HOST            | QBIT web address like, https://qbit.xyz.com or http://192.168.1.10               |\n| QBIT_PORT            | QBIT web port number like, 443 or 8080                                           |\n| QBIT_PRIVATE_TRACKER | get QBIT ready for private tracker by disabling dht, pex and lsd (true or false) |\n| ONESHOT              | Run and setup the code only one time so that job can be schedule externally      |\n| REQUEST_TIMEOUT      | configurable http api timeout for slow network/busy websites                     |\n\n\u003e [!tip]\n\u003e NOTE: for usage see [Docker Setup](#docker-setup) v2 setup guide.\n\n## Unraid Setup\n\nUnraid template is now available under community application.\n\n## Changelog\n\nLocated [here](./CHANGELOG.md)\n\n## Privacy\n\nI assure you that nothing is being collected or logged. Your credentials are\nsafe and set via environment variable only. Still If you have further questions\nor concerns, please open an issue here.\n\n## Roadmap\n\n- [x] Support 2FA, #19\n- [ ] Daemon mode and job mode\n  - [ ] Rest API (useful for cron/script job)\n  - [ ] Separate port renewal, qbittorrent update and private tracker logic\n  - [ ] Random job time for cron job #15\n- [ ] Allow to run custom script (for now Bash script only) #12\n- [ ] Support for deluge\n- [ ] Gluetun support [#2392](https://github.com/qdm12/gluetun/pull/2392)\n\n## License\n\n[GPL3](LICENSE.md)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdhruvinsh%2Fws-ephemeral","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdhruvinsh%2Fws-ephemeral","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdhruvinsh%2Fws-ephemeral/lists"}