
So I was uh, downloading some linux isos, like usual. It was going slowly, so I opened up the Trackers
tab in qBittorrent and saw the following:
Most of the trackers were totally dead. Either the hosts were down or the domains weren’t being used.
That got me thinking. What if I picked up one of these dead domains? How many clients would try to connect?
What are trackers for, anyways?
A tracker is a core component of the BitTorrent protocol. Trackers are the services that point you to other peers for the torrent. Without trackers, there would be no one to share the file with.
Obviously this represents a major source of centralization in the torrent protocol. If your trackers aren’t maintained – or if they get forced offline by certain industry organizations – you’re out of luck.
We have an alternative, called Mainline DHT, which performs a more decentralized lookup of peers based on infohash alone. DHT isn’t perfect, though. It relies on bootstrap nodes and is vulnerable to Sybil attacks. And in the example of my poorly-served torrent, DHT wasn’t surfacing any peers, regardless.
Hosting a tracker
Looking through the list of trackers marked “host not found”, I noticed udp://open.demonii.si:1337/announce
was available.
I bought the domain through Dynadot (one of the few .si domain registrars), then spun up a quick anonymous VPS. I mapped the domain to the VPS, then set up opentracker, the most widely used and robust torrent tracker software.
Instructions for Ubuntu 24.04:
sudo apt install gcc-14 g++-14 build-essential zlib1g-dev
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-14 14
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-14 14
Follow the readme to compile, first the dependency libowfat (a GPL reimplementation of some of dan bernstein’s C libraries) and then opentracker itself.
cvs -d :pserver:cvs@cvs.fefe.de:/cvs -z9 co libowfat
cd libowfat
make
cd ..
git clone git://erdgeist.org/opentracker
cd opentracker
make
Finally, a quick systemd unit file to daemonize this service:
[Unit]
Description=opentracker
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User=opentracker
Group=opentracker
WorkingDirectory=/var/lib/opentracker
ExecStart=/home/opentracker/opentracker/opentracker -p 1337 -P 1337 \
-d /var/lib/opentracker -u opentracker
Restart=on-failure
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target
What did I find?
Before even starting opentracker, I saw a flood of traffic against UDP port 1337:
I then started the tracker. After about an hour, it peaked at about 1.7 million distinct torrents across 3.1 million peers!
Response from http://open.demonii.si:1337/stats?mode=everything
:
<?xml version="1.0" encoding="UTF-8"?>
<stats>
<tracker_id>273419141</tracker_id>
<version>
https://erdgeist.org/gitweb/opentracker/commit/?id=b20b0b89264e9d28ab873b8b1cc9ba73cdb58aeb
</version>
<uptime>10313</uptime>
<torrents>
<count_mutex>1735538</count_mutex>
<count_iterator>1735523</count_iterator>
</torrents>
<peers>
<count>3155701</count>
</peers>
<seeds>
<count>1342504</count>
</seeds>
<completed>
<count>244224</count>
</completed>
<connections>
<tcp>
<accept>21532</accept>
<announce>20219</announce>
<scrape>263</scrape>
</tcp>
<udp>
<overall>58843612</overall>
<connect>18321703</connect>
<announce>33160261</announce>
<scrape>3211543</scrape>
<missmatch>4116689</missmatch>
</udp>
<livesync>
<count>0</count>
</livesync>
</connections>
<debug>
<renew>
<count interval="00">12216193</count>
<count interval="01">1463740</count>
<count interval="02">536527</count>
<count interval="03">284756</count>
<count interval="04">243276</count>
<count interval="05">93237</count>
<count interval="06">63618</count>
<count interval="07">53934</count>
<count interval="08">36851</count>
<count interval="09">28990</count>
<count interval="10">352150</count>
<count interval="11">56610</count>
<count interval="12">24557</count>
<count interval="13">21628</count>
<count interval="14">24932</count>
<count interval="15">63250</count>
<count interval="16">38174</count>
<count interval="17">33730</count>
<count interval="18">27827</count>
<count interval="19">27166</count>
<count interval="20">22463</count>
<count interval="21">17820</count>
<count interval="22">17248</count>
<count interval="23">17276</count>
<count interval="24">17825</count>
<count interval="25">20144</count>
<count interval="26">27987</count>
<count interval="27">792338</count>
<count interval="28">1579577</count>
<count interval="29">1625355</count>
<count interval="30">2229105</count>
<count interval="31">1670317</count>
<count interval="32">1581574</count>
<count interval="33">846355</count>
<count interval="34">96656</count>
<count interval="35">68160</count>
<count interval="36">47801</count>
<count interval="37">36705</count>
<count interval="38">32256</count>
<count interval="39">27535</count>
<count interval="40">27593</count>
<count interval="41">27640</count>
<count interval="42">24090</count>
<count interval="43">20762</count>
<count interval="44">17880</count>
</renew>
<http_error>
<count code="302 Redirect">0</count>
<count code="400 Parse Error">0</count>
<count code="400 Invalid Parameter">55</count>
<count code="400 Invalid Parameter (compact=0)">0</count>
<count code="400 Not Modest">0</count>
<count code="402 Payment Required">0</count>
<count code="403 Access Denied">0</count>
<count code="404 Not found">883</count>
<count code="500 Internal Server Error">0</count>
</http_error>
<mutex_stall>
<count>0</count>
</mutex_stall>
</debug>
</stats>
Is this legal?
Maybe.
When the recording industry and other litigious organizations go after torrent trackers, they’re mainly chasing down the public-facing parts of the system. The legal decisions against websites like The Pirate Bay hinge on how they highlight popular movies, sell ads, and offer .torrent files. This is all taken as evidence of inducement, meaning the intentional promotion of copyright infringement.
Does hosting tracker infrastructure, unadvertised, count as “inducement”? It’s a harder case to make. I’m aware that many torrents, both freely available and copyrighted, use this tracker. But it would be more difficult to prove intent here.
Regardless, I was spooked. I thought through my chain of events and realized I had already fucked up by paying for the domain with a credit card. I shut down the VPS and deleted the domain quickly after confirming it works.
So… the domain is available now. It’s quite easy to find unclaimed domains like this. If you want to do a public service, open.demonii.si and others are up for registration…