A tracker for the LBRY protocol.
Find a file
2022-05-25 11:21:35 -03:00
.github lint: lint yaml files 2022-01-15 13:13:21 -05:00
bittorrent accept port 0 but do not store (anonymous mode) 2022-04-13 21:01:05 -03:00
cmd/chihaya add fixedpeer middleware 2022-04-13 17:37:28 -03:00
dist lint: lint yaml files 2022-01-15 13:13:21 -05:00
docs lint: lint markdown files 2022-01-15 13:03:41 -05:00
frontend bittorrent: rename qp.Uint64 to qp.Uint 2022-01-17 15:54:56 -05:00
middleware preserve Incomplete/Complete 2022-04-13 21:01:25 -03:00
pkg lint: actually lint all go files 2022-01-15 23:28:52 -05:00
storage gomod: bump all deps (mostly redis) 2022-01-18 22:00:57 -05:00
.golangci.yaml golangci-lint: include golint docstring exceptions 2022-01-18 13:33:46 -05:00
.markdownlint.yaml lint: lint markdown files 2022-01-15 13:03:41 -05:00
.yamllint lint: lint yaml files 2022-01-15 13:13:21 -05:00
CONTRIBUTING.md use the contribute link from lbry.tech 2022-05-18 09:10:15 -03:00
Dockerfile Fixes Dockerfile 2020-04-06 11:17:41 +07:00
go.mod gomod: bump all deps (mostly redis) 2022-01-18 22:00:57 -05:00
go.sum gomod: bump all deps (mostly redis) 2022-01-18 22:00:57 -05:00
LICENSE Update LICENSE 2022-05-17 12:15:45 -04:00
MAINTAINERS add leo to maintainers 2016-08-16 22:17:10 -04:00
README.md add simple just-udp example 2022-05-25 11:21:35 -03:00

LBRY Tracker

The LBRY tracker is a server that helps peers find each other. It was forked from Chihaya, an open-source BitTorrent tracker.

Installation and Usage

Building from HEAD

In order to compile the project, the latest stable version of Go and knowledge of a working Go environment are required.

git clone git@github.com:lbryio/tracker.git
cd tracker
go build ./cmd/chihaya
./chihaya --help

Testing

The following will run all tests and benchmarks. Removing -bench will just run unit tests.

go test -bench $(go list ./...)

The tracker executable contains a command to end-to-end test a BitTorrent tracker. See

tracker --help

Configuration

Configuration of the tracker is done via one YAML configuration file. The dist/ directory contains an example configuration file. Files and directories under docs/ contain detailed information about configuring middleware, storage implementations, architecture etc.

This is an example for an UDP server running on 6969 with metrics enabled. Remember to change the private key to some random string.

---
tracker:
  announce_interval: "30m"
  min_announce_interval: "15m"
  metrics_addr: "0.0.0.0:6880"
  udp:
    addr: "0.0.0.0:6969"
    max_clock_skew: "10s"
    private_key: ">>>>CHANGE THIS TO SOME RANDOM THING<<<<"
    enable_request_timing: false
    allow_ip_spoofing: false
    max_numwant: 100
    default_numwant: 50
    max_scrape_infohashes: 50
  storage:
    name: "memory"
    config:
      gc_interval: "3m"
      peer_lifetime: "31m"
      shard_count: 1024
      prometheus_reporting_interval: "1s"

Contributing

Contributions to this project are welcome, encouraged, and compensated. For more details, please check this link.

License

LBRY's code changes are MIT licensed, and the upstream Chihaya code is licensed under a BSD 2-Clause license. For the full license, see LICENSE.

Security

We take security seriously. Please contact security@lbry.com regarding any security issues. Our PGP key is here if you need it.

Contact

The primary contact for this project is @shyba.