torrust-tracker icon indicating copy to clipboard operation
torrust-tracker copied to clipboard

A modern and feature-rich (private) BitTorrent tracker.

Torrust Tracker

README HEADER

Test

Open Source Cool Nautilus Sponsored

📢Important Updates 📢


Index

  • PROJECT DESCRIPTION
  • FEATURES
  • PROJECT ROADMAP
  • IMPLEMENTED BEPs
  • INSTALLATION
  • USAGE
  • TRACKER URL
  • BUILT IN API
  • CONTACT
  • CREDITS

Project Description

Torrust Tracker is a lightweight but incredibly powerful and feature-rich BitTorrent tracker made using Rust.

Features

  • [X] Multiple UDP server and HTTP(S) server blocks for socket binding possible
  • [X] Full IPv4 and IPv6 support for both UDP and HTTP(S)
  • [X] Private & Whitelisted mode
  • [X] Built-in API
  • [X] Torrent whitelisting
  • [X] Peer authentication using time-bound keys
  • [X] newTrackon check supported for both HTTP, UDP, where IPv4 and IPv6 is properly handled
  • [X] SQLite3 Persistent loading and saving of the torrent hashes and completed count
  • [X] MySQL support added as engine option
  • [X] Periodically saving added, interval can be configured

Implemented BEPs

  • 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

Roadmap

Coming soon.


Installation

You can get the latest binaries from releases or follow the install from scratch instructions below.

  1. Clone the repo.

    git clone https://github.com/torrust/torrust-tracker.git
    cd torrust-tracker
    
  2. Build the source code.

    cargo build --release
    

Usage

  • 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
    

Tracker URL

Your tracker announce URL will be dependent on your bindings:

udp://{tracker-ip:port} 

and/or

http://{tracker-ip:port}/announce

and/or

https://{tracker-ip:port}/announce

In private & private_listed mode, tracker keys are added after the tracker URL like:

https://{tracker-ip:port}/announce/{key}

Built-in API

Read the API documentation here.

Contact

If you have any issues and suggestions please feel free to contact us via:

Message Warm Beer#3352 on Discord or email [email protected].

or

Create an issue


Credits

This project was developed by Dutch Bits for Nautilus Cyberneering GmbH.

The project has been possible through the support and contribution of both Nautilus Cyberneering, its team and collaborators, as well as that of our great open source contributors.

Special thanks to Naim A. and greatest-ape for some parts of the code. Also special thanks to further added features and functions by Power2All.

Thank you again to you all!