Torrust Tracker is a lightweight but incredibly high-performance and feature-rich BitTorrent tracker written in Rust.
It aims to provide a reliable and efficient solution for serving torrents to a vast number of peers while maintaining a high level of performance, robustness, extensibility, security, usability and with community-driven development.
- Multiple UDP server and HTTP(S) server blocks for socket binding are possible.
- Full IPv4 and IPv6 support for both UDP and HTTP(S).
- Private & Whitelisted mode.
- Built-in API.
- Torrent whitelisting.
- Peer authentication using time-bound keys.
- newTrackon check is supported for both HTTP and UDP, where IPv4 and IPv6 are properly handled.
- SQLite3 and MySQL persistence, loading and saving of the torrent hashes and downloads completed count.
- Comprehensive documentation.
- A complete suite of tests. See code coverage report.
- BEP 3: The BitTorrent Protocol.
- BEP 7: IPv6 Support.
- BEP 15: UDP Tracker Protocol for BitTorrent.
- BEP 23: Tracker Returns Compact Peer Lists.
- BEP 27: Private Torrents.
- BEP 48: Tracker Protocol Extension: Scrape.
Requirements:
- Rust Stable
1.68
- You might have problems compiling with a machine or docker container with low resources. It has been tested with docker containers with 6 CPUs, 7.5 GM of memory and 2GB of swap.
You can follow the documentation to install and use Torrust Tracker in different ways, but if you want to give it a quick try, you can use the following commands:
git clone https://github.com/torrust/torrust-tracker.git \
&& cd torrust-tracker \
&& cargo build --release \
&& mkdir -p ./storage/database \
&& mkdir -p ./storage/ssl_certificates
And then run cargo run
twice. The first time to generate the config.toml
file and the second time to run the tracker with the default configuration.
After running the tracker these services will be available:
- UDP tracker:
udp://127.0.0.1:6969/announce
. - HTTP tracker:
http://127.0.0.1:6969/announce
. - API:
http://127.0.0.1:1212/api/v1/stats?token=MyAccessToken
.
We welcome contributions from the community!
How can you contribute?
- Bug reports and feature requests.
- Code contributions. You can start by looking at the issues labeled "good first issues".
- Documentation improvements. Check the documentation and API documentation for typos, errors, or missing information.
- Participation in the community. You can help by answering questions in the discussions.
The project is licensed under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE.
There is an ongoing discussion about the license of the project. You can follow the discussion here.
This project was a joint effort by Nautilus Cyberneering GmbH 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.