Skip to content

A high-performance BitTorrent Tracker implemented in Go. ๐Ÿš€

License

Notifications You must be signed in to change notification settings

PBH-BTN/trunker

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Trunker

A Tracker which will "chuang" you

image

Introduction

A high-performance BitTorrent Tracker implemented in Go. Using Hertz from cloudwego, with observability.

For benchmark, please refer to the Benchmark section.

How to run

make install_tool
make update_idl
./build.sh
cd output
./bootstrap.sh

or

docker run -d --name trunker -e ADMIN_KEY=aabbcc -p 8888:8888 gaojianli2333/trunker:latest

Features

  • BEP-0003
  • BEP-0007 (IPv6 Tracker Extension)
  • BEP-0023 (Compact Peer Lists)
  • BEP-0024 (External IP)
  • BEP-0031 (Failure Retry Extension)
  • BEP-0048 (Scrape)
  • BEP-0015 (UDP Tracker Protocol)
  • LT-Extension (aka. complete,incomplete)
  • Switchable Mode (Memory or MySQL)
  • Load and store persist from disk
  • Blacklist for info_hash and peer_id
  • Eventbus support
  • Websocket support
  • Prometheus based metrics
  • RPC mode to support cluster. Powered by Kitex

Wiki

Trunker provides much config and observability capabilities, if you want to run trunker in production, please see the Wiki.

Benchmark

Trunker has very strong performance. Here's a record of a real peak.

  • CPU: 4 Cores AMD EPYC-Milan
  • Average response time: 100us when 1267703 torrents and 2406393 peers are online.
  • QPS: 2736 (can be higher, but we don't have such many peers connect to our tracker)
  • Memory Cost: 2635MB.

image

image