2015-03-22 18:42:21 -04:00
# Chihaya
[![GoDoc ](https://godoc.org/github.com/chihaya/chihaya?status.svg )](https://godoc.org/github.com/chihaya/chihaya)
2015-06-30 21:39:25 -04:00
[![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)
2015-03-22 18:42:21 -04:00
[![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)
2013-06-21 19:31:32 -04:00
2015-01-28 23:26:03 -05:00
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).
2013-08-29 21:48:48 -04:00
2014-07-17 01:49:41 -04:00
Features include:
2013-08-31 15:21:35 -04:00
2014-10-27 23:17:03 -04:00
- 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)
2014-07-23 15:43:15 -04:00
- 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
2014-10-27 23:17:03 -04:00
- Ability to prioritize peers in local subnets to reduce backbone contention
2014-08-13 17:45:34 -04:00
- Pluggable backend driver that can coordinate with an external database
2013-08-29 22:02:12 -04:00
2015-01-28 23:26:03 -05:00
[BitTorrent tracker]: http://en.wikipedia.org/wiki/BitTorrent_tracker
2013-08-31 15:21:35 -04:00
[gazelle]: https://github.com/whatcd/gazelle
2013-06-21 19:31:32 -04:00
2014-10-27 23:17:03 -04:00
## When would I use Chihaya?
2013-08-29 00:47:37 -04:00
2015-01-28 23:26:03 -05:00
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).
2013-08-29 00:47:37 -04:00
2014-10-27 23:17:03 -04:00
[opentracker]: http://erdgeist.org/arts/software/opentracker
[ocelot]: https://github.com/WhatCD/Ocelot
2014-07-06 17:09:37 -04:00
2014-10-27 23:17:03 -04:00
## Building & Installing
2013-08-31 01:24:51 -04:00
2015-02-20 21:00:22 -05:00
Chihaya requires 64-bit Go 1.4, [Godep], and a [Go environment] previously set up.
2013-07-05 06:50:52 -04:00
2014-10-27 23:17:03 -04:00
[Godep]: https://github.com/tools/godep
[Go environment]: https://golang.org/doc/code.html
2013-06-21 19:31:32 -04:00
2014-10-27 23:17:03 -04:00
```sh
$ export GOPATH=$PWD/chihaya
2015-06-27 17:12:17 +12:00
$ 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
2014-10-27 23:17:03 -04:00
```
2013-08-23 15:39:42 -04:00
2015-02-17 13:20:59 -05:00
### 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 .
```
2015-02-17 01:49:11 -05:00
## 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.
2015-03-24 00:39:33 -04:00
An explanation of the available keys can be found in [CONFIGURATION.md ](https://github.com/chihaya/chihaya/blob/master/CONFIGURATION.md ).
2015-02-17 01:49:11 -05:00