{"id":13567766,"url":"https://github.com/Novage/wt-tracker","last_synced_at":"2025-04-04T02:32:59.715Z","repository":{"id":37932619,"uuid":"172875805","full_name":"Novage/wt-tracker","owner":"Novage","description":"High-performance WebTorrent tracker","archived":false,"fork":false,"pushed_at":"2024-09-18T11:37:12.000Z","size":443,"stargazers_count":248,"open_issues_count":5,"forks_count":86,"subscribers_count":21,"default_branch":"main","last_synced_at":"2024-09-18T16:30:30.890Z","etag":null,"topics":["bittorrent","bittorrent-tracker","p2p","p2p-media-loader","p2p-network","peer-to-peer","torrent","tracker","webrtc","websockets","webtorrent"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Novage.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","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},"funding":{"custom":"https://www.blockchain.com/btc/address/12YW9DJXAucLAx6Gy9tAXgXUPstHXEHnPY"}},"created_at":"2019-02-27T08:33:17.000Z","updated_at":"2024-09-18T11:37:10.000Z","dependencies_parsed_at":"2024-06-24T18:15:22.790Z","dependency_job_id":null,"html_url":"https://github.com/Novage/wt-tracker","commit_stats":{"total_commits":105,"total_committers":3,"mean_commits":35.0,"dds":0.09523809523809523,"last_synced_commit":"400a4369fbe656e041514c7a08a94092888afc2f"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Novage%2Fwt-tracker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Novage%2Fwt-tracker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Novage%2Fwt-tracker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Novage%2Fwt-tracker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Novage","download_url":"https://codeload.github.com/Novage/wt-tracker/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":223083255,"owners_count":17084838,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["bittorrent","bittorrent-tracker","p2p","p2p-media-loader","p2p-network","peer-to-peer","torrent","tracker","webrtc","websockets","webtorrent"],"created_at":"2024-08-01T13:02:42.351Z","updated_at":"2025-04-04T02:32:59.704Z","avatar_url":"https://github.com/Novage.png","language":"TypeScript","funding_links":["https://www.blockchain.com/btc/address/12YW9DJXAucLAx6Gy9tAXgXUPstHXEHnPY"],"categories":["TypeScript"],"sub_categories":[],"readme":"[![Build Status](https://github.com/Novage/wt-tracker/actions/workflows/main.yml/badge.svg)](https://github.com/Novage/wt-tracker/actions/workflows/main.yml)\n[![Coverage Status](https://coveralls.io/repos/github/Novage/wt-tracker/badge.svg?branch=main)](https://coveralls.io/github/Novage/wt-tracker?branch=main)\n\n# wt-tracker\n\nHigh-performance WebTorrent tracker.\n\nWebTorrent tracker is a required component of [WebTorrent](https://github.com/webtorrent/webtorrent) and [P2P Media Loader](https://github.com/Novage/p2p-media-loader) (peer-to-peer networks for web browsers) to do [WebRTC](https://en.wikipedia.org/wiki/WebRTC) signaling - exchanging connection data (i.e. [SDP](https://en.wikipedia.org/wiki/Session_Description_Protocol)) between peers - joining them into swarms.\n\n## Features\n\n- handles up to 30k WebSocket Secure (HTTPS) peers on a VPS with only 2 GiB memory and 1 virtual CPU thanks to [uWebSockets.js](https://github.com/uNetworking/uWebSockets.js) I/O backend and perfomance optimizations in the code\n- handles ws:// (HTTP) and wss:// (HTTPS) connections simultaneously\n- IPv4 and IPv6 support\n- robust and well-tested: CI, unit tests, static code analyzis, 100% TypeScript\n- supports tracker \"scrape\" extension\n- statistics under /stats.json URL\n\n## Related projects\n\n- [P2P Media Loader](https://github.com/Novage/p2p-media-loader) - an open-source engine for P2P streaming of live and on demand video directly in a web browser HTML page\n- [Novage, LLC](https://novage.com.ua/) - P2P development, support \u0026 consulting\n- [WebTorrent](https://github.com/webtorrent/webtorrent) - streaming torrent client for the web https://webtorrent.io\n- [uWebSockets.js](https://github.com/uNetworking/uWebSockets.js) - the Node.js bindings to µWebSockets, one of the most efficient web servers available\n\n## Build instructions\n\nNode.js 16+ is required.\n\n```sh\nnpm install\nnpm run build\n```\n\n## Run instructions\n\n```sh\n./bin/wt-tracker [config.json]\n```\n\nor\n\n```sh\nnode lib/run-tracker.js [config.json]\n```\n\nor\n\n```sh\nnpm start [config.json]\n```\n\n## Configuration\n\nSee [config.json](sample/config.json)\n\n| Name                                | Type   | Description                                                                                                                                                           |\n| ----------------------------------- | ------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| servers.websockets.path             | string | URL pattern for the WebSockets endpoint                                                                                                                               |\n| servers.websockets.maxPayloadLength | number | The maximum length of received message                                                                                                                                |\n| servers.websockets.midleTimeout     | number | The maximum amount of seconds that may pass without sending or getting a message. Being idle for more than this, and the connection is severed.                       |\n| servers.websockets.compression      | 0,1,2  | 0 = no compression, 1 = shared compressor, 2 = dedicated compressor (see [details](https://github.com/uNetworking/uWebSockets/blob/master/misc/READMORE.md#settings)) |\n| servers.websockets.maxConnections   | number | The maximum number of WebSocket connections. 0 = no limit.                                                                                                            |\n| tracker.maxOffers                   | number | The maximum number of client's WebRTC SDP offers that are processed                                                                                                   |\n| tracker.announceInterval            | number | Desired announce interval in seconds required from the clients                                                                                                        |\n\n## Index HTML page\n\nYou can specify a content of the index page by creating `index.html` file in the working directory.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FNovage%2Fwt-tracker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FNovage%2Fwt-tracker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FNovage%2Fwt-tracker/lists"}