# @formatter:off # The interval communicated with BitTorrent clients informing them how # frequently they should announce in between client events. announce_interval: 30m # The interval communicated with BitTorrent clients informing them of the # minimal duration between announces. min_announce_interval: 15m # The network interface that will bind to an HTTP endpoint that can be # scraped by programs collecting metrics. # # /metrics serves metrics in the Prometheus format # /debug/pprof/{cmdline,profile,symbol,trace} serves profiles in the pprof format metrics_addr: "0.0.0.0:6880" # This block defines named configurations of network listeners (frontends). # At least one listener should be provided. frontends: # This block defines configuration for the tracker's HTTP interface. # If you do not wish to run this, delete this section. - name: http config: # The network interface that will bind to an HTTP server for serving # BitTorrent traffic. addr: "0.0.0.0:6969" # Mark this frontend as HTTPS server for serving # BitTorrent traffic. If set, tls_cert_path and tls_key_path are required. tls: false # The path to the required files to listen via HTTPS. tls_cert_path: "" tls_key_path: "" # Enable SO_REUSEPORT to allow starting multiple mochi instances with the same HTTP(S) port. # You can also use this parameter to define two or more listeners or separate processes # for the same address and port, and (possibly) increase throughput (faster queue processing # because of multiple processes). reuse_port: true # For http frontend it's number of concurrent connections. # Default is 262144. workers: 0 # The timeout durations for HTTP requests. read_timeout: 5s write_timeout: 5s # When true, persistent connections will be allowed. Generally this is not # useful for a public tracker, but helps performance in some cases (use of # a reverse proxy, or when there are few clients issuing many requests). enable_keepalive: false idle_timeout: 30s # Whether to time requests. # Disabling this should increase performance/decrease load. enable_request_timing: false # An array of routes to listen on for announce requests. This is an option # to support trackers that do not listen for /announce or need to listen # on multiple routes. # # This supports named parameters and catch-all parameters as described at # https://github.com/julienschmidt/httprouter#named-parameters announce_routes: - "/announce" # - "/announce.php" # An array of routes to listen on for scrape requests. This is an option # to support trackers that do not listen for /scrape or need to listen # on multiple routes. # # This supports named parameters and catch-all parameters as described at # https://github.com/julienschmidt/httprouter#named-parameters scrape_routes: - "/scrape" # - "/scrape.php" # An array of routes to listen ping requests. # Used just to ensure if server is operational. Returns nothing, # just HTTP 200 without body. Listens both GET and HEAD HTTP methods. # HEAD method just checks http server, GET checks all hooks, # which support ping ping_routes: - "/ping" # When not enabled, tracker will use only address from which client connected to tracker. # When enabled, the IP address that clients advertise as their IP address will # be appended as announce candidate. allow_ip_spoofing: false # When enabled, IPs from private, local and loopback subnets will be ignored filter_private_ips: false # The HTTP Header containing the IP address of the client. # This is only necessary if using a reverse proxy. real_ip_header: "x-real-ip" # The maximum number of peers returned for an individual request. max_numwant: 100 # The default number of peers returned for an individual request. default_numwant: 50 # The maximum number of infohashes that can be scraped in one request. max_scrape_infohashes: 50 # This block defines configuration for the tracker's UDP interface. # If you do not wish to run this, delete this section. - name: udp config: # The network interface that will bind to a UDP server for serving # BitTorrent traffic. addr: "0.0.0.0:6969" # Enable SO_REUSEPORT to allow starting multiple mochi instances with the same UDP port. # You can also use this parameter to define two or more listeners or separate processes # for the same address and port, and (a little) increase throughput (faster queue processing # because of multiple 'workers'). reuse_port: true # For udp frontend it's number of listen goroutines to be used with reuse_port option. # Default is 1. workers: 1 # The leeway for a timestamp on a connection ID. max_clock_skew: 10s # The key used to encrypt connection IDs. private_key: "paste a random string here that will be used to hmac connection IDs" # Whether to time requests. # Disabling this should increase performance/decrease load. enable_request_timing: false # When not enabled, tracker will use only address from which client connected to tracker. # When enabled, the IP address that clients advertise as their IP address will # be appended as announce candidate. allow_ip_spoofing: false # When enabled, IPs from private, local and loopback subnets will be ignored filter_private_ips: false # The maximum number of peers returned for an individual request. max_numwant: 100 # The default number of peers returned for an individual request. default_numwant: 50 # The maximum number of infohashes that can be scraped in one request. max_scrape_infohashes: 50 # This block defines configuration used for the storage of peer data. storage: name: memory config: # The frequency which stale peers are removed. # This balances between # - collecting garbage more often, potentially using more CPU time, but potentially using less memory (lower value) # - collecting garbage less frequently, saving CPU time, but keeping old peers long, thus using more memory (higher value). gc_interval: 3m # The amount of time until a peer is considered stale. # To avoid churn, keep this slightly larger than `announce_interval` peer_lifetime: 31m # The number of partitions data will be divided into in order to provide a # higher degree of parallelism. shard_count: 1024 # The interval at which metrics about the number of infohashes and peers # are collected and posted to Prometheus. prometheus_reporting_interval: 1s # This block defines configuration used for middleware executed before a # response has been returned to a BitTorrent client. posthooks: [] prehooks: # - name: jwt # config: # header: "authorization" # issuer: "https://issuer.com" # audience: "https://some.issuer.com" # jwk_set_url: "https://issuer.com/keys" # jwk_set_update_interval: 5m # handle_announce: true # handle_scrape: false # # - name: client approval # config: # whitelist: # - "OP1011" # blacklist: # - "OP1012" # # - name: interval variation # config: # modify_response_probability: 0.2 # max_increase_delta: 60 # modify_min_interval: true # # This block defines configuration used for torrent approval, it requires to be given # hashes for whitelist or for blacklist. Hashes are hexadecimal-encoaded. # - name: torrent approval # config: # initial_source: list # Save data provided by source in storage above # preserve: false # configuration: # hash_list: # - "a1b2c3d4e5a1b2c3d4e5a1b2c3d4e5a1b2c3d4e5" # true - whitelist mode, false - blacklist # invert: false # Name of storage context where store hash list # storage_ctx: APPROVED_HASH