chore: update spec to reflect phases 0-4 done; fix axum 0.8 path syntax; add dev config

This commit is contained in:
2026-05-17 15:35:39 -07:00
parent e6fb4f48c6
commit f595b8067f
4 changed files with 140 additions and 95 deletions
+35 -51
View File
@@ -1,81 +1,65 @@
# kindexr config
# Copy to /etc/kindexr/config.yaml and edit as needed.
# kindexr config — copy to /etc/kindexr/config.yaml and edit as needed.
server:
listen: "127.0.0.1:9117" # bind addr; sit behind nginx for TLS
base_url: "https://kindexr.example.com" # used in Torznab feed links
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
level: "info" # debug | info | warn | error
format: "json" # json | text
# Relays to subscribe to for NIP-35 events.
# If empty on first run, defaults to a sane starter set.
# 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" # eric's own relay
# add more
- "wss://sovbit.host"
# Initial backfill via NIP-77 negentropy. Set false to start from "now" only.
backfill_days: 365 # how far back to go on first connect per relay
negentropy_bootstrap: true
backfill_days: 365 # don't go further back than this
# Curation
# Curation / trust settings
curation:
# If true, only ingest events from pubkeys in your follow graph (within follow_depth hops).
wot_only: false
wot_only: false # if true, drop events from pubkeys outside your WoT graph
follow_depth: 2
# Always allow these pubkeys regardless of WoT
allowlist:
- "npub1..."
# Always block these
blocklist:
- "npub1..."
# Auto-subscribe to these curation sets (kind 30004 naddr)
curation_sets:
- "naddr1..."
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 (optional; without it, only events with imdb/tmdb i-tags are searchable by ID)
# TMDB enrichment — title → TMDB ID lookup (optional)
tmdb:
enabled: true
api_key: "${TMDB_API_KEY}"
api_key: "${TMDB_API_KEY}" # or set KINDEXR_TMDB.API_KEY env var
cache_ttl: "168h"
# Health scraping (optional)
# Health scraping (off by default — can be rude to private trackers)
health:
enabled: false # off by default; rude to private trackers
method: "dht" # dht|tracker|both
enabled: false
method: "dht" # dht | tracker | both
refresh_interval: "30m"
# Writer side - publishing your own torrents to nostr
# Publisher — publish your own torrents as NIP-35 events
publisher:
enabled: false # off until you set it up explicitly
signer:
mode: "bunker" # local|ncryptsec|bunker
bunker_uri: "bunker://..." # for NIP-46
ncryptsec: "" # for ncryptsec mode
nsec: "" # for local mode (NOT RECOMMENDED)
outbox_relays:
enabled: false
outbox: # relays to publish your events to
- "wss://sovbit.host"
- "wss://relay.damus.io"
- "wss://nos.lol"
# Where to watch for completed downloads
client:
type: "qbittorrent" # qbittorrent|transmission|deluge|watch_dir
qbittorrent:
url: "http://127.0.0.1:8080"
username: "admin"
password: "${QBIT_PASSWORD}"
# Only publish torrents tagged with this category (so you don't accidentally publish everything)
category: "publish-nostr"
watch_dir:
path: "/var/lib/kindexr/watch"
# Auto-enrich title parsing -> TMDB lookup before publishing
enrich_before_publish: true
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