GitHub – Dahrkael/ExTracker: Elixir-powered BitTorrent Tracker


ExTracker
The Bittorrent Tracker made in Elixir

CI
CI
CI

πŸ‘·β€β™‚οΈThis project is a Work In Progress. While not ready for full industrial usage it does work.
There is a testing instance running at extracker.dahrkael.net:6969 with all current features enabled (Live statistics).

Implementation Legend:
πŸ”² Not Yet πŸ”° Partially βœ… Done ❌ Won’t do

  • βœ… High performance (uses ALL the available cores, in-memory storage)
  • βœ… Low memory usage (~200MB of RAM for each 1.000.000 peers)
  • βœ… Zero setup (launch it and it just works)

Tracker-related BitTorrent Enhancement Proposals

Final and Active Process BEPs

  • βœ… HTTPS support
  • βœ… Database backups to disk
  • ❌ WebTorrent
  • πŸ”° Infohash whitelist/blacklist
  • πŸ”° Peer management (interval enforcement, cleanup, banning, etc)
  • πŸ”° Metrics
  • πŸ”° GeoIP support (statistics, peer restrictions)
  • Feel free to propose features in the Issues

There are 3 main ways of running ExTracker currently

Straight from source code

For this method to work you need to have Erlang and Elixir installed on your system

  • Clone the repository: git clone https://github.com/Dahrkael/ExTracker.git && cd ExTracker
  • If needed, modify the configuration in config/runtime.exs to fit your needs
  • run MIX_ENV=prod iex -S mix

Currently there are no official releases built (soonℒ️). You can however make your own and deploy it where needed:

  • Clone the repository: git clone https://github.com/Dahrkael/ExTracker.git && cd ExTracker
  • run MIX_ENV=prod mix release extracker for Linux or MIX_ENV=prod mix release extrackerw for Windows
  • Find the release files inside the _build/prod/rel/extracker folder (if its a different machine make sure the OS and architecture is the same!)
  • Copy the folder to its final destination
  • If needed, modify the configuration in releases/{VERSION}/runtime.exs to fit your needs
  • Run bin/extracker start

For this method you can directly run the available docker image: docker run ghcr.io/dahrkael/extracker:latest
or use it as part of docker-compose. Theres an example compose file available.

Note

Since modifying the runtime.exs file to tune the configuration inside the container is not easy you can also configure it using Environment Variables, see the example compose file for the complete list.

Copyright (c) Dahrkael <dahrkael at outlook dot com>
Distributed under the terms of the Apache License, Version 2.0. Please refer to the LICENSE file in the repository root directory for details.



Source link