chihaya: # 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 an instance of the Prometheus time series database. # For more info see: https://prometheus.io prometheus_addr: "0.0.0.0:6880" # This block defines configuration for the tracker's HTTP interface. # If you do not wish to run this, delete this section. http: # The network interface that will bind to an HTTP server for serving # BitTorrent traffic. Remove this to disable the non-TLS listener. addr: "0.0.0.0:6969" # The network interface that will bind to an HTTPS server for serving # BitTorrent traffic. If set, tls_cert_path and tls_key_path are required. https_addr: "" # The path to the required files to listen via HTTPS. tls_cert_path: "" tls_key_path: "" # 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" # When enabled, the IP address used to connect to the tracker will not # override the value clients advertise as their IP address. allow_ip_spoofing: 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. udp: # The network interface that will bind to a UDP server for serving # BitTorrent traffic. addr: "0.0.0.0:6969" # 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 enabled, the IP address used to connect to the tracker will not # override the value clients advertise as their IP address. allow_ip_spoofing: 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 redis storage. # storage: # name: redis # 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 interval at which metrics about the number of infohashes and peers # # are collected and posted to Prometheus. # prometheus_reporting_interval: 1s # # The amount of time until a peer is considered stale. # # To avoid churn, keep this slightly larger than `announce_interval` # peer_lifetime: 31m # # The address of redis storage. # redis_broker: "redis://pwd@127.0.0.1:6379/0" # # The timeout for reading a command reply from redis. # redis_read_timeout: 15s # # The timeout for writing a command to redis. # redis_write_timeout: 15s # # The timeout for connecting to redis server. # redis_connect_timeout: 15s # This block defines configuration used for middleware executed before a # response has been returned to a BitTorrent client. prehooks: #- name: jwt # options: # issuer: "https://issuer.com" # audience: "https://chihaya.issuer.com" # jwk_set_url: "https://issuer.com/keys" # jwk_set_update_interval: 5m #- name: client approval # options: # whitelist: # - "OP1011" # blacklist: # - "OP1012" #- name: interval variation # options: # 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 # options: # whitelist: # - "a1b2c3d4e5a1b2c3d4e5a1b2c3d4e5a1b2c3d4e5" # blacklist: # - "e1d2c3b4a5e1b2c3b4a5e1d2c3b4e5e1d2c3b4a5"