76 lines
3.1 KiB
Markdown
76 lines
3.1 KiB
Markdown
# Chihaya
|
|
|
|
[![GoDoc](https://godoc.org/github.com/chihaya/chihaya?status.svg)](https://godoc.org/github.com/chihaya/chihaya)
|
|
[![License](https://img.shields.io/badge/license-BSD-blue.svg)](https://en.wikipedia.org/wiki/BSD_licenses#2-clause_license_.28.22Simplified_BSD_License.22_or_.22FreeBSD_License.22.29)
|
|
[![Build Status](https://api.travis-ci.org/chihaya/chihaya.svg?branch=master)](https://travis-ci.org/chihaya/chihaya)
|
|
[![Docker Repository on Quay.io](https://quay.io/repository/jzelinskie/chihaya/status "Docker Repository on Quay.io")](https://quay.io/repository/jzelinskie/chihaya)
|
|
|
|
Chihaya is a high-performance [BitTorrent tracker] written in the Go
|
|
programming language. It is still heavily under development and the current
|
|
`master` branch should probably not be used in production
|
|
(unless you know what you're doing).
|
|
|
|
Features include:
|
|
|
|
- Public tracker feature-set with full compatibility with what exists of the BitTorrent spec
|
|
- Private tracker feature-set with compatibility for a [Gazelle]-like deployment (WIP)
|
|
- Low resource consumption, and fast, asynchronous request processing
|
|
- Full IPv6 support, including handling for dual-stacked peers
|
|
- Extensive metrics for visibility into the tracker and swarm's performance
|
|
- Ability to prioritize peers in local subnets to reduce backbone contention
|
|
- Pluggable backend driver that can coordinate with an external database
|
|
|
|
[BitTorrent tracker]: http://en.wikipedia.org/wiki/BitTorrent_tracker
|
|
[gazelle]: https://github.com/whatcd/gazelle
|
|
|
|
## When would I use Chihaya?
|
|
|
|
Chihaya is a meant for every kind of BitTorrent tracker deployment. Chihaya has
|
|
been used to replace instances of [opentracker] and also instances of [ocelot].
|
|
Chihaya handles torrent announces and scrapes in memory, but using a backend
|
|
driver, can also asynchronously provide deltas to maintain a set of persistent
|
|
data without throttling a database (this most useful for private tracker
|
|
use-cases).
|
|
|
|
[opentracker]: http://erdgeist.org/arts/software/opentracker
|
|
[ocelot]: https://github.com/WhatCD/Ocelot
|
|
|
|
## Building & Installing
|
|
|
|
Chihaya requires 64-bit Go 1.4, [Godep], and a [Go environment] previously set up.
|
|
|
|
[Godep]: https://github.com/tools/godep
|
|
[Go environment]: https://golang.org/doc/code.html
|
|
|
|
```sh
|
|
$ export GOPATH=$PWD/chihaya
|
|
$ git clone https://github.com/chihaya/chihaya.git chihaya/src/github.com/chihaya/chihaya
|
|
$ cd chihaya/src/github.com/chihaya/chihaya/cmd/chihaya/
|
|
$ godep restore
|
|
$ godep go install
|
|
```
|
|
|
|
### Testing
|
|
|
|
Chihaya has end-to-end test coverage for announces in addition to unit tests for
|
|
isolated components. To run the tests, use:
|
|
|
|
```sh
|
|
$ cd $GOPATH/src/github.com/chihaya/chihaya
|
|
$ godep go test -v ./...
|
|
```
|
|
|
|
There is also a set of benchmarks for performance-critical sections of Chihaya.
|
|
These can be run similarly:
|
|
|
|
```sh
|
|
$ cd $GOPATH/src/github.com/chihaya/chihaya
|
|
$ godep go test -v ./... -bench .
|
|
```
|
|
|
|
## Configuration
|
|
|
|
Copy [`example_config.json`](https://github.com/chihaya/chihaya/blob/master/example_config.json)
|
|
to your choice of location, and update the values as required.
|
|
An explanation of the available keys can be found in [CONFIGURATION.md](https://github.com/chihaya/chihaya/blob/master/CONFIGURATION.md).
|
|
|