#tracker #peer #zero-net #server #numbers #keep #track

nightly app zeronet_tracker

A ZeroNet tracker written in Rust

11 releases

0.1.23 Jun 14, 2022
0.1.22 May 26, 2022
0.1.17 Apr 23, 2022
0.1.16 Mar 12, 2022
0.1.10 Jun 27, 2021

#1 in #zero-net

WTFPL and GPL-3.0-or-later

50KB
791 lines

Build Tests Coverage Documentation

ZeroNet Tracker

This is a ZeroNet tracker written in Rust. It can keep track of a number of different peer types.

Installation

Prerequisites

  • Copy of the source code
  • Cargo + rustc nightly

Steps

Run cargo +nightly install --path . in the local repository root

Roadmap

Peertypes:

  • IPV4 & IPV6
  • Onion v2 & v3
  • I2P b32

Features:

  • Remove dead peers
  • Remove stale hashes
  • Server
    • Overview showing: version, uptime, connections, peers, hashes
    • Explore hashes
      • Option to crawl ZeroSites for hashes
    • Explore peers
    • Show log (this should not be publicly accessible)
  • SQLite
    • In memory
    • On file
  • Metrics
    • Endpoint for Prometheus scraper

Building

This ZeroNet Tracker depends on the ZeroNet Protocol library which is available from the Cratez Rust Registry, information on how to add Cratez to your cargo's registry configuration can be found on the site.

Optional Features

Server

The ZeroNet Tracker can optionally be compiled with the server flag. If enabled a server using Rocket and Maud will make useful information about the status of the tracker available on localhost:8000, or at the ROCKET_PORT environment variable.

It should be perfectly safe to make this available outside of your network as long as the dependencies used in this project are sound. Be aware that with low numbers of peers this information combined with a ZeroSites crawler could be used to deanonymize peers.

SQL

Without this feature the tracker will keep all of its data in memory and it is lost upon restart. Since the retention is under one hour and the tracker is highly unlikely to crash there is little benefit to changing this behaviour. Should you want retention between restarts of the tracker then you can enable the sql feature and set a database_file path in the configuration. The tracker then uses a peerdb implementation based on rusqlite that writes to the given path.

Metrics

If you want to collect metrics from the ZeroNet Tracker in Prometheus you can enable the metrics feature which extends the server feature with a page at /metrics that serves some statistics about the program ready for Prometheus to ingest.

Dependencies

~8–25MB
~384K SLoC