--- strfry_version: beta strfry_binary_path: /usr/local/bin/strfry strfry_make_jobs: "{{ ansible_processor_cores }}" strfry_skip_config: False strfry_system_group: strfry strfry_system_user: strfry strfry_data_path: /var/lib/strfry strfry_db: "./strfry-db/" # Becomes /var/lib/strfry/strfry-db strfry_dbParams: # Maximum number of threads/processes that can simultaneously have LMDB transactions open (restart required) maxreaders: 256 # Size of mmap() to use when loading LMDB (default is 10TB, does *not* correspond to disk-space used) (restart required) mapsize: 10995116277760 strfry_relay: # Interface to listen on. Use 0.0.0.0 to listen on all interfaces (restart required) bind: "127.0.0.1" # Port to open for the nostr websocket protocol (restart required) port: 7777 # Set OS-limit on maximum number of open files/sockets (if 0, don't attempt to set) (restart required) nofiles: 1000000 # HTTP header that contains the client's real IP, before reverse proxying (ie x-real-ip) (MUST be all lower-case) realIpHeader: "" info: # NIP-11: Name of this server. Short/descriptive (< 30 characters) name: "strfry default" # NIP-11: Detailed information about relay, free-form description: "This is a strfry instance." # NIP-11: Administrative nostr pubkey, for contact purposes pubkey: "unset" # NIP-11: Alternative administrative contact (email, website, etc) contact: "unset" # Maximum accepted incoming websocket frame size (should be larger than max event and yesstr msg) (restart required) maxWebsocketPayloadSize: 131072 # Websocket-level PING message frequency (should be less than any reverse proxy idle timeouts) (restart required) autoPingSeconds: 55 # If TCP keep-alive should be enabled (detect dropped connections to upstream reverse proxy) enableTcpKeepalive: false # How much uninterrupted CPU time a REQ query should get during its DB scan queryTimesliceBudgetMicroseconds: 10000 # Maximum records that can be returned per filter maxFilterLimit: 500 # Maximum number of subscriptions (concurrent REQs) a connection can have open at any time maxSubsPerConnection: 20 writePolicy: # If non-empty, path to an executable script that implements the writePolicy plugin logic plugin: "" # Number of seconds to search backwards for lookback events when starting the writePolicy plugin (0 for no lookback) lookbackSeconds: 0 compression: # Use permessage-deflate compression if supported by client. Reduces bandwidth, but slight increase in CPU (restart required) enabled: "true" # Maintain a sliding window buffer for each connection. Improves compression, but uses more memory (restart required) slidingWindow: "true" logging: # Dump all incoming messages dumpInAll: "false" # Dump all incoming EVENT messages dumpInEvents: "false" # Dump all incoming REQ/CLOSE messages dumpInReqs: "false" # Log performance metrics for initial REQ database scans dbScanPerf: "false" numThreads: # Ingester threads: route incoming requests, validate events/sigs (restart required) ingester: 3 # reqWorker threads: Handle initial DB scan for events (restart required) reqWorker: 3 # reqMonitor threads: Handle filtering of new events (restart required) reqMonitor: 3 # yesstr threads: Experimental yesstr protocol (restart required) yesstr: 1 strfry_events: # Maximum size of normalised JSON, in bytes maxEventSize: 65536 # Events newer than this will be rejected rejectEventsNewerThanSeconds: 900 # Events older than this will be rejected rejectEventsOlderThanSeconds: 94608000 # Ephemeral events older than this will be rejected rejectEphemeralEventsOlderThanSeconds: 60 # Ephemeral events will be deleted from the DB when older than this ephemeralEventsLifetimeSeconds: 300 # Maximum number of tags allowed maxNumTags: 2000 # Maximum size for tag values, in bytes maxTagValSize: 1024