// 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. https: { privKey: "", certificate: "", ticketKey: "" }, // Clusters. // 0 will make bostr run clusters with available parallelism / CPU cores. clusters: 0, // Log about bouncer connection with relays? log_about_relays: false, // Use deflate compression for websocket. perMessageDeflate: true, // 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, // Maximum amount of orphan sessions. // Setting to 0 disables orphan session function. max_orphan_sess: 7, // Wait for every connected relays send EOSE. // 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> // Could save client's bandwidth, but may miss some events. // // Depending on <wait_eose> settings, It could either miss some events. pause_on_limit: false, // EOSE timeout in milliseconds eose_timeout: 2300, // 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, // Client event broadcast ratelimit in miliseconds. // Client only able to broadcast new event to this bouncer after <broadcast_ratelimit>. // Leaving it as 0 will disable this function. broadcast_ratelimit: 0, // Incomming websocket connection ratelimit in miliseconds. // Leaving it as 0 will disable this function. incomming_ratelimit: 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 approved event publishers. // Leaving this empty will allow everyone to publish events with this bouncer. approved_publishers: [ // "pubkey-in-hex", // "npub ....", // .... ], // 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", // "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.... // 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], "version": require("./package.json").version }, // Path to favicon file. favicon: "", // Cache relays // Used for caching received events from <relays> to reduce bandwidth waste. // Keeping this empty will disable caching function. // // To make this working properly, Please enable <pause_on_limit>. cache_relays: [ // "ws://localhost:8001", // "ws://localhost:8002", // ...and so on ], // Nostr relays to bounce [Required] relays: [ "wss://example1.com", "wss://example2.com", // "wss://example3.com", // ...and so on ] }