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
145
# Configuration
# All duration format reference https://docs.rs/duration-str/latest/duration_str/
#
# config relay information
[]
= "rnostr"
= "A high-performance and scalable nostr relay written in Rust."
= "https://github.com/rnostr/rnostr"
# pubkey = ""
# contact = ""
# config data path
[]
# the data path (restart required)
# the events db path is $path/events
= "./data"
# Query filter timeout time, default no timeout.
= "100ms"
# config network
[]
# Interface to listen on. Use 0.0.0.0 to listen on all interfaces (restart required)
= "127.0.0.1"
# Listen port (restart required)
= 8080
# real ip header (default empty)
# ie: cf-connecting-ip, x-real-ip, x-forwarded-for
# real_ip_header = "x-forwarded-for"
# redirect to other site when user access the http index page
# index_redirect_to = "https://example.com"
# heartbeat timeout (default 120 seconds, must bigger than heartbeat interval)
# How long before lack of client response causes a timeout
# heartbeat_timeout = "2m"
# heartbeat interval (default 60 seconds)
# How often heartbeat pings are sent
# heartbeat_interval = "1m"
# config thread (restart required)
[]
# number of http server threads (restart required)
# default 0 will use the num of cpus
# http = 0
# number of read event threads (restart required)
# default 0 will use the num of cpus
# reader = 0
[]
# this is the maximum number of bytes for incoming JSON. default 512K
= 524288
# total number of subscriptions that may be active on a single websocket connection to this relay. default 20
= 20
# maximum number of filter values in each subscription. default 10
= 10
# the relay server will clamp each filter's limit value to this number. This means the client won't be able to get more than this number of events from a single subscription filter. default 300
= 300
# maximum length of subscription id as a string. default 100
= 100
# for authors and ids filters which are to match against a hex prefix, you must provide at least this many hex digits in the prefix. default 10
= 10
# in any event, this is the maximum number of elements in the tags list. default 5000
= 5000
# Events older than this will be rejected. default 3 years
= 94608000
# Events newer than this will be rejected. default 15 minutes
= 900
# Metrics extension, get the metrics data from https://example.com/metrics?auth=auth_key
[]
= true
# change the auth key
= "auth_key"
# Auth extension
[]
= false
# # Authenticate the command 'REQ' get event, subscribe filter
# [auth.req]
# # only the list IP are allowed to req
# ip_whitelist = ["127.0.0.1"]
# # only the list IP are denied to req
# ip_blacklist = ["127.0.0.1"]
# # Restrict on nip42 verified pubkey, so client needs to implement nip42 and authenticate success
# pubkey_whitelist = ["xxxxxx"]
# pubkey_blacklist = ["xxxx"]
# # Authenticate the command 'EVENT' write event
# [auth.event]
# ip_whitelist = ["127.0.0.1"]
# ip_blacklist = ["127.0.0.1"]
# # Restrict on nip42 verified pubkey, so client needs to implement nip42 and authenticate success
# pubkey_whitelist = ["xxxxxx"]
# pubkey_blacklist = ["xxxx"]
# # Restrict on event author pubkey, No need nip42 authentication
# event_pubkey_whitelist = ["xxxxxx"]
# event_pubkey_blacklist = ["xxxx"]
# IP Rate limiter extension
[]
= false
# # interval at second for clearing invalid data to free up memory.
# # 0 will be converted to default 60 seconds
# clear_interval = "60s"
# # rate limiter ruler list when write event per user client IP
# [[rate_limiter.event]]
# # name of rate limiter, used by metrics
# name = "all"
# # description will notice the user when rate limiter exceeded
# description = "allow only ten events per minute"
# period = "1m"
# limit = 10
# # only limit for kinds
# # support kind list: [1, 2, 3]
# # kind ranges included(start) to excluded(end): [[0, 10000], [30000, 40000]]
# # mixed: [1, 2, [30000, 40000]]
# kinds = [[0, 40000]]
# # skip when ip in whitelist
# ip_whitelist = ["127.0.0.1"]
# [[rate_limiter.event]]
# name = "kind 10000"
# description = "allow only five write events per minute when event kind between 0 to 10000"
# period = "60s"
# limit = 5
# kinds = [[0, 10000]]
# NIP-45 Count extension
# use carefully. see README.md#count
[]
= false
# NIP-50 Search extension
# use carefully. see README.md#search
[]
= false