Awesome
Ocelot
Ocelot is a BitTorrent tracker written in C++ for the Gazelle project. It supports requests over TCP and can only track IPv4 peers.
Ocelot Compile-time Dependencies
- GCC/G++ (11+ required; 11.4.0+ recommended)
- Boost (1.74.0+ required)
- libev (required)
- MySQL++ (3.2.0+ required)
- jemalloc (optional, but strongly recommended)
- TCMalloc (optional)
Installation
Debian Bookworm
sudo apt-get install \
build-essential \
cmake \
default-libmysqlclient-dev \
libboost-iostreams-dev \
libboost-system-dev \
libev-dev \
libjemalloc-dev \
libmysql++-dev \
netcat-traditional \
pkg-config
cmake -Wno-dev . -B build
make -C build
The Gazelle installation guides include instructions for installing Ocelot as a part of the Gazelle project.
Docker
docker build . -t ocelot
docker run -v $(pwd)/ocelot.conf:/srv/ocelot.conf ocelot
Standalone Installation
-
Prepare the build environment. (This must be re-executed when new source files are added).
cmake -Wno-dev . -B build
-
Create the following tables according to the Gazelle database schema:
torrents
torrents_leech_stats
users_freeleeches
users_leech_stats
users_main
xbt_client_whitelist
xbt_files_users
xbt_snatched
-
Edit
ocelot.conf
to your liking. -
Build Ocelot:
make -C build
Running Ocelot
Run-time options:
-c <path/to/ocelot.conf>
- Path to config file. If unspecified, the current working directory is used.-v
- Print queue status every time a flush is initiated.
You can run a test ocelot daemon alongside a production daemon by specifying
a separate configuration file, and setting readonly = true
. This will
prevent the database peer tables from being reset.
Signals
SIGHUP
- Reload configSIGUSR1
- Reload torrent list, user list and client whitelist