Torrust-Actix Tracker is a lightweight but incredibly powerful and feature-rich BitTorrent Tracker made using Rust.
Currently, it's being actively used at https://www.gbitt.info/.
This project originated from Torrust-Tracker code originally developed by Mick van Dijke, further developed by Power2All as alternative for OpenTracker and other tracker code available on GitHub.
- Block array for TCP tracking (HTTP/HTTPS), UDP tracking and API (HTTP/HTTPS)
- Full IPv4 and IPv6 support
- Persistence saving supported using SQLite3, MySQL or PostgresSQL database
- Customize table and database structure in the configuration
- Whitelist system for private tracking
- Blacklist system for blocking unwelcome hashes
- Torrent key support for locking access to announcement through keys as info_hash with a timeout
- User account support, configurable for also database support
- Swagger UI built-in in the API (toggleable), useful both for testing API and documentation for API
- Sentry SaaS and self-hosted support
- BEP 3: The BitTorrent Protocol
- BEP 7: IPv6 Support
- BEP 15: UDP Tracker Protocol for BitTorrent
- BEP 23: Tracker Returns Compact Peer Lists
- 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 repository:
git clone https://github.com/Power2All/torrust-actix.git
cd torrust-actix
- Build the source code using Rust (make sure you have installed rustup with stable branch)
cargo build --release
Run the code using --help
argument for using in your enironment:
./target/release/torrust-actix --help
Before you can run the server, you need to either have persietency turned off, and when enabled, make sure your database is created and working. See the help argument above how to fix your setup as you wish.
Swagger UI is introduced, and when enabled in the configuration, is accessible through the API via /swagger-ui/
.
Sentry.io support is introduced, you can enable it in the configuration and the URL where to push the data to.
- Further implementation of Sentry (trace logging)
- Fixing announce and scrape paths, since it is the wrong way.
- Fixing various smaller bugs that isn't app-breaking, but should be handled better.
- Added support for Sentry.io SaaS and self-hosted setup.
- Preparing work for version v4.1.0, which will introduce LUA support for middleware.
- Added option that the system will remove data from database.
- Added updates variables for the white/black list and keys tables.
- Renaming the "database" naming which should be "tables".
- A lot of fixes and bugs I stumbled upon.
- Completely rebuilt of the tracker code, for readability.
- Moved to Actix v4, thus versioning this software to v4.0.0 as well.
- Rebuilt and remade the way configuration file is created (you need to give the command as argument for it).
- Redone the whole database system, is tested with the latest versions available at this time.
- API has gone through a lot of work and tested.
- Introduced Swagger UI as testing and documentation.
- A lot of improvements in speed and performance applied further.
- Import and Export function added, will dump or import from JSON files, handy for when making a backup from your existing database, or when migrating to a other database engine.
- Removed WebGUI, was outdated and not really useful.
- Bumped library versions significantly, including security patches.
- Fixed changes in libraries to work properly.
- Tuned the non-persistence code to use less memory.
- Bumped library versions, including security patches.
- Fixed a bug in the PostgreSQL handler.
- Some forgotten naming from Torrust-Axum to Torrust-Actix.
- Bumped library versions.
- Modified the way scheduling was done through threads, it could lock up and slow down public trackers with heavy activity.
- Tweaking the SQLite3 database usage and database space consumption.
- Full overhaul on how torrents and peers are used in memory. Using crossbeam skipmap for thread safe non-locking memory sharing.
- Some various improvement on coding performance, readability and linting the files.
- Replaced Tokio Axum web framework for Actix, reason: Missing critical things like a timeout on connect, disconnect, read and write, and support was lackluster.
- Renamed the github repository from torrust-axum to torrust-actix.
- Adding user tracking support with an extra key.
- Bumped library versions.
- Added a Code of Conduct file, as some open source projects need this.
- Added a Maintenance toggle function to API and WebGUI.
- Configuration file is not generated when it doesn't exist, or has invalid data, unless forced with a '--create-config' argument.
- Fixed various small bugs.
- Bumped library versions.
- Database for SQLite3, MySQL and PostgreSQL now works properly with all the tables, and will be used if enabled.
- UDP had a problem in IPv4, fixed the code for correctly parsing byte array.
- Cleanup and refactoring of some redundant code.
- Added some small checks where needed to prevent errors.
- Whitelist System: You can enable this to only allow torrent hashes to be used you specify in the database, or add them through the API.
- Blacklist System: You can enable this to disallow torrent hashes to be used you specify in the database, or add them through the API.
- Keys System: You can enable this to only allow tracking when an activated "key" hash (same as an info_hash, 20 bytes or 40 characters hex) is given. Keys with a timeout of zero "0" will be permanent and won't be purged by the cleanup.
- WebGUI: The API has an available web interface, which can be accessed through https://your.api:8080/webgui/ and giving the correct API Key, which you configure in the configuration file.
- Customizable database structure can be given in the configuration file.
- The system is also now available through Docker Hub at https://hub.docker.com/r/power2all/torrust-axum
- Bugfixes
- SQLite3 support added
- MySQL support added
- PostgresSQL support added
Initial version of Torrust-Axum.
This Torrust-Tracker was a joint effort by Nautilus Cyberneering GmbH, Dutch Bits and Power2All. Also thanks to Naim A. and greatest-ape for some parts in the Torrust-Tracker code. This project (Torrust-Actix) is built from scratch by Power2All.