btracker 0.3.8

βtracker is a social BitTorrent aggregator based on the aquatic-crawler FS index and Rocket web-framework
# btracker

![Linux](https://github.com/yggverse/btracker/actions/workflows/linux.yml/badge.svg)
[![Dependencies](https://deps.rs/repo/github/yggverse/btracker/status.svg)](https://deps.rs/repo/github/yggverse/btracker)
[![crates.io](https://img.shields.io/crates/v/btracker.svg)](https://crates.io/crates/btracker)

βtracker is a social BitTorrent aggregator based on the [aquatic-crawler](https://github.com/yggverse/aquatic-crawler) FS index and [Rocket](https://rocket.rs) web-framework.

## Screenshots

See the [Wiki](https://github.com/YGGverse/btracker/wiki/Screenshots) page

## Live

* `http://[302:68d0:f0d5:b88d::fdb]` - [Yggdrasil]https://yggdrasil-network.github.io/ only peers BitTorrent tracker
    * [http://tracker.ygg]http://tracker.ygg/ - [Alfis DNS]https://github.com/Revertron/Alfis alias

## Roadmap

* [x] Listing (index) page
    * [x] Basic metainfo
    * [x] Pagination
    * [x] Search
        * [x] multiple keyword support
            [ ] configurable split separators
        * [x] torrent meta match
            * [x] name
            * [x] comment
            * [x] created by
            * [x] publisher
            * [x] publisher URL
            * [x] announce
            * [x] announce list
            * [x] file names
        * [ ] relevance ranking
        * [ ] fast in-memory index
        * [ ] search options form
    * [ ] optional sort order (time indexed by default)
* [x] Details page
    * [x] files
        * [x] clickable content preview
    * [x] name
    * [x] comment
    * [x] created at
    * [ ] created by
    * [ ] publisher
    * [ ] publisher URL
    * [ ] announce
    * [ ] announce list
* [x] Common features
    * [x] scrape peers/seeders/leechers (by the [btracker-scrape]https://github.com/yggverse/btracker-scrape)
        * [x] UDP
        * [ ] TCP
    * [x] download
        * [x] magnet link
        * [ ] torrent file
            * [x] from the `public` location
            * [ ] filtered trackers binary
* [x] RSS feed

## Install

### Stable

``` bash
cargo install btracker
```

### Repository

1. `git clone https://github.com/yggverse/btracker.git && cd btracker`
2. `cargo build --release`
3. `sudo install target/release/btracker /usr/local/bin/btracker`
    * copy `public` & `templates` folders to the [server destination]https://rocket.rs/guide/v0.5/deploying/

## Usage

``` bash
btracker --public=/path/to/aquatic-crawler/preload\
         --scrape=udp://127.0.0.1:6969\
         --tracker=udp://[302:68d0:f0d5:b88d::fdb]:6969\
         --tracker=udp://tracker.ygg:6969
```
* The `--public` argument specifies the location of the crawled torrents (see [aquatic-crawler]https://github.com/yggverse/aquatic-crawler)
    * make sure this location also contains a copy (or symlink) of the `/public` files from this crate (see the [Rocket deploying specification]https://rocket.rs/guide/v0.5/deploying/)
* The `--scrape` argument is optional and enables statistics for peers, seeders, and leechers
    * it is recommended to use the local address for faster performance
    * this argument supports multiple definitions for both the IPv4 and IPv6 protocols, parsed from the URL value
    * take a look at the `--udp` option if you want to customize the default binding for UDP scrapes
* Define as many `--tracker`(s) as required
* Append `RUST_LOG=debug` for detailed information output; use `--debug` to configure as `rocket::Config::debug_default()`
* See the project [Wiki]https://github.com/YGGverse/btracker/wiki for more details (including [systemd]https://github.com/YGGverse/btracker/wiki/Systemd and [nginx]https://github.com/YGGverse/btracker/wiki/Nginx examples)

### Options

``` bash
btracker --help
```

## See also

* [btracker-gemini]https://github.com/yggverse/btracker-gemini - βtracker implementation for the [Gemini protocol]https://geminiprotocol.net