2016-02-25 19:17:30 -05:00
# Chihaya
2020-02-20 13:13:38 -05:00
[](https://github.com/chihaya/chihaya/actions)
2016-02-25 19:17:30 -05:00
[](https://quay.io/repository/jzelinskie/chihaya)
2016-09-06 00:46:23 -04:00
[](https://goreportcard.com/report/github.com/chihaya/chihaya)
2016-02-25 19:17:30 -05:00
[](https://godoc.org/github.com/chihaya/chihaya)
2017-11-28 16:59:57 -05:00

2016-02-25 19:17:30 -05:00
[](https://en.wikipedia.org/wiki/BSD_licenses#2 -clause_license_.28.22Simplified_BSD_License.22_or_.22FreeBSD_License.22.29)
[](http://webchat.freenode.net/?channels=chihaya)
2016-04-02 19:35:04 -04:00
**Note:** The master branch may be in an unstable or even broken state during development.
Please use [releases] instead of the master branch in order to get stable binaries.
2016-02-25 19:17:30 -05:00
Chihaya is an open source [BitTorrent tracker] written in [Go].
Differentiating features include:
2018-08-31 00:56:18 -04:00
- HTTP and UDP protocols
2016-08-16 23:51:24 -04:00
- IPv4 and IPv6 support
2018-08-31 00:56:18 -04:00
- Pre/Post middlware hooks
2016-03-05 11:09:28 -05:00
- [YAML] configuration
2016-08-16 23:51:24 -04:00
- Metrics via [Prometheus]
2018-12-12 15:26:11 +08:00
- High Availability via [Redis]
2018-08-31 00:56:18 -04:00
- Kubernetes deployment via [Helm]
2016-02-25 19:17:30 -05:00
2016-04-02 19:35:04 -04:00
[releases]: https://github.com/chihaya/chihaya/releases
2018-08-31 00:56:18 -04:00
[BitTorrent tracker]: https://en.wikipedia.org/wiki/BitTorrent_tracker
2016-02-25 19:17:30 -05:00
[Go]: https://golang.org
2018-08-31 00:56:18 -04:00
[YAML]: https://yaml.org
[Prometheus]: https://prometheus.io
2018-12-12 15:26:11 +08:00
[Redis]: https://redis.io
2018-08-31 00:56:18 -04:00
[Helm]: https://helm.sh
2016-02-25 19:17:30 -05:00
2016-09-17 18:39:01 -04:00
## Why Chihaya?
2016-08-20 02:27:24 -04:00
2016-09-17 18:39:01 -04:00
Chihaya is built for developers looking to integrate BitTorrent into a preexisting production environment.
Chihaya's pluggable architecture and middleware framework offers a simple and flexible integration point that abstracts the BitTorrent tracker protocols.
2018-08-31 00:56:18 -04:00
The most common use case for Chihaya is enabling peer-to-peer cloud software deployments.
2016-08-20 02:27:24 -04:00
2016-04-02 19:35:04 -04:00
## Development
2016-03-30 00:38:57 -04:00
2018-08-31 00:56:18 -04:00
### Contributing
Long-term discussion and bug reports are maintained via [GitHub Issues].
Code review is done via [GitHub Pull Requests].
Real-time discussion is done via [freenode IRC].
For more information read [CONTRIBUTING.md].
[GitHub Issues]: https://github.com/chihaya/chihaya/issues
[GitHub Pull Requests]: https://github.com/chihaya/chihaya/pulls
[freenode IRC]: http://webchat.freenode.net/?channels=chihaya
[CONTRIBUTING.md]: https://github.com/chihaya/chihaya/blob/master/CONTRIBUTING.md
2016-04-02 19:35:04 -04:00
### Getting Started
2016-02-25 19:17:30 -05:00
2017-01-28 16:02:14 -05:00
#### Building from HEAD
In order to compile the project, the [latest stable version of Go] and knowledge of a [working Go environment] are required.
2016-03-05 11:09:28 -05:00
```sh
2019-02-12 20:26:26 -05:00
$ git clone git@github .com:chihaya/chihaya.git
$ cd chihaya
2019-10-17 14:59:44 +09:00
$ go build ./cmd/chihaya
2019-02-12 20:26:26 -05:00
$ ./chihaya --help
2016-03-05 11:09:28 -05:00
```
2016-02-25 19:17:30 -05:00
2016-04-02 19:35:04 -04:00
[latest stable version of Go]: https://golang.org/dl
[working Go environment]: https://golang.org/doc/code.html
2017-01-28 16:02:14 -05:00
#### Docker
Docker containers are available for [HEAD] and [stable] releases.
[HEAD]: https://quay.io/jzelinskie/chihaya-git
[stable]: https://quay.io/jzelinskie/chihaya
#### Testing
The following will run all tests and benchmarks.
Removing `-bench` will just run unit tests.
```sh
2017-12-29 17:12:17 -05:00
$ go test -bench $(go list ./...)
2017-01-28 16:02:14 -05:00
```
2019-10-17 14:59:44 +09:00
The Chihaya executable contains a command to end-to-end test a BitTorrent tracker.
See
```sh
$ chihaya --help
```
### Configuration
Configuration of Chihaya 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.
2016-02-25 19:17:30 -05:00
## Related projects
2016-08-16 23:51:24 -04:00
- [BitTorrent.org ](https://github.com/bittorrent/bittorrent.org ): a static website containing the BitTorrent spec and all BEPs
2016-02-25 19:17:30 -05:00
- [OpenTracker ](http://erdgeist.org/arts/software/opentracker ): a popular BitTorrent tracker written in C
- [Ocelot ](https://github.com/WhatCD/Ocelot ): a private BitTorrent tracker written in C++