bostr/config.js.example

185 lines
6.2 KiB
Plaintext
Raw Normal View History

// Bostr config
module.exports = {
// Server listener [Required]
address: "0.0.0.0",
port: "8080",
// Standalone HTTPS server. Normally bostr is accepting unsecured connections.
// Specifying the absolute path of the private key/certificate will make bostr to only accept secured connections.
//
// Tip: You do not need this if you are running bostr behind reverse proxy.
2024-01-13 06:36:24 -05:00
https: {
privKey: "",
certificate: "",
ticketKey: ""
},
// Clusters (default: 1)
//
// Every single clusters has additional 1 running worker,
// Which making bostr running at 2 threads by default.
//
// You may increase this value if:
// - You want to use more threads/cores in your server
// - You got heavy traffics / many clients
// 0 (auto) will determine based of how many parallelism / cores available in the system.
clusters: 1,
// Numbers of idle sessions to be created
// Default: 1
idle_sessions: 1,
2024-01-13 06:36:24 -05:00
// Log about bouncer connection with relays?
log_about_relays: false,
// Use deflate compression for websocket.
// Enabling this will save user bandwidth,
// But also will be CPU intensive if there's a lot of users using this bouncer
perMessageDeflate: false,
// Reject scraper requests.
// This only checks whenever client respond to bouncer's AUTH.
//
// NOTE: - Require NIP-42 compatible nostr client.
// - This will also block unauthorized EVENT.
noscraper: false,
2023-12-19 12:05:11 +09:00
// Time before reconnect to relays in milliseconds.
reconnect_time: 5000,
// Ratelimit expiration after ratelimit from upstream relay in miliseconds.
// Setting as 0 will disable ratelimit handling.
upstream_ratelimit_expiration: 10000,
// Maximum subscriptions that client could open.
// Setting as -1 will disable max subscription limit.
max_client_subs: -1,
// Wait for every connected relays send EOSE.
2023-12-19 12:05:11 +09:00
// Could improve accuracy on received events.
//
// Depending on your configured relays,
// It may could cause loading problems in client due to slow EOSE from bouncer.
// You could try fix this by changing <eose_timeout> or <max_eose_score> value.
wait_eose: true,
// Pause an subscription from receiving further events after reached to <filter.limit>
2024-04-11 12:51:20 +07:00
// Enabling this could fix bandwidth issues at certain client.
// This is also known as save mode.
//
// You may also need to adjust <max_eose_score>.
pause_on_limit: false,
// Maximum of received EOSE from relays to send EOSE to client.
// Normally, waiting EOSE from 3 relays should be enough. Leaving it with 0 equals wait for every established relays.
// NOTE: Please adjust this max score correctly with your configured relays.
// If you only setted up 3 relays, Set the <max_eose_score> as 0.
// Tip : The bigger = The more accurate EOSE, The less = EOSE sent way earlier.
max_eose_score: 0,
// A whitelist of users public keys who could use this bouncer.
// Leaving this empty will allow everyone to use this bouncer.
// NOTE: - Require NIP-42 compatible nostr client.
// You may use <allowed_event_authors> instead if your client does not support NIP-42.
authorized_keys: [
// "pubkey-in-hex",
// "npub ....",
// ....
],
// A whitelist of allowed event owner.
// Leaving this empty will allow everyone to publish events from anyone to this bouncer.
allowed_publishers: [
// "pubkey-in-hex",
// "npub ....",
// ....
2024-01-13 06:36:24 -05:00
],
// A blacklist of blocked event owner.
blocked_publishers: [
// "pubkey-in-hex",
// "npub ....",
// ....
],
// Block incomming websocket connections from the following hosts.
blocked_hosts: [
// "127.0.0.1",
// "127.0.0.2",
// "::1",
// "::2",
// ....
],
// Used for accessing NIP-42 protected events from certain relays.
// It could be your key. Leaving this empty completely disables NIP-42 function.
//
// You could use this function even as a public bouncer.
// There are no security risk as it utilize NIP-42 to recognize client public key.
//
// NOTE: - Require NIP-42 compatible nostr client
private_keys: {
// "pubkey-in-hex": "privatekey-in-hex",
// "pubkey-in-hex": "nsec ...."
},
// Tip: If you want to convert your pubkey/privatekey to hex,
// You could run the following command:
// $ node hexconverter.js npub....
// $ node hexconverter.js nsec....
// or
// $ bostr hexconverter npub....
// $ bostr hexconverter nsec....
// Server information.
// Only for when nostr client requesting server information.
server_meta: {
"contact": "unset",
"pubkey": "0000000000000000000000000000000000000000000000000000000000000000",
"description": "Nostr relay bouncer",
"name": "Bostr",
"software": "git+https://github.com/Yonle/bostr",
// Some nostr client may read the following for compatibility check.
// You may change the supported_nips to match with what your relays supported.
"supported_nips": [1,2,9,11,12,15,16,20,22,33,40,42,50],
// "icon_url": ""
},
// Path to favicon file.
favicon: "",
// Nostr relays to bounce [Required]
relays: [
"wss://example1.com",
"wss://example2.com",
// "wss://example3.com",
// ...and so on
],
// Unless you use this bouncer only for load balancing,
// You could empty <relays> as long <loadbalancer> is not empty.
// Cache relays - Store received events to cache relay(s) (Optional).
// Could improve the speed of event deliveries.
//
// Ensure that the cache relay does not have websocket ratelimit being set.
// CAUTION: - Cache relay is intensive in storing events.
// - Only works best with only 1 cache relay.
// - Things may not work properly if you configure more than just a single cache relays.
cache_relays: [
// "ws://localhost:3000"
],
// Load balancer - Load balance this bouncer (Optional)
//
// You could make this bouncer to connect to other bouncer in order to save this server loads.
// It's suggested that the following bouncers does not have `noscraper` or `authorized_keys` being set.
loadbalancer: [
// "wss://bostr1.example.com",
// "wss://bostr2.example.com",
// "wss://bostr3.example.com",
// ...and so on
]
}