mirror of
https://github.com/RoboSats/robosats.git
synced 2025-01-20 21:21:36 +00:00
Switch to strfry
This commit is contained in:
parent
97bb2dc777
commit
bdc10eb289
@ -15,7 +15,7 @@ class Nostr:
|
|||||||
client = Client(signer)
|
client = Client(signer)
|
||||||
|
|
||||||
# Add relays and connect
|
# Add relays and connect
|
||||||
await client.add_relays(["ws://localhost:888"])
|
await client.add_relays(["ws://localhost:7777"])
|
||||||
await client.connect()
|
await client.connect()
|
||||||
|
|
||||||
event = EventBuilder(38383, "", self.generate_tags(order)).to_event(keys)
|
event = EventBuilder(38383, "", self.generate_tags(order)).to_event(keys)
|
||||||
|
@ -163,7 +163,7 @@ services:
|
|||||||
ports:
|
ports:
|
||||||
- 8000:8000 # dev frontend build
|
- 8000:8000 # dev frontend build
|
||||||
- 12596:12596 # umbrel frontend
|
- 12596:12596 # umbrel frontend
|
||||||
- 888:888 # nostr
|
- 7777:7777 # nostr
|
||||||
|
|
||||||
lnd:
|
lnd:
|
||||||
build: ./docker/lnd
|
build: ./docker/lnd
|
||||||
@ -227,12 +227,12 @@ services:
|
|||||||
volumes:
|
volumes:
|
||||||
- ./node/db:/var/lib/postgresql/data
|
- ./node/db:/var/lib/postgresql/data
|
||||||
|
|
||||||
rnostr:
|
strfry:
|
||||||
build: https://github.com/rnostr/rnostr.git
|
build: https://github.com/hoytech/strfry.git
|
||||||
container_name: rnostr-dev
|
container_name: strfry-dev
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
volumes:
|
volumes:
|
||||||
- ./nodeapp/rnostr/config/rnostr.toml:/rnostr/config/rnostr.toml:r
|
- ./nodeapp/strfry/config/strfry.conf:/app/strfry.conf:r
|
||||||
network_mode: service:tor
|
network_mode: service:tor
|
||||||
|
|
||||||
# # Postgresql for CLN
|
# # Postgresql for CLN
|
||||||
|
@ -205,13 +205,13 @@ services:
|
|||||||
# - redis
|
# - redis
|
||||||
# network_mode: service:bitcoind
|
# network_mode: service:bitcoind
|
||||||
|
|
||||||
rnostr:
|
# strfry:
|
||||||
build: https://github.com/rnostr/rnostr.git
|
# build: https://github.com/hoytech/strfry.git
|
||||||
container_name: test-rnostr
|
# container_name: test-strfry
|
||||||
restart: unless-stopped
|
# restart: unless-stopped
|
||||||
volumes:
|
# volumes:
|
||||||
- ./nodeapp/rnostr/config/rnostr.toml:/rnostr/config/rnostr.toml:r
|
# - ./nodeapp/strfry/config/strfry.conf:/strfry/strfry.conf:r
|
||||||
network_mode: service:bitcoind
|
# network_mode: service:bitcoind
|
||||||
|
|
||||||
|
|
||||||
volumes:
|
volumes:
|
||||||
|
@ -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
|
|
138
nodeapp/strfry/config/strfry.conf
Normal file
138
nodeapp/strfry/config/strfry.conf
Normal 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
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user