# Nostr-rs-relay configuration [info] # The advertised URL for the Nostr websocket. relay_url = "wss://nostr.example.com/" # Relay information for clients. Put your unique server name here. name = "nostr-rs-relay" # Description description = "A newly created nostr-rs-relay.\n\nCustomize this with your own info." # Administrative contact pubkey (32-byte hex, not npub) #pubkey = "0c2d168a4ae8ca58c9f1ab237b5df682599c6c7ab74307ea8b05684b60405d41" # Administrative contact URI #contact = "mailto:contact@example.com" # Favicon location. Relative to the current directory. Assumes an # ICO format. #favicon = "favicon.ico" # URL of Relay's icon. #relay_icon = "https://example.test/img.png" [diagnostics] # Enable tokio tracing (for use with tokio-console) #tracing = false [database] # Database engine (sqlite/postgres). Defaults to sqlite. # Support for postgres is currently experimental. #engine = "sqlite" # Directory for SQLite files. Defaults to the current directory. Can # also be specified (and overriden) with the "--db dirname" command # line option. #data_directory = "." # Use an in-memory database instead of 'nostr.db'. # Requires sqlite engine. # Caution; this will not survive a process restart! #in_memory = false # Database connection pool settings for subscribers: # Minimum number of SQLite reader connections #min_conn = 0 # Maximum number of SQLite reader connections. Recommend setting this # to approx the number of cores. #max_conn = 8 # Database connection string. Required for postgres; not used for # sqlite. #connection = "postgresql://postgres:nostr@localhost:7500/nostr" # Optional database connection string for writing. Use this for # postgres clusters where you want to separate reads and writes to # different nodes. Ignore for single-database instances. #connection_write = "postgresql://postgres:nostr@localhost:7500/nostr" [logging] # Directory to store log files. Log files roll over daily. #folder_path = "./log" #file_prefix = "nostr-relay" [grpc] # gRPC interfaces for externalized decisions and other extensions to # functionality. # # Events can be authorized through an external service, by providing # the URL below. In the event the server is not accessible, events # will be permitted. The protobuf3 schema used is available in # `proto/nauthz.proto`. # event_admission_server = "http://[::1]:50051" # If the event admission server denies writes # in any case (excluding spam filtering). # This is reflected in the relay information document. # restricts_write = true [network] # Bind to this network address address = "0.0.0.0" # Listen on this port port = 8080 # If present, read this HTTP header for logging client IP addresses. # Examples for common proxies, cloudflare: #remote_ip_header = "x-forwarded-for" #remote_ip_header = "cf-connecting-ip" # Websocket ping interval in seconds, defaults to 5 minutes #ping_interval = 300 [options] # Reject events that have timestamps greater than this many seconds in # the future. Recommended to reject anything greater than 30 minutes # from the current time, but the default is to allow any date. reject_future_seconds = 1800 [limits] # Limit events created per second, averaged over one minute. Must be # an integer. If not set (or set to 0), there is no limit. Note: # this is for the server as a whole, not per-connection. # # Limiting event creation is highly recommended if your relay is # public! # #messages_per_sec = 5 # Limit client subscriptions created, averaged over one minute. Must # be an integer. If not set (or set to 0), defaults to unlimited. # Strongly recommended to set this to a low value such as 10 to ensure # fair service. #subscriptions_per_min = 0 # UNIMPLEMENTED... # Limit how many concurrent database connections a client can have. # This prevents a single client from starting too many expensive # database queries. Must be an integer. If not set (or set to 0), # defaults to unlimited (subject to subscription limits). #db_conns_per_client = 0 # Limit blocking threads used for database connections. Defaults to 16. #max_blocking_threads = 16 # Limit the maximum size of an EVENT message. Defaults to 128 KB. # Set to 0 for unlimited. #max_event_bytes = 131072 # Maximum WebSocket message in bytes. Defaults to 128 KB. #max_ws_message_bytes = 131072 # Maximum WebSocket frame size in bytes. Defaults to 128 KB. #max_ws_frame_bytes = 131072 # Broadcast buffer size, in number of events. This prevents slow # readers from consuming memory. #broadcast_buffer = 16384 # Event persistence buffer size, in number of events. This provides # backpressure to senders if writes are slow. #event_persist_buffer = 4096 # Event kind blacklist. Events with these kinds will be discarded. #event_kind_blacklist = [ # 70202, #] # Event kind allowlist. Events other than these kinds will be discarded. #event_kind_allowlist = [ # 0, 1, 2, 3, 7, 40, 41, 42, 43, 44, 30023, #] [authorization] # Pubkey addresses in this array are whitelisted for event publishing. # Only valid events by these authors will be accepted, if the variable # is set. #pubkey_whitelist = [ # "35d26e4690cbe1a898af61cc3515661eb5fa763b57bd0b42e45099c8b32fd50f", # "887645fef0ce0c3c1218d2f5d8e6132a19304cdc57cd20281d082f38cfea0072", #] # Enable NIP-42 authentication #nip42_auth = false # Send DMs (kind 4 and 44) and gift wraps (kind 1059) only to their authenticated recipients #nip42_dms = false [verified_users] # NIP-05 verification of users. Can be "enabled" to require NIP-05 # metadata for event authors, "passive" to perform validation but # never block publishing, or "disabled" to do nothing. #mode = "disabled" # Domain names that will be prevented from publishing events. #domain_blacklist = ["wellorder.net"] # Domain names that are allowed to publish events. If defined, only # events NIP-05 verified authors at these domains are persisted. #domain_whitelist = ["example.com"] # Consider an pubkey "verified" if we have a successful validation # from the NIP-05 domain within this amount of time. Note, if the # domain provides a successful response that omits the account, # verification is immediately revoked. #verify_expiration = "1 week" # How long to wait between verification attempts for a specific author. #verify_update_frequency = "24 hours" # How many consecutive failed checks before we give up on verifying # this author. #max_consecutive_failures = 20 [pay_to_relay] # Enable pay to relay #enabled = false # The cost to be admitted to relay #admission_cost = 4200 # The cost in sats per post #cost_per_event = 0 # Url of lnbits api #node_url = "" # LNBits api secret #api_secret = "" # Nostr direct message on signup #direct_message=false # Terms of service #terms_message = """ #This service (and supporting services) are provided "as is", without warranty of any kind, express or implied. # #By using this service, you agree: #* Not to engage in spam or abuse the relay service #* Not to disseminate illegal content #* That requests to delete content cannot be guaranteed #* To use the service in compliance with all applicable laws #* To grant necessary rights to your content for unlimited time #* To be of legal age and have capacity to use this service #* That the service may be terminated at any time without notice #* That the content you publish may be removed at any time without notice #* To have your IP address collected to detect abuse or misuse #* To cooperate with the relay to combat abuse or misuse #* You may be exposed to content that you might find triggering or distasteful #* The relay operator is not liable for content produced by users of the relay #""" # Whether or not new sign ups should be allowed #sign_ups = false # optional if `direct_message=false` #secret_key = ""