{"id":13551925,"url":"https://github.com/torrust/torrust-tracker","last_synced_at":"2025-04-03T02:32:25.602Z","repository":{"id":37743550,"uuid":"446542505","full_name":"torrust/torrust-tracker","owner":"torrust","description":"A modern and feature-rich (private) BitTorrent tracker.","archived":false,"fork":false,"pushed_at":"2024-04-09T20:50:48.000Z","size":4172,"stargazers_count":318,"open_issues_count":60,"forks_count":33,"subscribers_count":8,"default_branch":"develop","last_synced_at":"2024-04-10T00:39:29.440Z","etag":null,"topics":["bittorrent","bittorrent-tracker","hacktoberfest","p2p","peer-to-peer","rust","torrent","torrent-indexer","tracker"],"latest_commit_sha":null,"homepage":"https://torrust.com","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/torrust.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2022-01-10T18:43:58.000Z","updated_at":"2024-04-15T08:57:07.065Z","dependencies_parsed_at":"2022-07-08T04:54:41.217Z","dependency_job_id":"c356c294-a1f4-4ecd-99c9-4fd171ec1d4b","html_url":"https://github.com/torrust/torrust-tracker","commit_stats":null,"previous_names":[],"tags_count":18,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/torrust%2Ftorrust-tracker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/torrust%2Ftorrust-tracker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/torrust%2Ftorrust-tracker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/torrust%2Ftorrust-tracker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/torrust","download_url":"https://codeload.github.com/torrust/torrust-tracker/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":222911643,"owners_count":17056714,"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","hacktoberfest","p2p","peer-to-peer","rust","torrent","torrent-indexer","tracker"],"created_at":"2024-08-01T12:01:55.895Z","updated_at":"2025-04-03T02:32:25.571Z","avatar_url":"https://github.com/torrust.png","language":"Rust","funding_links":[],"categories":["Rust"],"sub_categories":[],"readme":"# Torrust Tracker\n\n[![container_wf_b]][container_wf] [![coverage_wf_b]][coverage_wf] [![deployment_wf_b]][deployment_wf] [![testing_wf_b]][testing_wf]\n\n**Torrust Tracker** is a [BitTorrent][bittorrent] Tracker that matchmakes peers and collects statistics. Written in [Rust Language][rust] with the [Axum] web framework. **This tracker aims to be respectful to established standards, (both [formal][BEP 00] and [otherwise][torrent_source_felid]).**\n\n\u003e This is a [Torrust][torrust] project and is in active development. It is community supported as well as sponsored by [Nautilus Cyberneering][nautilus].\n\n## Key Features\n\n- [x] High Quality and Modern Rust Codebase.\n- [x] [Documentation][docs] Generated from Code Comments.\n- [x] [Comprehensive Suit][coverage] of Unit and Functional Tests.\n- [x] Good Performance in Busy Conditions.\n- [x] Support for `UDP`, `HTTP`, and `TLS` Sockets.\n- [x] Native `IPv4` and `IPv6` support.\n- [x] Private \u0026 Whitelisted mode.\n- [x] Tracker Management API.\n- [x] Support [newTrackon][newtrackon] checks.\n- [x] Persistent `SQLite3` or `MySQL` Databases.\n\n## Roadmap\n\nCore:\n\n- [ ] New option `want_ip_from_query_string`. See \u003chttps://github.com/torrust/torrust-tracker/discussions/532#issuecomment-1836642956\u003e.\n- [ ] Peer and torrents specific statistics. See \u003chttps://github.com/torrust/torrust-tracker/discussions/139\u003e.\n\nPersistence:\n\n- [ ] Support other databases like PostgreSQL.\n\nPerformance:\n\n- [ ] More optimizations. See \u003chttps://github.com/torrust/torrust-tracker/discussions/774\u003e.\n\nProtocols:\n\n- [ ] WebTorrent.\n\nIntegrations:\n\n- [x] Monitoring (Prometheus).\n\nUtils:\n\n- [ ] Tracker client. WIP.\n- [ ] Tracker checker. WIP.\n\nOthers:\n\n- [ ] Support for Windows.\n- [ ] Docker images for other architectures.\n\n\u003chttps://github.com/orgs/torrust/projects/10/views/6\u003e\n\n## Implemented BitTorrent Enhancement Proposals (BEPs)\n\u003e\n\u003e _[Learn more about BitTorrent Enhancement Proposals][BEP 00]_\n\n- [BEP 03]: The BitTorrent Protocol.\n- [BEP 07]: IPv6 Support.\n- [BEP 15]: UDP Tracker Protocol for BitTorrent.\n- [BEP 23]: Tracker Returns Compact Peer Lists.\n- [BEP 27]: Private Torrents.\n- [BEP 48]: Tracker Protocol Extension: Scrape.\n\n## Architecture\n\n![Torrust Tracker Layers with main packages](./docs/media/packages/torrust-tracker-layers-with-packages.png)\n\nThere is also extra [documentation about the packages](./docs/packages.md).\n\n## Getting Started\n\n### Container Version\n\nThe Torrust Tracker is [deployed to DockerHub][dockerhub], you can run a demo immediately with the following commands:\n\n#### Docker\n\n```sh\ndocker run -it torrust/tracker:develop\n```\n\n\u003e Please read our [container guide][containers.md] for more information.\n\n#### Podman\n\n```sh\npodman run -it docker.io/torrust/tracker:develop\n```\n\n\u003e Please read our [container guide][containers.md] for more information.\n\n### Development Version\n\n- Please ensure you have the _**[latest stable (or nightly) version of rust][rust]___.\n- Please ensure that your computer has enough RAM. _**Recommended 16GB.___\n\n#### Checkout, Test and Run\n\n```sh\n# Checkout repository into a new folder:\ngit clone https://github.com/torrust/torrust-tracker.git\n\n# Change into directory and create an empty database file:\ncd torrust-tracker\nmkdir -p ./storage/tracker/lib/database/\ntouch ./storage/tracker/lib/database/sqlite3.db\n\n# Check all tests in application:\ncargo test --tests --benches --examples --workspace --all-targets --all-features\n\n# Run the tracker:\ncargo run\n```\n\n#### Customization\n\n```sh\n# Copy the default configuration into the standard location:\nmkdir -p ./storage/tracker/etc/\ncp ./share/default/config/tracker.development.sqlite3.toml ./storage/tracker/etc/tracker.toml\n\n# Customize the tracker configuration (for example):\nvim ./storage/tracker/etc/tracker.toml\n\n# Run the tracker with the updated configuration:\nTORRUST_TRACKER_CONFIG_TOML_PATH=\"./storage/tracker/etc/tracker.toml\" cargo run\n```\n\n_Optionally, you may choose to supply the entire configuration as an environmental variable:_\n\n```sh\n# Use a configuration supplied on an environmental variable:\nTORRUST_TRACKER_CONFIG_TOML=$(cat \"./storage/tracker/etc/tracker.toml\") cargo run\n```\n\n_For deployment, you **should** override the `api_admin_token` by using an environmental variable:_\n\n```sh\n# Generate a Secret Token:\ngpg --armor --gen-random 1 10 | tee ./storage/tracker/lib/tracker_api_admin_token.secret\nchmod go-rwx ./storage/tracker/lib/tracker_api_admin_token.secret\n\n# Override secret in configuration using an environmental variable:\nTORRUST_TRACKER_CONFIG_TOML=$(cat \"./storage/tracker/etc/tracker.toml\") \\\n  TORRUST_TRACKER_CONFIG_OVERRIDE_HTTP_API__ACCESS_TOKENS__ADMIN=$(cat \"./storage/tracker/lib/tracker_api_admin_token.secret\") \\\n  cargo run\n```\n\n\u003e Please view our [crate documentation][docs] for more detailed instructions.\n\n### Services\n\nThe following services are provided by the default configuration:\n\n- UDP _(tracker)_\n  - `udp://127.0.0.1:6969/announce`.\n- HTTP _(tracker)_\n  - `http://127.0.0.1:7070/announce`.\n- API _(management)_\n  - `http://127.0.0.1:1212/api/v1/stats?token=MyAccessToken`.\n\n## Documentation\n\nYou can read the [latest documentation][docs] from \u003chttps://docs.rs/\u003e.\n\nSome specific sections:\n\n- [Management API (Version 1)][API]\n- [Tracker (HTTP/TLS)][HTTP]\n- [Tracker (UDP)][UDP]\n\nThere is also extra documentation in the [docs](./docs) folder.\n\n## Benchmarking\n\n- [Benchmarking](./docs/benchmarking.md)\n\n## Contributing\n\nWe are happy to support and welcome new people to our project. Please consider our [contributor guide][guide.md].\u003c/br\u003e\nThis is an open-source community-supported project. We welcome contributions from the community!\n\n**How can you contribute?**\n\n- Bug reports and feature requests.\n- Code contributions. You can start by looking at the issues labeled \"[good first issues]\".\n- Documentation improvements. Check the [documentation][docs] and [API documentation][API] for typos, errors, or missing information.\n- Participation in the community. You can help by answering questions in the [discussions].\n\n## License\n\n**Copyright (c) 2023 The Torrust Developers.**\n\nThis program is free software: you can redistribute it and/or modify it under the terms of the [GNU Affero General Public License][AGPL_3_0] as published by the [Free Software Foundation][FSF], version 3.\n\nThis program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the [GNU Affero General Public License][AGPL_3_0] for more details.\n\nYou should have received a copy of the *GNU Affero General Public License* along with this program. If not, see \u003chttps://www.gnu.org/licenses/\u003e.\n\nSome files include explicit copyright notices and/or license notices.\n\n### Legacy Exception\n\nFor prosperity, versions of Torrust Tracker that are older than five years are automatically granted the [MIT-0][MIT_0] license in addition to the existing [AGPL-3.0-only][AGPL_3_0] license.\n\n## Contributor Agreement\n\nThe copyright of the Torrust Tracker is retained by the respective authors.\n\n**Contributors agree:**\n\n- That all their contributions be granted a license(s) **compatible** with the [Torrust Trackers License](#license).\n- That all contributors signal **clearly** and **explicitly** any other compilable licenses if they are not: _[AGPL-3.0-only with the legacy MIT-0 exception](#license)_.\n\n**The Torrust-Tracker project has no copyright assignment agreement.**\n\n_We kindly ask you to take time and consider The Torrust Project [Contributor Agreement][agreement.md] in full._\n\n## Acknowledgments\n\nThis project was a joint effort by [Nautilus Cyberneering GmbH][nautilus] and [Dutch Bits]. Also thanks to [Naim A.] and [greatest-ape] for some parts of the code. Further added features and functions thanks to [Power2All].\n\n[container_wf]: ../../actions/workflows/container.yaml\n[container_wf_b]: ../../actions/workflows/container.yaml/badge.svg\n[coverage_wf]: ../../actions/workflows/coverage.yaml\n[coverage_wf_b]: ../../actions/workflows/coverage.yaml/badge.svg\n[deployment_wf]: ../../actions/workflows/deployment.yaml\n[deployment_wf_b]: ../../actions/workflows/deployment.yaml/badge.svg\n[testing_wf]: ../../actions/workflows/testing.yaml\n[testing_wf_b]: ../../actions/workflows/testing.yaml/badge.svg\n\n[bittorrent]: http://bittorrent.org/\n[rust]: https://www.rust-lang.org/\n[axum]: https://github.com/tokio-rs/axum\n[newtrackon]: https://newtrackon.com/\n[coverage]: https://app.codecov.io/gh/torrust/torrust-tracker\n[torrust]: https://torrust.com/\n\n[dockerhub]: https://hub.docker.com/r/torrust/tracker/tags\n\n[torrent_source_felid]: https://github.com/qbittorrent/qBittorrent/discussions/19406\n\n[BEP 00]: https://www.bittorrent.org/beps/bep_0000.html\n[BEP 03]: https://www.bittorrent.org/beps/bep_0003.html\n[BEP 07]: https://www.bittorrent.org/beps/bep_0007.html\n[BEP 15]: https://www.bittorrent.org/beps/bep_0015.html\n[BEP 23]: https://www.bittorrent.org/beps/bep_0023.html\n[BEP 27]: https://www.bittorrent.org/beps/bep_0027.html\n[BEP 48]: https://www.bittorrent.org/beps/bep_0048.html\n\n[containers.md]: ./docs/containers.md\n\n[docs]: https://docs.rs/torrust-tracker/latest/\n[api]: https://docs.rs/torrust-tracker/latest/torrust_tracker/servers/apis/v1\n[http]: https://docs.rs/torrust-tracker/latest/torrust_tracker/servers/http\n[udp]: https://docs.rs/torrust-tracker/latest/torrust_tracker/servers/udp\n\n[good first issues]: https://github.com/torrust/torrust-tracker/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22\n[discussions]: https://github.com/torrust/torrust-tracker/discussions\n\n[guide.md]: https://github.com/torrust/.github/blob/main/info/contributing.md\n[agreement.md]: https://github.com/torrust/.github/blob/main/info/licensing/contributor_agreement_v01.md\n\n[AGPL_3_0]: ./docs/licenses/LICENSE-AGPL_3_0\n[MIT_0]: ./docs/licenses/LICENSE-MIT_0\n[FSF]: https://www.fsf.org/\n\n[nautilus]: https://github.com/orgs/Nautilus-Cyberneering/\n[Dutch Bits]: https://dutchbits.nl\n[Naim A.]: https://github.com/naim94a/udpt\n[greatest-ape]: https://github.com/greatest-ape/aquatic\n[Power2All]: https://github.com/power2all\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftorrust%2Ftorrust-tracker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftorrust%2Ftorrust-tracker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftorrust%2Ftorrust-tracker/lists"}