Râu Cao 5f661d7304
Make all config values configurable
And use a standard scheme for variable/key naming
2025-06-01 19:57:04 +04:00

139 lines
6.5 KiB
Plaintext

# Directory that contains the strfry LMDB database (restart required)
db = "<%= @config.dig(:db) || "" %>/"
dbParams {
# Maximum number of threads/processes that can simultaneously have LMDB transactions open (restart required)
maxreaders = <%= @config.dig(:db_params, :maxreaders) || "256" %>
# Size of mmap() to use when loading LMDB (default is 10TB, does *not* correspond to disk-space used) (restart required)
mapsize = <%= @config.dig(:db_params, :mapsize) || "10995116277760" %>
# Disables read-ahead when accessing the LMDB mapping. Reduces IO activity when DB size is larger than RAM. (restart required)
noReadAhead = <%= @config.dig(:db_params, :no_read_ahead) || "false" %>
}
events {
# Maximum size of normalised JSON, in bytes
maxEventSize = <%= @config.dig(:events, :max_event_size) || "65536" %>
# Events newer than this will be rejected
rejectEventsNewerThanSeconds = <%= @config.dig(:events, :reject_events_newer_than_seconds) || "900" %>
# Events older than this will be rejected
rejectEventsOlderThanSeconds = <%= @config.dig(:events, :reject_events_older_than_seconds) || "94608000" %>
# Ephemeral events older than this will be rejected
rejectEphemeralEventsOlderThanSeconds = <%= @config.dig(:events, :reject_ephemeral_events_older_than_seconds) || "60" %>
# Ephemeral events will be deleted from the DB when older than this
ephemeralEventsLifetimeSeconds = <%= @config.dig(:events, :ephemeral_events_lifetime_seconds) || "300" %>
# Maximum number of tags allowed
maxNumTags = <%= @config.dig(:events, :max_num_tags) || "2000" %>
# Maximum size for tag values, in bytes
maxTagValSize = <%= @config.dig(:events, :max_tag_val_size) || "1024" %>
}
relay {
# Interface to listen on. Use 0.0.0.0 to listen on all interfaces (restart required)
bind = "<%= @config.dig(:relay, :bind) || "127.0.0.1" %>"
# Port to open for the nostr websocket protocol (restart required)
port = <%= @config.dig(:relay, :port) || "7777" %>
# Set OS-limit on maximum number of open files/sockets (if 0, don't attempt to set) (restart required)
nofiles = <%= @config.dig(:relay, :nofiles) || "524288" %>
# HTTP header that contains the client's real IP, before reverse proxying (ie x-real-ip) (MUST be all lower-case)
realIpHeader = "<%= @config.dig(:relay, :real_ip_header) || "" %>"
# NIP-11
info {
# Name of this server. Short/descriptive (< 30 characters)
name = "<%= @config.dig(:relay, :info, :name) || "strfry default" %>"
# Detailed information about relay, free-form
description = "<%= @config.dig(:relay, :info, :description) || "This is a strfry instance." %>"
# Administrative nostr pubkey, for contact purposes
pubkey = "<%= @config.dig(:relay, :info, :pubkey) || "" %>"
# Alternative administrative contact (email, website, etc)
contact = "<%= @config.dig(:relay, :info, :contact) || "" %>"
# URL pointing to an image to be used as an icon for the relay
icon = "<%= @config.dig(:relay, :info, :icon) || "" %>"
}
# Maximum accepted incoming websocket frame size (should be larger than max event) (restart required)
maxWebsocketPayloadSize = <%= @config.dig(:relay, :max_websocket_payload_size) || "131072" %>
# Websocket-level PING message frequency (should be less than any reverse proxy idle timeouts) (restart required)
autoPingSeconds = <%= @config.dig(:relay, :auto_ping_seconds) || "55" %>
# If TCP keep-alive should be enabled (detect dropped connections to upstream reverse proxy)
enableTcpKeepalive = <%= @config.dig(:relay, :enable_tcp_keepalive) || "false" %>
# How much uninterrupted CPU time a REQ query should get during its DB scan
queryTimesliceBudgetMicroseconds = <%= @config.dig(:relay, :query_timeslice_budget_microseconds) || "10000" %>
# Maximum records that can be returned per filter
maxFilterLimit = <%= @config.dig(:relay, :max_filter_limit) || "500" %>
# Maximum number of subscriptions (concurrent REQs) a connection can have open at any time
maxSubsPerConnection = <%= @config.dig(:relay, :max_subs_per_connection) || "20" %>
writePolicy {
# If non-empty, path to an executable script that implements the writePolicy plugin logic
plugin = "<%= @config.dig(:relay, :write_policy, :plugin) || "" %>"
}
compression {
# Use permessage-deflate compression if supported by client. Reduces bandwidth, but slight increase in CPU (restart required)
enabled = <%= @config.dig(:relay, :compression, :enabled) || "true" %>
# Maintain a sliding window buffer for each connection. Improves compression, but uses more memory (restart required)
slidingWindow = <%= @config.dig(:relay, :compression, :sliding_window) || "true" %>
}
logging {
# Dump all incoming messages
dumpInAll = <%= @config.dig(:relay, :logging, :dump_in_all) || "true" %>
# Dump all incoming EVENT messages
dumpInEvents = <%= @config.dig(:relay, :logging, :dump_in_events) || "false" %>
# Dump all incoming REQ/CLOSE messages
dumpInReqs = <%= @config.dig(:relay, :logging, :dump_in_reqs) || "false" %>
# Log performance metrics for initial REQ database scans
dbScanPerf = <%= @config.dig(:relay, :logging, :db_scan_perf) || "false" %>
# Log reason for invalid event rejection? Can be disabled to silence excessive logging
invalidEvents = <%= @config.dig(:relay, :logging, :invalid_events) || "true" %>
}
numThreads {
# Ingester threads: route incoming requests, validate events/sigs (restart required)
ingester = <%= @config.dig(:relay, :num_threads, :ingester) || "3" %>
# reqWorker threads: Handle initial DB scan for events (restart required)
reqWorker = <%= @config.dig(:relay, :num_threads, :req_worker) || "3" %>
# reqMonitor threads: Handle filtering of new events (restart required)
reqMonitor = <%= @config.dig(:relay, :num_threads, :req_monitor) || "3" %>
# negentropy threads: Handle negentropy protocol messages (restart required)
negentropy = <%= @config.dig(:relay, :num_threads, :negentropy) || "2" %>
}
negentropy {
# Support negentropy protocol messages
enabled = <%= @config.dig(:relay, :negentropy, :enabled) || "true" %>
# Maximum records that sync will process before returning an error
maxSyncEvents = <%= @config.dig(:relay, :negentropy, :max_sync_events) || "1000000" %>
}
}