docker-scripts/linux/ecosystem/opentracker/README.md
2022-06-21 13:00:27 +03:00

166 lines
5.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# opentracker-docker
Docker image from scratch, customizable, simple and small, for the [opentracker project](https://erdgeist.org/arts/software/opentracker/), a open and free bittorrent tracker.
## How to use this image
This image compile `Opentracker` following [build instructions](https://erdgeist.org/arts/software/opentracker/#build-instructions), but using [GCC](https://gcc.gnu.org/)'s [`-static`](https://gcc.gnu.org/onlinedocs/gcc/Link-Options.html) link option. The `-static` option links a program statically, in other words it does not require a dependency on dynamic libraries at runtime in order to run.
This image is designed to be used in a micro-service environment. There are three versions of the image you can choose from.
The `open` tag contains a Opentracker builded with defaults options and run in [open mode](https://erdgeist.org/arts/software/opentracker/#invocation).
The `blacklist` and `whitelist` tags contains a Opentracker builded with `-DWANT_ACCESSLIST_BLACK` and `-DWANT_ACCESSLIST_WHITE` respectively and run in [closed mode](https://erdgeist.org/arts/software/opentracker/#closed-mode).
## Using in `open` Mode
The image has `/bin/opentracker` binary as [ENTRYPOINT](https://docs.docker.com/engine/reference/builder/#entrypoint) and `-f /etc/opentracker/opentracker.conf` as default [CMD](https://docs.docker.com/engine/reference/builder/#exec-form-entrypoint-example).
So you can run:
```bash
docker run \
--rm \
-d \
--name opentracker \
-p 6969:6969/udp -p 6969:6969 \
wiltonsr/opentracker:open
```
Or with `docker-compose.yml` file:
```yml
version: "3"
services:
tracker:
image: wiltonsr/opentracker:open
container_name: opentracker
restart: always
ports:
- 6969:6969/tcp
- 6969:6969/udp
```
```bash
docker-compose up
```
Now you can access [Opentracker Stats page](https://erdgeist.org/arts/software/opentracker/#statistics) at http://localhost:6969/stats from your host system.
### Debug Mode
All `tags` also contains `/bin/opentracker.debug` binary. So you could run Opentracker in `debug mode` overriding default `ENTRYPOINT`.
```bash
docker run \
--rm \
-d \
--name opentracker \
-p 6969:6969/udp -p 6969:6969 \
--entrypoint="/bin/opentracker.debug" \
wiltonsr/opentracker:open \
-f /etc/opentracker/opentracker.conf
```
It is also possible to override the default command with:
```bash
docker run \
--rm \
--name opentracker \
-p 6969:6969/udp -p 6969:6969 \
wiltonsr/opentracker:open \
-h
```
You will get:
```text
Usage: /bin/opentracker [-i ip] [-p port] [-P port] [-r redirect] [-d dir] [-u user] [-A ip] [-f config] [-s livesyncport]
-f config include and execute the config file
-i ip specify ip to bind to (default: *, you may specify more than one)
-p port specify tcp port to bind to (default: 6969, you may specify more than one)
-P port specify udp port to bind to (default: 6969, you may specify more than one)
-r redirecturlspecify url where / should be redirected to (default none)
-d dir specify directory to try to chroot to (default: ".")
-u user specify user under whose privileges opentracker should run (default: "nobody")
-A ip bless an ip address as admin address (e.g. to allow syncs from this address)
Example: ./opentracker -i 127.0.0.1 -p 6969 -P 6969 -f ./opentracker.conf -i 10.1.1.23 -p 2710 -p 80
```
### Configuration file
All `tags` use default configuration file from [here](https://erdgeist.org/gitweb/opentracker/tree/opentracker.conf.sample).
Some adjusts are made:
- `tracker.user` is setted to `opentracker` [USER](https://docs.docker.com/engine/reference/builder/#user) in all tags.
- `access.whitelist` is setted to `/etc/opentracker/whitelist` in `whitelist` tag.
- `access.blacklist` is setted to `/etc/opentracker/blacklist` in `blacklist` tag.
You could override the default configuration using a [VOLUME](https://docs.docker.com/engine/reference/builder/#volume):
```bash
docker run \
--rm \
--name opentracker \
-v $PWD/local-opentracker.conf:/etc/opentracker/opentracker.conf \
-p 6969:6969/udp -p 6969:6969 \
wiltonsr/opentracker:open
```
## Using in `closed` Mode
If you want to control what torrents to track or not to track. You could use opentracker with one of the accesslist-options `tags`, you can control which torrents are tracked by providing a file that contains a list of human readable `info_hashes`. An example whitelist file would look like
```text
0123456789abcdef0123456789abcdef01234567
890123456789abcdef0123456789abcdef012345
```
### Compilation
Opentracker provides accesslist options, `-DWANT_ACCESSLIST_BLACK` and `-DWANT_ACCESSLIST_WHITE`, but this options are `exclusive`. Trying to compile it with both options will resulte in this error:
```bash
cc -c -o opentracker.o -I../libowfat -Wall -pipe -Wextra -O3 -DWANT_ACCESSLIST_BLACK -DWANT_ACCESSLIST_WHITE -DWANT_FULLSCRAPE opentracker.c
In file included from opentracker.c:36:
ot_accesslist.h:10:4: error: #error WANT_ACCESSLIST_BLACK and WANT_ACCESSLIST_WHITE are exclusive.
10 | # error WANT_ACCESSLIST_BLACK and WANT_ACCESSLIST_WHITE are exclusive.
| ^~~~~
make: *** [Makefile:81: opentracker.o] Erro 1
```
Because of that there are two another tags, `blacklist` and `whitelist`, which were compiled with the respective options.
### Whitelist Mode
```bash
docker run \
--rm \
--name opentracker \
-v $PWD/local-whitelist:/etc/opentracker/whitelist \
-p 6969:6969/udp -p 6969:6969 \
wiltonsr/opentracker:whitelist
```
### Blacklist Mode
```bash
docker run \
--rm \
--name opentracker \
-v $PWD/local-blacklist:/etc/opentracker/blacklist \
-p 6969:6969/udp -p 6969:6969 \
wiltonsr/opentracker:blacklist
```
### Reloading file changes
To make opentracker reload it's `white`/`blacklist` after changes, send a `SIGHUP` unix signal.
```bash
docker kill --signal="SIGHUP" opentracker
```