Giter Club home page Giter Club logo

torrust-tracker's Introduction

Torrust Tracker

container_wf_b coverage_wf_b deployment_wf_b testing_wf_b

Torrust Tracker is a BitTorrent Tracker that matchmakes peers and collects statistics. Written in Rust Language with the Axum web framework. This tracker aims to be respectful to established standards, (both formal and otherwise).

This is a Torrust project and is in active development. It is community supported as well as sponsored by Nautilus Cyberneering.

Key Features

  • High Quality and Modern Rust Codebase.
  • Documentation Generated from Code Comments.
  • Comprehensive Suit of Unit and Functional Tests.
  • Good Performance in Busy Conditions.
  • Support for UDP, HTTP, and TLS Sockets.
  • Native IPv4 and IPv6 support.
  • Private & Whitelisted mode.
  • Tracker Management API.
  • Support newTrackon checks.
  • Persistent SQLite3 or MySQL Databases.

Roadmap

Core:

Persistence:

  • Support other databases like PostgreSQL.

Performance:

Protocols:

  • WebTorrent.

Integrations:

  • Monitoring (Prometheus).

Utils:

  • Tracker client.
  • Tracker checker.

Others:

  • Support for Windows.
  • Docker images for other architectures.

https://github.com/orgs/torrust/projects/10/views/6

Implemented BitTorrent Enhancement Proposals (BEPs)

Learn more about BitTorrent Enhancement Proposals

  • 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.

Getting Started

Container Version

The Torrust Tracker is deployed to DockerHub, you can run a demo immediately with the following commands:

Docker

docker run -it torrust/tracker:develop

Please read our container guide for more information.

Podman

podman run -it docker.io/torrust/tracker:develop

Please read our container guide for more information.

Development Version

Checkout, Test and Run

# Checkout repository into a new folder:
git clone https://github.com/torrust/torrust-tracker.git

# Change into directory and create a empty database file:
cd torrust-tracker
mkdir -p ./storage/tracker/lib/database/
touch ./storage/tracker/lib/database/sqlite3.db

# Check all tests in application:
cargo test --tests --benches --examples --workspace --all-targets --all-features

# Run the tracker:
cargo run

Customization

# Copy the default configuration into the standard location:
mkdir -p ./storage/tracker/etc/
cp ./share/default/config/tracker.development.sqlite3.toml ./storage/tracker/etc/tracker.toml

# Customize the tracker configuration (for example):
vim ./storage/tracker/etc/tracker.toml

# Run the tracker with the updated configuration:
TORRUST_TRACKER_CONFIG_TOML_PATH="./storage/tracker/etc/tracker.toml" cargo run

Optionally, you may choose to supply the entire configuration as an environmental variable:

# Use a configuration supplied on an environmental variable:
TORRUST_TRACKER_CONFIG_TOML=$(cat "./storage/tracker/etc/tracker.toml") cargo run

For deployment, you should override the api_admin_token by using an environmental variable:

# Generate a Secret Token:
gpg --armor --gen-random 1 10 | tee ./storage/tracker/lib/tracker_api_admin_token.secret
chmod go-rwx ./storage/tracker/lib/tracker_api_admin_token.secret

# Override secret in configuration using an environmental variable:
TORRUST_TRACKER_CONFIG_TOML=$(cat "./storage/tracker/etc/tracker.toml") \
  TORRUST_TRACKER_CONFIG_OVERRIDE_HTTP_API__ACCESS_TOKENS__ADMIN=$(cat "./storage/tracker/lib/tracker_api_admin_token.secret") \
  cargo run

Please view our crate documentation for more detailed instructions.

Services

The following services are provided by the default configuration:

  • UDP (tracker)
    • udp://127.0.0.1:6969/announce.
  • HTTP (tracker)
    • http://127.0.0.1:7070/announce.
  • API (management)
    • http://127.0.0.1:1212/api/v1/stats?token=MyAccessToken.

Documentation

You can read the latest documentation from https://docs.rs/.

Some specific sections:

Benchmarking

Contributing

We are happy to support and welcome new people to our project. Please consider our contributor guide.
This is an open-source community-supported project. 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.

License

Copyright (c) 2023 The Torrust Developers.

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, version 3.

This 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 for more details.

You should have received a copy of the GNU Affero General Public License along with this program. If not, see https://www.gnu.org/licenses/.

Some files include explicit copyright notices and/or license notices.

Legacy Exception

For prosperity, versions of Torrust Tracker that are older than five years are automatically granted the MIT-0 license in addition to the existing AGPL-3.0-only license.

Contributor Agreement

The copyright of the Torrust Tracker is retained by the respective authors.

Contributors agree:

The Torrust-Tracker project has no copyright assignment agreement.

We kindly ask you to take time and consider The Torrust Project Contributor Agreement in full.

Acknowledgments

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.

torrust-tracker's People

Contributors

josecelano avatar da2ce7 avatar mickvandijke avatar naim94a avatar power2all avatar dependabot[bot] avatar mario-nt avatar ngthhu avatar alexohneander avatar pataquets avatar aimless321 avatar gglinnk avatar si14 avatar makefu avatar shrirangb avatar ftsimas avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.