Torrust Tracker is a lightweight but incredibly high-performance and feature-rich BitTorrent tracker written in Rust Language.
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.
We have a container guide to get started with Docker or Podman
- 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 our code coverage report.
- BEP 03: The BitTorrent Protocol.
- BEP 07: 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/tracker/lib/database \
&& mkdir -p ./storage/tracker/lib/tlsThe default configuration folder: /share/default/config:
-
Contains the development default i.e:
tracker.development.sqlite3.toml.
To override the default configuration there is two options:
-
Configure a different configuration path by setting the
TORRUST_TRACKER_PATH_CONFIGenvironmental variable. -
Supply the entire configuration via the
TORRUST_TRACKER_CONFIGenvironmental variable.
NOTE: It is recommended for production you override the
api admin tokenby placing your secret in theENV_VAR_API_ADMIN_TOKENenvironmental variable.
After running the tracker these services will be available (as defined in the default configuration):
- 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 a dual license. See COPYRIGHT.
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.