Skip to content

kmzs123/trunker

 
 

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.

Official Instance

HTTPS https://tracker.ghostchu-services.top/announce
WebSocket (for WebTorrent Protocol) wss://tracker.ghostchu-services.top/announce
UDP udp://utracker.ghostchu-services.top:6969

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 --cap-add=NET_ADMIN --network=host -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
  • eBPF-based blacklist

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

About

A high-performance BitTorrent Tracker implemented in Go. 🚀去除了对 x84_64-v4 的要求,支持x84_64-v1

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages

  • Go 93.4%
  • C 3.4%
  • Thrift 1.6%
  • Shell 1.2%
  • Other 0.4%