Files
kindexr/deploy/kindexr.example.yaml
T
enki c6b9b676a4 add Deluge Web UI integration for publisher
Deluge uses a JSON-RPC HTTP API exposed by the Web UI plugin (port 8112),
not the daemon binary protocol (port 58846). The integration logs in,
fetches completed torrents, filters by configured labels, and enqueues
them the same way as the qBittorrent poller.

- DelugeConfig in config.rs (enabled, url, password, poll_interval_secs, labels)
- src/publisher/deluge.rs: DelugeClient with login/_session_id cookie
  handling, core.get_torrents_status, label + is_finished filtering
- Watcher: deluge_poll_loop alongside qb_poll_loop; each only starts
  if its respective client is configured/enabled
- Example config updated with deluge section and Web UI port note
2026-05-19 20:13:14 -07:00

97 lines
3.4 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 qBittorrent category
# Deluge Web UI integration (enable the Web UI plugin in Deluge preferences)
deluge:
enabled: false
url: "http://127.0.0.1:8112" # Web UI port (not the daemon port 58846)
password: "${DELUGE_WEB_PASSWORD}"
poll_interval_secs: 60
labels:
- "publish-nostr" # Deluge Label plugin label to watch