Switch to strfry

This commit is contained in:
koalasat 2024-07-15 10:19:53 +02:00
parent 97bb2dc777
commit bdc10eb289
No known key found for this signature in database
GPG Key ID: 2F7F61C6146AB157
5 changed files with 151 additions and 158 deletions

View File

@ -15,7 +15,7 @@ class Nostr:
client = Client(signer)
# Add relays and connect
await client.add_relays(["ws://localhost:888"])
await client.add_relays(["ws://localhost:7777"])
await client.connect()
event = EventBuilder(38383, "", self.generate_tags(order)).to_event(keys)

View File

@ -163,7 +163,7 @@ services:
ports:
- 8000:8000 # dev frontend build
- 12596:12596 # umbrel frontend
- 888:888 # nostr
- 7777:7777 # nostr
lnd:
build: ./docker/lnd
@ -227,12 +227,12 @@ services:
volumes:
- ./node/db:/var/lib/postgresql/data
rnostr:
build: https://github.com/rnostr/rnostr.git
container_name: rnostr-dev
strfry:
build: https://github.com/hoytech/strfry.git
container_name: strfry-dev
restart: unless-stopped
volumes:
- ./nodeapp/rnostr/config/rnostr.toml:/rnostr/config/rnostr.toml:r
- ./nodeapp/strfry/config/strfry.conf:/app/strfry.conf:r
network_mode: service:tor
# # Postgresql for CLN

View File

@ -205,13 +205,13 @@ services:
# - redis
# network_mode: service:bitcoind
rnostr:
build: https://github.com/rnostr/rnostr.git
container_name: test-rnostr
restart: unless-stopped
volumes:
- ./nodeapp/rnostr/config/rnostr.toml:/rnostr/config/rnostr.toml:r
network_mode: service:bitcoind
# strfry:
# build: https://github.com/hoytech/strfry.git
# container_name: test-strfry
# restart: unless-stopped
# volumes:
# - ./nodeapp/strfry/config/strfry.conf:/strfry/strfry.conf:r
# network_mode: service:bitcoind
volumes:

View File

@ -1,145 +0,0 @@
# Configuration
# All duration format reference https://docs.rs/duration-str/latest/duration_str/
#
# config relay information
[information]
name = "rnostr"
description = "A high-performance and scalable nostr relay written in Rust."
software = "https://github.com/rnostr/rnostr"
# pubkey = ""
# contact = ""
# config data path
[data]
# the data path (restart required)
# the events db path is $path/events
path = "./data"
# Query filter timeout time, default no timeout.
db_query_timeout = "100ms"
# config network
[network]
# Interface to listen on. Use 0.0.0.0 to listen on all interfaces (restart required)
host = "127.0.0.1"
# Listen port (restart required)
port = 888
# 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)
[thread]
# 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
[limitation]
# this is the maximum number of bytes for incoming JSON. default 512K
max_message_length = 524288
# total number of subscriptions that may be active on a single websocket connection to this relay. default 20
max_subscriptions = 1
# maximum number of filter values in each subscription. default 10
max_filters = 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
max_limit = 300
# maximum length of subscription id as a string. default 100
max_subid_length = 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
min_prefix = 10
# in any event, this is the maximum number of elements in the tags list. default 5000
max_event_tags = 15
# Events older than this will be rejected. default 3 years
max_event_time_older_than_now = 94608000
# Events newer than this will be rejected. default 15 minutes
max_event_time_newer_than_now = 900
# Metrics extension, get the metrics data from https://example.com/metrics?auth=auth_key
[metrics]
enabled = false
# change the auth key
auth = "auth_key"
# Auth extension
[auth]
enabled = 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
[rate_limiter]
enabled = 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
[count]
enabled = false
# NIP-50 Search extension
# use carefully. see README.md#search
[search]
enabled = false

View File

@ -0,0 +1,138 @@
##
## Default strfry config
##
# Directory that contains the strfry LMDB database (restart required)
db = "./strfry-db/"
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
# Disables read-ahead when accessing the LMDB mapping. Reduces IO activity when DB size is larger than RAM. (restart required)
noReadAhead = false
}
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
}
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 = "Robosats"
# NIP-11: Detailed information about relay, free-form
description = "Federation cache system."
# NIP-11: Administrative nostr pubkey, for contact purposes
pubkey = ""
# NIP-11: Alternative administrative contact (email, website, etc)
contact = ""
}
# Maximum accepted incoming websocket frame size (should be larger than max event) (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 = ""
}
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
# Log reason for invalid event rejection? Can be disabled to silence excessive logging
invalidEvents = true
}
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
# negentropy threads: Handle negentropy protocol messages (restart required)
negentropy = 2
}
negentropy {
# Support negentropy protocol messages
enabled = true
# Maximum records that sync will process before returning an error
maxSyncEvents = 1000000
}
}