nntp-proxy 0.5.0

High-performance NNTP proxy server with connection pooling and authentication
Documentation
# Cache-focused NNTP Proxy configuration
# Use this with nntp-proxy; caching is built in and the same binary handles dashboard/headless UI modes.

# Backend NNTP servers
[[servers]]
host = "news.example.com"
port = 119
name = "Example News Server"
# username = "your_username"
# password = "your_password"
max_connections = 10
# Connection health check interval (omit to disable, recommended: 60-120 seconds)
# Sends DATE command to detect stale connections before reuse
connection_keepalive = 60
# TLS/SSL configuration
use_tls = false
tls_verify_cert = true
# tls_cert_path = "/path/to/ca-cert.pem"

# Routing configuration
[routing]
mode = "hybrid"
backend_selection = "least-loaded"
adaptive_precheck = false

# Article cache configuration
[cache]
# Maximum article-cache size in memory (default: 64mb)
# Supports human-readable formats: "1gb", "500mb", "64mb"
article_cache_capacity = "64mb"
# Time-to-live for the article cache (default: 1 hour)
article_cache_ttl_secs = 3600
# Store full article bodies in the article cache (required for memory/disk article caching)
store_article_bodies = true

# Disk Cache Configuration (optional, only used when store_article_bodies = true)
# When configured, creates two-tier cache: memory -> disk -> backend
# Articles evicted from memory are written to disk for later retrieval
#
# [cache.disk]
# # Path to disk cache directory (will be created if needed)
# # Recommended: Use a fast SSD or NVMe drive
# path = "/var/cache/nntp-proxy"
# # Maximum disk cache size (default: 10gb)
# # Supports: "100gb", "10gb", "1tb", or raw bytes
# capacity = "10gb"
# # Compression codec for disk storage (default: "lz4")
# # Options:
# #   "lz4"  - Fast compression (~60% reduction), minimal CPU, SIMD-accelerated
# #   "zstd" - Better compression ratio, moderate CPU overhead, SIMD-accelerated
# #   "none" - No compression, fastest but largest disk usage
# # SIMD optimizations (SSE2/AVX2/AVX512) for "lz4" and "zstd" are auto-detected and enabled by default
# compression = "lz4"
# # Number of shards for concurrent disk access (default: 4)
# # Higher values improve concurrency but use more file handles
# shards = 4

# Health check configuration
[health_check]
# Interval between health checks in seconds
interval = 30
# Timeout for each health check in seconds
timeout = 5
# Number of consecutive failures before marking unhealthy
unhealthy_threshold = 3