Files
kindexr/deploy/kindexr.example.yaml
T
enki bac30ecfdf add SOCKS5/Tor/I2P proxy support and improve network UI clarity
- NetworkConfig/ProxyConfig in config.rs: mode=direct|tor|i2p|socks5
  with socks5_addr() helper that maps tor→9050, i2p→4446, socks5→url
- build_http_client() routes reqwest through SOCKS5 when configured
- build_nostr_opts() routes nostr-sdk WebSocket connections through
  SOCKS5 using Connection::new().proxy(addr)
- Shared http_client passed to Enricher and BlossomClient so proxy
  applies to TMDB and Blossom blob fetches as well
- nostr_opts passed to Reader, WotBuilder, ProfileFetcher
- Dashboard: network status card showing proxy mode, listen address,
  IPv4/IPv6; relay section now shows X connected / Y configured
- Publishers: rename vouch form to "Override publisher trust", add
  clear note that this is local-only (not broadcast to Nostr), explain
  WoT comes from NIP-02 kind 3; rename column headers for clarity
- Example and dev configs updated with network.proxy section
2026-05-18 21:46:09 -07:00

88 lines
3.1 KiB
YAML

# kindexr config — copy to /etc/kindexr/config.yaml and edit as needed.
server:
listen: "127.0.0.1:9117"
base_url: "https://kindexr.example.com" # used in Torznab feed magnet links
database:
path: "/var/lib/kindexr/kindexr.db"
logging:
level: "info" # debug | info | warn | error
format: "json" # json | text
# Nostr relays to subscribe to for NIP-35 (kind 2003) events.
relays:
- "wss://relay.damus.io"
- "wss://nos.lol"
- "wss://relay.primal.net"
- "wss://nostr.mom"
- "wss://relay.snort.social"
- "wss://sovbit.host"
backfill_days: 365 # how far back to go on first connect per relay
negentropy_bootstrap: true
# Curation / trust settings
curation:
wot_only: false # if true, drop events from pubkeys outside your WoT graph
follow_depth: 2
operator_pubkey: "" # your npub or hex pubkey — defines WoT root
allowlist: []
blocklist: []
curation_sets: [] # kind 30004 naddr URIs to subscribe to
exclude_categories: [6000, 6010, 6020, 6030, 6040, 6050, 6060, 6070, 6080, 6090]
auto_block_threshold: 5 # auto-block a publisher after this many reports
# TMDB enrichment — title → TMDB ID lookup (optional)
tmdb:
enabled: true
api_key: "${TMDB_API_KEY}" # or set KINDEXR_TMDB.API_KEY env var
cache_ttl: "168h"
# Health scraping (off by default — can be rude to private trackers)
health:
enabled: false
method: "dht" # dht | tracker | both
refresh_interval: "30m"
# Blossom binary bridge (BUD-01)
# When enabled, kindexr will:
# - Cache .torrent files linked via `url` tags in incoming NIP-35 events
# - Upload .torrent files to this server before publishing your own NIP-35 events
# - Serve cached files at /torrent/<info_hash>.torrent for *arr apps
# The server can be self-hosted (e.g. https://github.com/hzrd149/blossom-server).
blossom:
enabled: false
server: "https://blossom.example.com"
# Networking — proxy configuration for all outbound connections
# (Nostr relay WebSockets, TMDB API, Blossom blob fetches)
# mode: direct | tor | i2p | socks5
# direct — no proxy (default)
# tor — SOCKS5 via 127.0.0.1:9050 (Tor daemon must be running)
# i2p — SOCKS5 via 127.0.0.1:4446 (I2P SAM/SOCKS proxy must be running)
# socks5 — explicit SOCKS5 proxy; set url to socks5://host:port
network:
proxy:
mode: "direct"
url: "" # only used when mode=socks5, e.g. socks5://127.0.0.1:1080
# Publisher — publish your own torrents as NIP-35 events
publisher:
enabled: false
outbox: # relays to publish your events to
- "wss://sovbit.host"
- "wss://relay.damus.io"
publish_delay_secs: 1800 # 30 min hold before publishing
identity:
nsec: "" # local signing key (bech32 nsec or hex); run: kindexr-cli identity init
bunker_url: "" # NIP-46 bunker URI (takes precedence over nsec when set)
qbittorrent:
url: "http://127.0.0.1:8080"
username: "admin"
password: "${QBIT_PASSWORD}"
poll_interval_secs: 60
categories:
- "publish-nostr" # only publish torrents with this category label