summaryrefslogtreecommitdiff
path: root/stories/projects/opentracker.rst
diff options
context:
space:
mode:
Diffstat (limited to 'stories/projects/opentracker.rst')
-rw-r--r--stories/projects/opentracker.rst136
1 files changed, 136 insertions, 0 deletions
diff --git a/stories/projects/opentracker.rst b/stories/projects/opentracker.rst
new file mode 100644
index 0000000..294d2c9
--- /dev/null
+++ b/stories/projects/opentracker.rst
@@ -0,0 +1,136 @@
1.. link:
2.. description: is a highly scalable tracker software for the bittorrent protocol, currently in use on the largest bulk trackers around.
3.. tags: project
4.. date: 2015/02/19 19:10:08
5.. title: opentracker
6.. subtitle: An open and free bittorrent tracker
7.. slug: ../arts/software/opentracker/index
8.. prio: 1000
9
10.. contents::
11 :depth: 1
12 :class: ezjail-toc
13
14----
15
16.. image:: opentracker_beta3.png
17 :align: left
18 :width: 200px
19
20Overview
21========
22
23*opentracker* is a open and free `bittorrent tracker <http://wiki.theory.org/BitTorrentSpecification>`_ project. It aims for minimal resource usage and is intended to run at your wlan router. Currently it is deployed as an open and free tracker instance. Read our `free and open tracker blog <http://opentracker.blog.h3q.com/>`_ and announce your torrents there (but do not hesitate to setup your own free trackers!).
24
25----
26
27Version History
28===============
29
30*opentracker* is currently only available from CVS. A tar ball will be rolled soon. Use ``git clone git://erdgeist.org/opentracker`` or the legacy view ``cvs -d :pserver:anoncvs@cvs.erdgeist.org:/home/cvsroot co opentracker`` with an empty passwort to check it out. An `*opentracker* gitweb </gitweb/opentracker/>`_ and an `*opentracker* cvsweb (deprecated) </cvsweb/opentracker/>`_ are available.
31
32----
33
34Build instructions
35==================
36
37Until *opentracker* is declared official release ready, the way to install it is::
38
39 cvs -d :pserver:cvs@cvs.fefe.de:/cvs -z9 co libowfat
40 cd libowfat
41 make
42 cd ..
43 # LEGACY: cvs -d:pserver:anoncvs@cvs.erdgeist.org:/home/cvsroot co opentracker
44 git clone git://erdgeist.org/opentracker
45 cd opentracker
46 make
47
48That should leave you with an exectuable called ``opentracker`` and one debug version ``opentracker.debug``.
49
50Some variables in *opentracker*'s Makefile control features and behaviour of *opentracker*. Here they are:
51
52* ``-DWANT_V6`` makes *opentracker* an IPv6-only tracker. More in the v6-section below.
53* *opentracker* can deliver gzip compressed full scrapes. Enable this with ``-DWANT_COMPRESSION_GZIP`` option.
54* Normally *opentracker* tracks any torrent announced to it. You can change that behaviour by enabling ONE of ``-DWANT_ACCESSLIST_BLACK`` or ``-DWANT_ACCESSLIST_WHITE``. Note, that you have to provide a whitelist file in order to make *opentracker* do anything in the latter case. More in the closed mode section below.
55* *opentracker* can run in a cluster. Enable this behaviour by enabling ``-DWANT_SYNC_LIVE``. Note, that you have to configure your cluster before you can use *opentracker* when this option is on.
56* Some statistics *opentracker* can provide are sensitive. You can restrict access to these statistics by enabling ``-DWANT_RESTRICT_STATS``. See section statistics for more details.
57* Fullscrapes is bittorrent's way to query a tracker for all tracked torrents. Since it's in the standard, it is enabled by default. Disable it by commenting out ``-DWANT_FULLSCRAPE``.
58* By default *opentracker* will only allow the connecting endpoint's IP address to be announced. Bittorrent standard allows clients to provide an IP address in its query string. You can make *opentracker* use this IP address by enabling ``-DWANT_IP_FROM_QUERY_STRING``.
59* Some experimental or older, deprecated features can be enabled by the ``-DWANT_LOG_NETWORKS``, ``-DWANT_SYNC_SCRAPE`` or ``-DWANT_IP_FROM_PROXY`` switch.
60* Currently there is some packages for some linux distributions and OpenBSD around, but some of them patch Makefile and default config to make *opentracker* closed by default. I explicitly don't endorse those packages and will not give support for problems stemming from these missconfigurations.
61
62----
63
64Invocation
65==========
66
67*opentracker* can be run by just typing ``./opentracker``. This will make *opentracker* bind to ``0.0.0.0:6969`` and happily serve all torrents presented to it. If ran as root, *opentracker* will immediately chroot to . (or any directory given with the -d option) and drop all priviliges after binding to whatever tcp or udp ports it is requested.
68
69When options were few, *opentracker* used to accept all of them from command line. While this still is possible for most options, using them is quite unhandy: an example invocation would look like ``./opentracker -i 23.23.23.7 -p 80 -P 80 -p 6969 -i 23.23.23.8 -p 80 -r http://www.mytorrentsite.com/ -d /usr/local/etc/opentracker -w mytorrents.list -A 127.0.0.1``.
70
71*opentracker* now uses a config file that you can provide with the ``-f`` switch.
72
73----
74
75Config file
76===========
77
78*opentracker*'s config file is very straight forward and a very well documented example config can be found in the file `opentracker.conf.sample </gitweb/opentracker/tree/opentracker.conf.sample>`_.
79
80----
81
82Closed mode
83===========
84
85While personally I like my tracker to be open, I can see that there's people that want to control what torrents to track – or not to track. If you've compiled *opentracker* with one of the accesslist-options (see Build instructions above), 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 ::
86
87 0123456789abcdef0123456789abcdef01234567
88 890123456789abcdef0123456789abcdef012345
89
90To make *opentracker* reload it's white/blacklist, send a ``SIGHUP`` unix signal.
91
92----
93
94Statistics
95==========
96
97Given its very network centric approach, talking to *opentracker* via http comes very naturally. Besides the ``/announce`` and ``/scrape`` paths, there is a third path you can access the tracker by: ``/stats``. This request takes parameters, for a quick overview just inquire `/stats?mode=everything``.
98
99Statistics have grown over time and are currently not very tidied up. Most modes were written to dump legacy-SNMP-style blocks that can easily be monitored by `MRTG <http://oss.oetiker.ch/mrtg/>`_. These modes are: ``peer``, ``conn``, ``scrp``, ``udp4``, ``tcp4``, ``busy``, ``torr``, ``fscr``, ``completed``, ``syncs``. I'm not going to explain these here.
100
101The ``statedump`` mode dumps non-recreatable states of the tracker so you can later reconstruct an *opentracker* session with the -l option. This is beta and wildly undocumented.
102
103You can inquire *opentracker*'s version (i.e. CVS versions of all its objects) using the ``version`` mode.
104
105----
106
107Philosophy
108==========
109
110A torrent tracker basically is an http-Server that collects all clients ip addresses into pools sorted by one of the request strings parameters and answers all other clients that specified this exact same parameter a list of all other recent clients. All technologies to implement this are around for more than twenty years. Still most implementations suck performancewise.
111
112Utilizing the highly scalable server framework from `libowfat <http://www.fefe.de/libowfat/>`_, *opentracker* can easily serve multiple thousands of requests on a standard plastic WLAN-router, limited only by your kernels capabilities ;)
113
114One important design decision of *opentracker* was to not store any data persistently. This reduces wear&tear on hard disks and eliminates problems with corrupt databases.
115
116----
117
118Author
119======
120
121*opentracker* was written by `Dirk Engling <mailto:erdgeist@erdgeist.org>`_, who likes to hear from happy customers.
122
123----
124
125Thanks
126======
127
128A project like this one is impossible without lots of help from friends. It is powered by beer, much energy and love, batches of bug reports and support on the operating system integration side by denis, taklamakan, cryx, supergrobi and – his libowfat always on the bleeding edge – Fefe. Thanks are also due to Hannes for helping me out with designing internal data representation.
129
130----
131
132License
133=======
134
135*opentracker* is considered `beer ware </beerware.html>`_.
136