1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
# NNTP Proxy Configuration
#
# Sections are ordered from general proxy behavior to concrete identities and
# backend endpoints. Keep authentication and [[servers]] at the bottom so the
# operational knobs are easy to scan first.
# Proxy Server Settings
[]
# Host/IP to bind to (default: 0.0.0.0 - all interfaces)
= "0.0.0.0"
# Port to listen on (default: 8119)
# Can be overridden with --port or NNTP_PROXY_PORT
= 8119
# Worker threads (default: 1, use 0 for CPU cores)
= 1
# Validate yEnc structure and checksums (default: true)
# Disable for better performance if you trust your backends
= true
# Minimum log level for debug.log file (default: "warn")
# Options: "error", "warn", "info", "debug", "trace"
= "warn"
# Optional stats persistence path used by the TUI dashboard
# stats_file = "/var/lib/nntp-proxy/stats.json"
# Routing Configuration
[]
# Routing mode: "hybrid" (default), "per-command", or "stateful"
= "hybrid"
# Backend selection strategy: "least-loaded" (default) or "weighted-round-robin"
= "least-loaded"
# Enable adaptive availability prechecking for STAT/HEAD commands
= false
# Memory Configuration
# These settings affect transport buffers and buffer pools, not article storage.
[]
# TCP socket buffers for client and backend connections
= 16777216
= 16777216
# Pooled streaming buffers
= 1048576
= 100
# Capture buffers used by cache ingest/response assembly
= 1048576
= 16
# Article Cache Configuration
[]
# Hot in-memory article cache capacity
# Supports: "1gb", "500mb", "64mb", or raw bytes
= "256mb"
# Time-to-live for the article cache, in seconds
= 3600
# Set true to store article bodies in memory and enable the disk tier below.
= true
# Optional persistence file for the availability-only index when store_article_bodies = false
# availability_index_path = "/var/cache/nntp-proxy/availability.idx"
# Disk Cache Configuration (optional)
# When configured, evicted articles spill from memory to disk.
# Use an SSD/NVMe device for the disk tier.
[]
= "/var/cache/nntp-proxy/articles"
= "10gb"
# Options: "lz4" (default), "zstd", or "none"
= "lz4"
# Number of shards for concurrent disk access
= 4
# Health Check Configuration
[]
# Interval and timeout are in seconds
= 30
= 5
= 3
# Client Authentication Configuration
# Place auth near the concrete server entries. It is optional.
#
# Custom greeting:
[]
= "200 Hold On To Your Butts"
# Users:
[[]]
= "clientusername"
= "client password"
#
# [[client_auth.users]]
# username = "bob"
# password = "password456"
[[]]
= "news.example.com"
= 119
= "Example News Server 1"
# Optional backend authentication
# username = "your_username"
# password = "your_password"
= 20
# Lower tier numbers are tried first. Higher tiers are fallback/archive servers.
= 0
# Optional keep-alive interval in seconds
# connection_keepalive = 60
= false
= true
[[]]
= "nntp.example.org"
= 119
= "Example News Server 2"
= "testuser"
= "testpass"
= 10
= 1
= 60
= false
= true
[[]]
= "secure-news.example.com"
= 563
= "Secure News Server"
= "premium_user"
= "secure_password"
= 15
= 5
= 120
= true
= true
# Optional custom CA certificate
# tls_cert_path = "/path/to/ca-cert.pem"
[[]]
= "archive.example.com"
= 563
= "Archive Server"
= "archive_user"
= "archive_pass"
= 2
= 10
= 120
= true
= true