Torrust Tracker is a lightweight but incredibly powerful and feature-rich BitTorrent tracker made using Rust.
- Multiple UDP server and HTTP(S) server blocks for socket binding 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 supported for both HTTP, UDP, where IPv4 and IPv6 is properly handled
- SQLite3 Persistent loading and saving of the torrent hashes and completed count
- MySQL support added as engine option
- Periodically saving added, interval can be configured
- 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 41: UDP Tracker Protocol Extensions
- BEP 48: Tracker Protocol Extension: Scrape
You can get the latest binaries from releases or follow the install from scratch instructions below.
- Clone the repo.
git clone https://github.com/torrust/torrust-tracker.git
cd torrust-tracker
- Build the source code.
cargo build --release
- Run the torrust-tracker once to create the
config.toml
file:
./target/release/torrust-tracker
- Edit the newly created config.toml file according to your liking, see configuration documentation. Eg:
log_level = "info"
mode = "public"
db_driver = "Sqlite3"
db_path = "data.db"
announce_interval = 120
min_announce_interval = 120
max_peer_timeout = 900
on_reverse_proxy = false
external_ip = "0.0.0.0"
tracker_usage_statistics = true
persistent_torrent_completed_stat = false
inactive_peer_cleanup_interval = 600
remove_peerless_torrents = true
[[udp_trackers]]
enabled = false
bind_address = "0.0.0.0:6969"
[[http_trackers]]
enabled = true
bind_address = "0.0.0.0:6969"
ssl_enabled = false
ssl_cert_path = ""
ssl_key_path = ""
[http_api]
enabled = true
bind_address = "127.0.0.1:1212"
[http_api.access_tokens]
admin = "MyAccessToken"
- Run the torrust-tracker again:
./target/release/torrust-tracker
Your tracker announce URL will be udp://{tracker-ip:port} and/or http://{tracker-ip:port}/announce and/or https://{tracker-ip:port}/announce depending on your bindings. In private & private_listed mode, tracker keys are added after the tracker URL like: https://{tracker-ip:port}/announce/{key}.
Read the API documentation 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.