mirror of
https://github.com/logos-messaging/docs.waku.org.git
synced 2026-01-03 13:23:06 +00:00
1 line
32 KiB
JavaScript
1 line
32 KiB
JavaScript
"use strict";(self.webpackChunkwaku_guide=self.webpackChunkwaku_guide||[]).push([[8610],{16660:(e,s,d)=>{d.r(s),d.d(s,{assets:()=>l,contentTitle:()=>c,default:()=>x,frontMatter:()=>t,metadata:()=>r,toc:()=>o});const r=JSON.parse('{"id":"guides/nwaku/config-options","title":"Node Configuration Options","description":"Here are the available node configuration options, along with their default values and descriptions:","source":"@site/docs/guides/nwaku/config-options.md","sourceDirName":"guides/nwaku","slug":"/guides/nwaku/config-options","permalink":"/guides/nwaku/config-options","draft":false,"unlisted":false,"editUrl":"https://github.com/waku-org/docs.waku.org/tree/develop/docs/guides/nwaku/config-options.md","tags":[],"version":"current","lastUpdatedAt":null,"frontMatter":{"title":"Node Configuration Options","hide_table_of_contents":true},"sidebar":"guides","previous":{"title":"Node Configuration Methods","permalink":"/guides/nwaku/config-methods"},"next":{"title":"Node Configuration Examples","permalink":"/guides/nwaku/configure-nwaku"}}');var n=d(74848),i=d(28453);const t={title:"Node Configuration Options",hide_table_of_contents:!0},c=void 0,l={},o=[{value:"Application-level config",id:"application-level-config",level:2},{value:"Log config",id:"log-config",level:2},{value:"General node config",id:"general-node-config",level:2},{value:"DNS addrs config",id:"dns-addrs-config",level:2},{value:"Relay config",id:"relay-config",level:2},{value:"Store and message store config",id:"store-and-message-store-config",level:2},{value:"Store Sync",id:"store-sync",level:2},{value:"Filter config",id:"filter-config",level:2},{value:"Light push config",id:"light-push-config",level:2},{value:"REST HTTP config",id:"rest-http-config",level:2},{value:"Metrics config",id:"metrics-config",level:2},{value:"DNS discovery config",id:"dns-discovery-config",level:2},{value:"Discv5 config",id:"discv5-config",level:2},{value:"Waku peer exchange config",id:"waku-peer-exchange-config",level:2},{value:"WebSocket config",id:"websocket-config",level:2},{value:"Non-relay, request-response protocol DOS protection configuration",id:"non-relay-request-response-protocol-dos-protection-configuration",level:2}];function h(e){const s={a:"a",admonition:"admonition",code:"code",h2:"h2",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,i.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(s.p,{children:"Here are the available node configuration options, along with their default values and descriptions:"}),"\n",(0,n.jsx)(s.h2,{id:"application-level-config",children:"Application-level config"}),"\n",(0,n.jsxs)(s.table,{children:[(0,n.jsx)(s.thead,{children:(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.th,{children:"Name"}),(0,n.jsx)(s.th,{children:"Default Value"}),(0,n.jsx)(s.th,{children:"Description"})]})}),(0,n.jsxs)(s.tbody,{children:[(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"config-file"})}),(0,n.jsx)(s.td,{}),(0,n.jsx)(s.td,{children:"Loads configuration from a TOML file (cmd-line parameters take precedence)"})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"protected-shard"})}),(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"newSeq[ProtectedShard](0)"})}),(0,n.jsxs)(s.td,{children:["Shards and its public keys to be used for message validation, shard",":pubkey",". Argument may be repeated"]})]})]})]}),"\n",(0,n.jsx)(s.h2,{id:"log-config",children:"Log config"}),"\n",(0,n.jsxs)(s.table,{children:[(0,n.jsx)(s.thead,{children:(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.th,{children:"Name"}),(0,n.jsx)(s.th,{children:"Default Value"}),(0,n.jsx)(s.th,{children:"Description"})]})}),(0,n.jsxs)(s.tbody,{children:[(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"log-level"})}),(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"logging.LogLevel.INFO"})}),(0,n.jsx)(s.td,{children:"Sets the log level for process. Supported levels: TRACE, DEBUG, INFO, NOTICE, WARN, ERROR or FATAL"})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"log-format"})}),(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"logging.LogFormat.TEXT"})}),(0,n.jsx)(s.td,{children:"Specifies what kind of logs should be written to stdout. Supported formats: TEXT, JSON"})]})]})]}),"\n",(0,n.jsx)(s.h2,{id:"general-node-config",children:"General node config"}),"\n",(0,n.jsxs)(s.table,{children:[(0,n.jsx)(s.thead,{children:(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.th,{children:"Name"}),(0,n.jsx)(s.th,{children:"Default Value"}),(0,n.jsx)(s.th,{children:"Description"})]})}),(0,n.jsxs)(s.tbody,{children:[(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"cluster-id"})}),(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"0"})}),(0,n.jsx)(s.td,{children:"Cluster id that the node is running in. Node in a different cluster id is disconnected"})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"agent-string"})}),(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"nwaku"})}),(0,n.jsx)(s.td,{children:"Node agent string which is used as identifier in network"})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"nodekey"})}),(0,n.jsx)(s.td,{}),(0,n.jsx)(s.td,{children:"P2P node private key as 64-char hex string"})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"listen-address"})}),(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"defaultListenAddress()"})}),(0,n.jsx)(s.td,{children:"Listening address for LibP2P (and Discovery v5, if enabled) traffic"})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"tcp-port"})}),(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"60000"})}),(0,n.jsx)(s.td,{children:"TCP listening port"})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"ports-shift"})}),(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"0"})}),(0,n.jsx)(s.td,{children:"Add a shift to all port numbers"})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"nat"})}),(0,n.jsx)(s.td,{children:"any"}),(0,n.jsxs)(s.td,{children:["Specify method to use for determining public address. Must be one of: any, none, upnp, pmp, extip",":IP"]})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"ext-multiaddr"})}),(0,n.jsx)(s.td,{}),(0,n.jsx)(s.td,{children:"External multiaddresses to advertise to the network. Argument may be repeated"})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"ext-multiaddr-only"})}),(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"false"})}),(0,n.jsx)(s.td,{children:"Only announce external multiaddresses"})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"max-connections"})}),(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"50"})}),(0,n.jsx)(s.td,{children:"Maximum allowed number of libp2p connections"})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"relay-service-ratio"})}),(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:'"60:40"'})}),(0,n.jsx)(s.td,{children:"This percentage ratio represents the relay peers to service peers. For example, 60:40, tells that 60% of the max-connections will be used for relay protocol and the other 40% of max-connections will be reserved for other service protocols (e.g., filter, lightpush, store, metadata, etc.)"})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"peer-store-capacity"})}),(0,n.jsx)(s.td,{}),(0,n.jsx)(s.td,{children:"Maximum stored peers in the peerstore"})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"peer-persistence"})}),(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"false"})}),(0,n.jsx)(s.td,{children:"Enable peer persistence"})]})]})]}),"\n",(0,n.jsx)(s.h2,{id:"dns-addrs-config",children:"DNS addrs config"}),"\n",(0,n.jsxs)(s.table,{children:[(0,n.jsx)(s.thead,{children:(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.th,{children:"Name"}),(0,n.jsx)(s.th,{children:"Default Value"}),(0,n.jsx)(s.th,{children:"Description"})]})}),(0,n.jsxs)(s.tbody,{children:[(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"dns-addrs"})}),(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"true"})}),(0,n.jsxs)(s.td,{children:["Enable resolution of ",(0,n.jsx)(s.code,{children:"dnsaddr"}),", ",(0,n.jsx)(s.code,{children:"dns4"})," or ",(0,n.jsx)(s.code,{children:"dns6"})," multiaddrs"]})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"dns-addrs-name-server"})}),(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:'["1.1.1.1", "1.0.0.1"]'})}),(0,n.jsx)(s.td,{children:"DNS name server IPs to query for DNS multiaddrs resolution. Argument may be repeated"})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"dns4-domain-name"})}),(0,n.jsx)(s.td,{}),(0,n.jsx)(s.td,{children:"The domain name resolving to the node's public IPv4 address"})]})]})]}),"\n",(0,n.jsx)(s.h2,{id:"relay-config",children:"Relay config"}),"\n",(0,n.jsxs)(s.table,{children:[(0,n.jsx)(s.thead,{children:(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.th,{children:"Name"}),(0,n.jsx)(s.th,{children:"Default Value"}),(0,n.jsx)(s.th,{children:"Description"})]})}),(0,n.jsxs)(s.tbody,{children:[(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"relay"})}),(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"true"})}),(0,n.jsx)(s.td,{children:"Enable relay protocol: true|false"})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"relay-peer-exchange"})}),(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"false"})}),(0,n.jsx)(s.td,{children:"Enable gossipsub peer exchange in relay protocol: true|false"})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"rln-relay"})}),(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"false"})}),(0,n.jsx)(s.td,{children:"Enable spam protection through rln-relay: true|false"})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"rln-relay-cred-path"})}),(0,n.jsx)(s.td,{}),(0,n.jsx)(s.td,{children:"The path for persisting rln-relay credential"})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"rln-relay-membership-index"})}),(0,n.jsx)(s.td,{}),(0,n.jsx)(s.td,{children:"The index of the onchain commitment to use"})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"rln-relay-dynamic"})}),(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"false"})}),(0,n.jsx)(s.td,{children:"Enable waku-rln-relay with on-chain dynamic group management: true|false"})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"rln-relay-id-key"})}),(0,n.jsx)(s.td,{}),(0,n.jsx)(s.td,{children:"Rln relay identity secret key as a Hex string"})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"rln-relay-id-commitment-key"})}),(0,n.jsx)(s.td,{}),(0,n.jsx)(s.td,{children:"Rln relay identity commitment key as a Hex string"})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"rln-relay-eth-client-address"})}),(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"ws://localhost:8540/"})}),(0,n.jsxs)(s.td,{children:["WebSocket address of an Ethereum testnet client e.g., ",(0,n.jsx)(s.code,{children:"ws://localhost:8540/"})]})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"rln-relay-eth-contract-address"})}),(0,n.jsx)(s.td,{}),(0,n.jsx)(s.td,{children:"Address of membership contract on an Ethereum testnet"})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"rln-relay-eth-private-key"})}),(0,n.jsx)(s.td,{}),(0,n.jsx)(s.td,{children:"Private key for broadcasting transactions"})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"execute"})}),(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"false"})}),(0,n.jsx)(s.td,{children:"Runs the registration function on-chain. By default, a dry-run will occur"})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"rln-relay-cred-password"})}),(0,n.jsx)(s.td,{}),(0,n.jsx)(s.td,{children:"Password for encrypting RLN credentials"})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"rln-relay-bandwidth-threshold"})}),(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"0 # to maintain backwards compatibility"})}),(0,n.jsx)(s.td,{children:"Message rate in bytes/sec after which verification of proofs should happen"})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"staticnode"})}),(0,n.jsx)(s.td,{}),(0,n.jsx)(s.td,{children:"Peer multiaddr to directly connect with. Argument may be repeated"})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"keep-alive"})}),(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"false"})}),(0,n.jsx)(s.td,{children:"Enable keep-alive for idle connections: true|false"})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"pubsub-topic"})}),(0,n.jsx)(s.td,{}),(0,n.jsxs)(s.td,{children:["Default pubsub topic to subscribe to. Argument may be repeated. ",(0,n.jsx)(s.strong,{children:"Deprecated!"})," Please use ",(0,n.jsx)(s.code,{children:"shard"})," and/or ",(0,n.jsx)(s.code,{children:"content-topic"})," instead"]})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"shard"})}),(0,n.jsx)(s.td,{}),(0,n.jsx)(s.td,{children:"Shard to subscribe to. Argument may be repeated"})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"num-shards-in-network"})}),(0,n.jsx)(s.td,{}),(0,n.jsx)(s.td,{children:"Number of shards in the network. Used to map content topics to shards when using autosharding"})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"content-topic"})}),(0,n.jsx)(s.td,{}),(0,n.jsx)(s.td,{children:"Default content topic to subscribe to. Argument may be repeated"})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"reliability"})}),(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"false"})}),(0,n.jsx)(s.td,{children:"Enable experimental reliability protocol true|false"})]})]})]}),"\n",(0,n.jsx)(s.h2,{id:"store-and-message-store-config",children:"Store and message store config"}),"\n",(0,n.jsxs)(s.table,{children:[(0,n.jsx)(s.thead,{children:(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.th,{children:"Name"}),(0,n.jsx)(s.th,{children:"Default Value"}),(0,n.jsx)(s.th,{children:"Description"})]})}),(0,n.jsxs)(s.tbody,{children:[(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"store"})}),(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"false"})}),(0,n.jsx)(s.td,{children:"Enable/disable waku store protocol"})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"storenode"})}),(0,n.jsx)(s.td,{}),(0,n.jsx)(s.td,{children:"Peer multiaddress to query for storage"})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"store-message-retention-policy"})}),(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"time:172800"})}),(0,n.jsxs)(s.td,{children:["Message store retention policy. Time retention policy: ",(0,n.jsx)(s.code,{children:"time:<seconds>"}),". Capacity retention policy: ",(0,n.jsx)(s.code,{children:"capacity:<count>"}),". Size retention policy: ",(0,n.jsx)(s.code,{children:"size:<xMB/xGB>"}),". Set to ",(0,n.jsx)(s.code,{children:"none"})," to disable"]})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"store-message-db-url"})}),(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"sqlite://store.sqlite3"})}),(0,n.jsx)(s.td,{children:"The database connection URL for persistent storage"})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"store-message-db-vacuum"})}),(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"false"})}),(0,n.jsx)(s.td,{children:"Enable database vacuuming at start. Only supported by SQLite database engine"})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"store-message-db-migration"})}),(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"true"})}),(0,n.jsx)(s.td,{children:"Enable database migration at start"})]})]})]}),"\n",(0,n.jsx)(s.h2,{id:"store-sync",children:"Store Sync"}),"\n",(0,n.jsxs)(s.table,{children:[(0,n.jsx)(s.thead,{children:(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.th,{children:"Name"}),(0,n.jsx)(s.th,{children:"Default Value"}),(0,n.jsx)(s.th,{children:"Description"})]})}),(0,n.jsxs)(s.tbody,{children:[(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"store-sync"})}),(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"false"})}),(0,n.jsx)(s.td,{children:"Enable/disable waku store sync protocol"})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"store-sync-interval"})}),(0,n.jsxs)(s.td,{children:[(0,n.jsx)(s.code,{children:"300"})," 5 minutes"]}),(0,n.jsx)(s.td,{children:"Interval between store synchronization attempts"})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"store-sync-range"})}),(0,n.jsxs)(s.td,{children:[(0,n.jsx)(s.code,{children:"3600"})," 1 hour"]}),(0,n.jsx)(s.td,{children:"Amount of time to sync"})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"store-sync-relay-jitter"})}),(0,n.jsxs)(s.td,{children:[(0,n.jsx)(s.code,{children:"20"})," seconds"]}),(0,n.jsx)(s.td,{children:"Sync range offset to account for relay's message propagation jitter"})]})]})]}),"\n",(0,n.jsx)(s.h2,{id:"filter-config",children:"Filter config"}),"\n",(0,n.jsxs)(s.table,{children:[(0,n.jsx)(s.thead,{children:(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.th,{children:"Name"}),(0,n.jsx)(s.th,{children:"Default Value"}),(0,n.jsx)(s.th,{children:"Description"})]})}),(0,n.jsxs)(s.tbody,{children:[(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"filter"})}),(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"false"})}),(0,n.jsx)(s.td,{children:"Enable filter protocol: true|false"})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"filternode"})}),(0,n.jsx)(s.td,{}),(0,n.jsx)(s.td,{children:"Peer multiaddr to request content filtering of messages"})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"filter-subscription-timeout"})}),(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"300 # 5 minutes"})}),(0,n.jsx)(s.td,{children:"Timeout for filter subscription without ping or refresh it, in seconds. Only for v2 filter protocol"})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"filter-max-peers-to-serve"})}),(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"1000"})}),(0,n.jsx)(s.td,{children:"Maximum number of peers to serve at a time. Only for v2 filter protocol"})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"filter-max-criteria"})}),(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"1000"})}),(0,n.jsx)(s.td,{children:"Maximum number of pubsub and content topic combinations per peer at a time. Only for v2 filter protocol"})]})]})]}),"\n",(0,n.jsx)(s.h2,{id:"light-push-config",children:"Light push config"}),"\n",(0,n.jsxs)(s.p,{children:["| Name | Default Value | Description |\n| --------------- | ------------- | --------------------------------------------------------- | ----- |\n| ",(0,n.jsx)(s.code,{children:"lightpush"})," | ",(0,n.jsx)(s.code,{children:"false"})," | Enable lightpush protocol: true | false |\n| ",(0,n.jsx)(s.code,{children:"lightpushnode"})," | | Peer multiaddr to request lightpush of published messages |"]}),"\n",(0,n.jsx)(s.h2,{id:"rest-http-config",children:"REST HTTP config"}),"\n",(0,n.jsxs)(s.table,{children:[(0,n.jsx)(s.thead,{children:(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.th,{children:"Name"}),(0,n.jsx)(s.th,{children:"Default Value"}),(0,n.jsx)(s.th,{children:"Description"})]})}),(0,n.jsxs)(s.tbody,{children:[(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"rest"})}),(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"false"})}),(0,n.jsx)(s.td,{children:"Enable Waku REST HTTP server: true|false"})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"rest-address"})}),(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"127.0.0.1"})}),(0,n.jsx)(s.td,{children:"Listening address of the REST HTTP server"})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"rest-port"})}),(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"8645"})}),(0,n.jsx)(s.td,{children:"Listening port of the REST HTTP server"})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"rest-relay-cache-capacity"})}),(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"30"})}),(0,n.jsx)(s.td,{children:"Capacity of the Relay REST API message cache"})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"rest-admin"})}),(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"false"})}),(0,n.jsx)(s.td,{children:"Enable access to REST HTTP Admin API: true|false"})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"rest-allow-origin"})}),(0,n.jsx)(s.td,{}),(0,n.jsxs)(s.td,{children:["Allow cross-origin requests from the specified origin. When using the REST API in a browser, specify the origin host to get a valid response from the node REST HTTP server. This option may be repeated and can contain wildcards (?,*) for defining URLs and ports such as ",(0,n.jsx)(s.code,{children:"localhost:*"}),", ",(0,n.jsx)(s.code,{children:"127.0.0.1:8080"}),", or allow any website with ",(0,n.jsx)(s.code,{children:"*"})]})]})]})]}),"\n",(0,n.jsx)(s.h2,{id:"metrics-config",children:"Metrics config"}),"\n",(0,n.jsxs)(s.table,{children:[(0,n.jsx)(s.thead,{children:(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.th,{children:"Name"}),(0,n.jsx)(s.th,{children:"Default Value"}),(0,n.jsx)(s.th,{children:"Description"})]})}),(0,n.jsxs)(s.tbody,{children:[(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"metrics-server"})}),(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"false"})}),(0,n.jsx)(s.td,{children:"Enable the metrics server: true|false"})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"metrics-server-address"})}),(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"127.0.0.1"})}),(0,n.jsx)(s.td,{children:"Listening address of the metrics server"})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"metrics-server-port"})}),(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"8008"})}),(0,n.jsx)(s.td,{children:"Listening HTTP port of the metrics server"})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"metrics-logging"})}),(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"true"})}),(0,n.jsx)(s.td,{children:"Enable metrics logging: true|false"})]})]})]}),"\n",(0,n.jsx)(s.h2,{id:"dns-discovery-config",children:"DNS discovery config"}),"\n",(0,n.jsxs)(s.table,{children:[(0,n.jsx)(s.thead,{children:(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.th,{children:"Name"}),(0,n.jsx)(s.th,{children:"Default Value"}),(0,n.jsx)(s.th,{children:"Description"})]})}),(0,n.jsxs)(s.tbody,{children:[(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"dns-discovery"})}),(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"false"})}),(0,n.jsx)(s.td,{children:"Enable discovering nodes via DNS"})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"dns-discovery-url"})}),(0,n.jsx)(s.td,{}),(0,n.jsxs)(s.td,{children:["URL for DNS node list in format ",(0,n.jsx)(s.code,{children:"'enrtree://<key\\>@<fqdn\\>'"})]})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"dns-discovery-name-server"})}),(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:'["1.1.1.1", "1.0.0.1"]'})}),(0,n.jsx)(s.td,{children:"DNS name server IPs to query. Argument may be repeated"})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"rendezvous"})}),(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"true"})}),(0,n.jsx)(s.td,{children:"Enable waku rendezvous discovery server"})]})]})]}),"\n",(0,n.jsx)(s.h2,{id:"discv5-config",children:"Discv5 config"}),"\n",(0,n.jsxs)(s.table,{children:[(0,n.jsx)(s.thead,{children:(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.th,{children:"Name"}),(0,n.jsx)(s.th,{children:"Default Value"}),(0,n.jsx)(s.th,{children:"Description"})]})}),(0,n.jsxs)(s.tbody,{children:[(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"discv5-discovery"})}),(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"false"})}),(0,n.jsx)(s.td,{children:"Enable discovering nodes via Node Discovery v5"})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"discv5-udp-port"})}),(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"9000"})}),(0,n.jsx)(s.td,{children:"Listening UDP port for Node Discovery v5"})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"discv5-bootstrap-node"})}),(0,n.jsx)(s.td,{}),(0,n.jsx)(s.td,{children:"Text-encoded ENR for bootstrap node. Used when connecting to the network. Argument may be repeated"})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"discv5-enr-auto-update"})}),(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"false"})}),(0,n.jsx)(s.td,{children:"Discovery can automatically update its ENR with the IP address"})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"discv5-table-ip-limit"})}),(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"10"})}),(0,n.jsx)(s.td,{children:"Maximum amount of nodes with the same IP in discv5 routing tables"})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"discv5-bucket-ip-limit"})}),(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"2"})}),(0,n.jsx)(s.td,{children:"Maximum amount of nodes with the same IP in discv5 routing table buckets"})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"discv5-bits-per-hop"})}),(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"1"})}),(0,n.jsx)(s.td,{children:"Kademlia's b variable, increase for less hops per lookup"})]})]})]}),"\n",(0,n.jsx)(s.h2,{id:"waku-peer-exchange-config",children:"Waku peer exchange config"}),"\n",(0,n.jsxs)(s.table,{children:[(0,n.jsx)(s.thead,{children:(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.th,{children:"Name"}),(0,n.jsx)(s.th,{children:"Default Value"}),(0,n.jsx)(s.th,{children:"Description"})]})}),(0,n.jsxs)(s.tbody,{children:[(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"peer-exchange"})}),(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"false"})}),(0,n.jsx)(s.td,{children:"Enable waku peer exchange protocol (responder side): true|false"})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"peer-exchange-node"})}),(0,n.jsx)(s.td,{}),(0,n.jsx)(s.td,{children:"Peer multiaddr to send peer exchange requests to. (enables peer exchange protocol requester side)"})]})]})]}),"\n",(0,n.jsx)(s.h2,{id:"websocket-config",children:"WebSocket config"}),"\n",(0,n.jsxs)(s.table,{children:[(0,n.jsx)(s.thead,{children:(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.th,{children:"Name"}),(0,n.jsx)(s.th,{children:"Default Value"}),(0,n.jsx)(s.th,{children:"Description"})]})}),(0,n.jsxs)(s.tbody,{children:[(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"websocket-support"})}),(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"false"})}),(0,n.jsx)(s.td,{children:"Enable websocket: true|false"})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"websocket-port"})}),(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"8000"})}),(0,n.jsx)(s.td,{children:"WebSocket listening port"})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"websocket-secure-support"})}),(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"false"})}),(0,n.jsx)(s.td,{children:"Enable secure websocket: true|false"})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"websocket-secure-key-path"})}),(0,n.jsx)(s.td,{}),(0,n.jsx)(s.td,{children:"Secure websocket key path: '/path/to/key.txt'"})]}),(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"websocket-secure-cert-path"})}),(0,n.jsx)(s.td,{}),(0,n.jsx)(s.td,{children:"Secure websocket Certificate path: '/path/to/cert.txt'"})]})]})]}),"\n",(0,n.jsx)(s.h2,{id:"non-relay-request-response-protocol-dos-protection-configuration",children:"Non-relay, request-response protocol DOS protection configuration"}),"\n",(0,n.jsxs)(s.table,{children:[(0,n.jsx)(s.thead,{children:(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.th,{children:"Name"}),(0,n.jsx)(s.th,{children:"Default Value"}),(0,n.jsx)(s.th,{children:"Description"})]})}),(0,n.jsx)(s.tbody,{children:(0,n.jsxs)(s.tr,{children:[(0,n.jsx)(s.td,{children:(0,n.jsx)(s.code,{children:"rate-limit"})}),(0,n.jsx)(s.td,{}),(0,n.jsxs)(s.td,{children:["This is a repeatable option. Each can describe a specific rate limit configuration for a particular protocol.",(0,n.jsx)("br",{}),"Formatted as:",(0,n.jsx)(s.code,{children:"<protocol>:volume/period<time-unit>"}),(0,n.jsx)("br",{}),"- if protocol is not given, settings will be taken as default for un-set protocols. Ex: ",(0,n.jsx)(s.code,{children:"80/2s"}),(0,n.jsx)("br",{}),"-Supported protocols are: ",(0,n.jsx)(s.code,{children:"lightpush"}),"|",(0,n.jsx)(s.code,{children:"filter"}),"|",(0,n.jsx)(s.code,{children:"px"}),"|",(0,n.jsx)(s.code,{children:"store"}),"|",(0,n.jsx)(s.code,{children:"storev2"}),"|",(0,n.jsx)(s.code,{children:"storev3"}),(0,n.jsx)("br",{}),"-volume must be an integer value, representing number of requests over the period of time allowed.",(0,n.jsx)("br",{}),"-period<time-unit> must be an integer with defined unit as one of ",(0,n.jsx)(s.code,{children:"h"}),"|",(0,n.jsx)(s.code,{children:"m"}),"|",(0,n.jsx)(s.code,{children:"s"}),"|",(0,n.jsx)(s.code,{children:"ms"}),(0,n.jsx)("br",{}),"- ",(0,n.jsx)(s.code,{children:"storev2"})," and ",(0,n.jsx)(s.code,{children:"storev3"})," takes precedence over ",(0,n.jsx)(s.code,{children:"store"})," which can easy set both store protocols at once.",(0,n.jsx)("br",{}),"- In case of multiple set of the same protocol limit, last one will take place.",(0,n.jsx)("br",{}),"- if config is not set, - which is the default - means unlimited requests are allowed.",(0,n.jsx)("br",{}),"-filter has a bit different approach. It has a default setting applied if not overridden. Rate limit setting for filter will be applied per subscriber-peers, not globally - it must be considered when changing the setting.",(0,n.jsx)("br",{}),(0,n.jsx)("br",{}),"Examples:",(0,n.jsx)("br",{}),(0,n.jsx)(s.code,{children:'--rate-limit="100/1s"'})," - default for all protocols if not set otherwise.",(0,n.jsx)("br",{}),(0,n.jsx)(s.code,{children:'--rate-limit="lightpush:0/0s"'})," - lightpush protocol will not be rate-limited.",(0,n.jsx)("br",{}),(0,n.jsx)(s.code,{children:'--rate-limit="store:130/1500ms"'})," - both store-v3 and store-v2 will apply 130 request per each 1500ms separately.",(0,n.jsx)("br",{}),(0,n.jsx)(s.code,{children:'--rate-limit="px:10/1h"'})," PeerExchange will serve only 10 requests every hour.",(0,n.jsx)("br",{}),(0,n.jsx)(s.code,{children:'--rate-limit="filter:8/5m"'})," - will allow 8 subs/unsubs/ping requests for each subscriber within every 5 min."]})]})})]}),"\n",(0,n.jsx)(s.admonition,{type:"tip",children:(0,n.jsxs)(s.p,{children:["To configure your node using the provided configuration options, have a look at the ",(0,n.jsx)(s.a,{href:"/guides/nwaku/config-methods",children:"Node Configuration Methods"})," guide."]})})]})}function x(e={}){const{wrapper:s}={...(0,i.R)(),...e.components};return s?(0,n.jsx)(s,{...e,children:(0,n.jsx)(h,{...e})}):h(e)}},28453:(e,s,d)=>{d.d(s,{R:()=>t,x:()=>c});var r=d(96540);const n={},i=r.createContext(n);function t(e){const s=r.useContext(i);return r.useMemo(function(){return"function"==typeof e?e(s):{...s,...e}},[s,e])}function c(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:t(e.components),r.createElement(i.Provider,{value:s},e.children)}}}]); |