Webmesh Project
GitHubToggle Dark/Light/Auto modeToggle Dark/Light/Auto modeToggle Dark/Light/Auto modeBack to homepage

Configuration

Each node can be configured to bootstrap a new cluster or join an existing cluster. When bootstrapping a new cluster, the node will become the leader of the cluster. When joining an existing cluster, the node will attempt to join the cluster by contacting the leader.

Optionally, the node can be configured to bootstrap with a set of initial nodes. When bootstrapping with initial nodes, the nodes will perform an election to determine which node should write the initial network configuration. If the initial nodes are already part of a cluster, the node will join the cluster by contacting the leader of the cluster.

Configuration is available via command line flags, environment variables, and configuration files. The configuration is parsed in the following order:

  • Configuration Files
  • Environment Variables
  • Command Line Flags

Environment variables match the command line flags where all characters are uppercased and dashes and dots are replaced with underscores. For example, the command line flag mesh.node-id would be set via the environment variable MESH_NODE_ID.

Configuration files can be in YAML, JSON, or TOML. The configuration file is specified via the “–config” flag. The configuration file matches the structure of the command line flags. For example, the following YAML configuration would be equivalent to the shown command line flag:

# config.yaml
mesh:
  node-id: "node-1" # --mesh.node-id="node-1"

The below tables show all of the available configuration options and their default values.

General Flags

  --config         Load flags from the given configuration file
  --print-config   Print the configuration and exit

  --help       Show this help message
  --version    Show version information and exit

Global Configurations

CLI FlagEnv VarConfig FileDefaultDescription
--global.allow-remote-detectionGLOBAL_ALLOW_REMOTE_DETECTIONglobal.allow-remote-detectionfalseAllow remote endpoint detection.
--global.detect-endpointsGLOBAL_DETECT_ENDPOINTSglobal.detect-endpointsfalseDetect and advertise publicly routable endpoints.
--global.detect-ipv6GLOBAL_DETECT_IPV6global.detect-ipv6falseDetect and advertise IPv6 endpoints.
--global.detect-private-endpointsGLOBAL_DETECT_PRIVATE_ENDPOINTSglobal.detect-private-endpointsfalseDetect and advertise private endpoints.
--global.disable-ipv4GLOBAL_DISABLE_IPV4global.disable-ipv4falseDisable IPv4.
--global.disable-ipv6GLOBAL_DISABLE_IPV6global.disable-ipv6falseDisable IPv6.
--global.endpointsGLOBAL_ENDPOINTSglobal.endpoints[]Additional endpoints to advertise when joining.
--global.insecureGLOBAL_INSECUREglobal.insecurefalseDisable TLS.
--global.insecure-skip-verifyGLOBAL_INSECURE_SKIP_VERIFYglobal.insecure-skip-verifyfalseSkip TLS verification.
--global.log-formatGLOBAL_LOG_FORMATglobal.log-formattextLog format. One of ’text’ or ‘json’.
--global.log-levelGLOBAL_LOG_LEVELglobal.log-levelinfoLog level.
--global.mtlsGLOBAL_MTLSglobal.mtlsfalseEnable mutual TLS.
--global.primary-endpointGLOBAL_PRIMARY_ENDPOINTglobal.primary-endpointPrimary endpoint to advertise when joining.
--global.tls-ca-fileGLOBAL_TLS_CA_FILEglobal.tls-ca-fileTLS CA file.
--global.tls-cert-fileGLOBAL_TLS_CERT_FILEglobal.tls-cert-fileTLS certificate file.
--global.tls-client-ca-fileGLOBAL_TLS_CLIENT_CA_FILEglobal.tls-client-ca-fileTLS client CA file.
--global.tls-key-fileGLOBAL_TLS_KEY_FILEglobal.tls-key-fileTLS key file.
--global.verify-chain-onlyGLOBAL_VERIFY_CHAIN_ONLYglobal.verify-chain-onlyfalseVerify only the certificate chain.

Mesh Configurations

CLI FlagEnv VarConfig FileDefaultDescription
--mesh.default-ipam-static-ipv4MESH_DEFAULT_IPAM_STATIC_IPV4mesh.default-ipam-static-ipv4[]Static IPv4 assignments to use for the default IPAM.
--mesh.disable-default-ipamMESH_DISABLE_DEFAULT_IPAMmesh.disable-default-ipamfalseDisable the default IPAM.
--mesh.disable-feature-advertisementMESH_DISABLE_FEATURE_ADVERTISEMENTmesh.disable-feature-advertisementfalseDisable feature advertisement.
--mesh.disable-ipv4MESH_DISABLE_IPV4mesh.disable-ipv4falseDisable IPv4 usage.
--mesh.disable-ipv6MESH_DISABLE_IPV6mesh.disable-ipv6falseDisable IPv6 usage.
--mesh.grpc-advertise-portMESH_GRPC_ADVERTISE_PORTmesh.grpc-advertise-port8443Port to advertise for gRPC.
--mesh.ice-peersMESH_ICE_PEERSmesh.ice-peers[]Peers to request direct edges to over ICE.
--mesh.join-addressesMESH_JOIN_ADDRESSESmesh.join-addresses[]Addresses of nodes to join.
--mesh.join-multiaddrsMESH_JOIN_MULTIADDRSmesh.join-multiaddrs[]Multiaddresses of nodes to join.
--mesh.libp2p-peersMESH_LIBP2P_PEERSmesh.libp2p-peers[]Map of peer IDs to rendezvous strings for edges over libp2p.
--mesh.max-join-retriesMESH_MAX_JOIN_RETRIESmesh.max-join-retries15Maximum number of join retries.
--mesh.meshdns-advertise-portMESH_MESHDNS_ADVERTISE_PORTmesh.meshdns-advertise-port53Port to advertise for DNS.
--mesh.node-idMESH_NODE_IDmesh.node-idNode ID. One will be chosen automatically if left unset.
--mesh.primary-endpointMESH_PRIMARY_ENDPOINTmesh.primary-endpointPrimary endpoint to advertise when joining.
--mesh.request-observerMESH_REQUEST_OBSERVERmesh.request-observerfalseRequest to be an observer in the storage backend.
--mesh.request-voteMESH_REQUEST_VOTEmesh.request-votefalseRequest a vote in elections for the storage backend.
--mesh.routesMESH_ROUTESmesh.routes[]Additional routes to advertise to the mesh.
--mesh.storage-prefer-ipv6MESH_STORAGE_PREFER_IPV6mesh.storage-prefer-ipv6falsePrefer IPv6 connections for the storage backend transport.
--mesh.use-meshdnsMESH_USE_MESHDNSmesh.use-meshdnsfalseSet mesh DNS servers to the system configuration.
--mesh.zone-awareness-idMESH_ZONE_AWARENESS_IDmesh.zone-awareness-idZone awareness ID.

Auth Configurations

CLI FlagEnv VarConfig FileDefaultDescription
--auth.basic.passwordAUTH_BASIC_PASSWORDauth.basic.passwordBasic auth password.
--auth.basic.usernameAUTH_BASIC_USERNAMEauth.basic.usernameBasic auth username.
--auth.id-auth.aliasAUTH_ID_AUTH_ALIASauth.id-auth.aliasAlias to attempt to register with our ID.
--auth.id-auth.enabledAUTH_ID_AUTH_ENABLEDauth.id-auth.enabledfalseEnable ID authentication.
--auth.ldap.passwordAUTH_LDAP_PASSWORDauth.ldap.passwordLDAP auth password.
--auth.ldap.usernameAUTH_LDAP_USERNAMEauth.ldap.usernameLDAP auth username.
--auth.mtls.cert-dataAUTH_MTLS_CERT_DATAauth.mtls.cert-dataBase64 encoded TLS certificate data to present when joining.
--auth.mtls.cert-fileAUTH_MTLS_CERT_FILEauth.mtls.cert-filePath to a TLS certificate file to present when joining.
--auth.mtls.key-dataAUTH_MTLS_KEY_DATAauth.mtls.key-dataBase64 encoded TLS key data for the certificate.
--auth.mtls.key-fileAUTH_MTLS_KEY_FILEauth.mtls.key-filePath to a TLS key file for the certificate.

TODO: Generic flags need to be provided for external plugin auth providers

Bootstrap Configurations

CLI FlagEnv VarConfig FileDefaultDescription
--bootstrap.adminBOOTSTRAP_ADMINbootstrap.adminadminUser and/or node name to assign administrator privileges to when bootstraping a new cluster
--bootstrap.default-network-policyBOOTSTRAP_DEFAULT_NETWORK_POLICYbootstrap.default-network-policyacceptDefault network policy to apply to the mesh when bootstraping a new cluster
--bootstrap.disable-rbacBOOTSTRAP_DISABLE_RBACbootstrap.disable-rbacfalseDisable RBAC when bootstrapping a new cluster
--bootstrap.election-timeoutBOOTSTRAP_ELECTION_TIMEOUTbootstrap.election-timeout3sElection timeout to use when bootstrapping a new cluster
--bootstrap.enabledBOOTSTRAP_ENABLEDbootstrap.enabledfalseAttempt to bootstrap a new cluster
--bootstrap.forceBOOTSTRAP_FORCEbootstrap.forcefalseForce new bootstrap
--bootstrap.ipv4-networkBOOTSTRAP_IPV4_NETWORKbootstrap.ipv4-network172.16.0.0/12IPv4 network of the mesh to write to the database when bootstraping a new cluster
--bootstrap.ipv6-networkBOOTSTRAP_IPV6_NETWORKbootstrap.ipv6-networkIPv6 network of the mesh to write to the database when bootstraping a new cluster, if left unset one will be generated
--bootstrap.mesh-domainBOOTSTRAP_MESH_DOMAINbootstrap.mesh-domainwebmesh.internalDomain of the mesh to write to the database when bootstraping a new cluster
--bootstrap.transport.server-grpc-portsBOOTSTRAP_TRANSPORT_SERVER_GRPC_PORTSbootstrap.transport.server-grpc-ports[]Map of node IDs to gRPC ports to bootstrap with
--bootstrap.transport.tcp-advertise-addressBOOTSTRAP_TRANSPORT_TCP_ADVERTISE_ADDRESSbootstrap.transport.tcp-advertise-address127.0.0.1:9001Address to advertise for raft consensus
--bootstrap.transport.tcp-connect-timeoutBOOTSTRAP_TRANSPORT_TCP_CONNECT_TIMEOUTbootstrap.transport.tcp-connect-timeout3sMaximum amount of time to wait for a TCP connection to be established
--bootstrap.transport.tcp-connection-poolBOOTSTRAP_TRANSPORT_TCP_CONNECTION_POOLbootstrap.transport.tcp-connection-pool0Maximum number of TCP connections to maintain to other nodes
--bootstrap.transport.tcp-listen-addressBOOTSTRAP_TRANSPORT_TCP_LISTEN_ADDRESSbootstrap.transport.tcp-listen-address[::]:9001Address to use when using TCP raft consensus to bootstrap
--bootstrap.transport.tcp-serversBOOTSTRAP_TRANSPORT_TCP_SERVERSbootstrap.transport.tcp-servers[]Map of node IDs to raft addresses to bootstrap with
--bootstrap.votersBOOTSTRAP_VOTERSbootstrap.voters[]Comma separated list of node IDs to assign voting privileges to when bootstraping a new cluster

Storage Configurations

CLI FlagEnv VarConfig FileDefaultDescription
--storage.in-memorySTORAGE_IN_MEMORYstorage.in-memoryfalseUse in-memory storage
--storage.log-formatSTORAGE_LOG_FORMATstorage.log-formatLog format for the storage provider
--storage.log-levelSTORAGE_LOG_LEVELstorage.log-levelinfoLog level for the storage provider
--storage.pathSTORAGE_PATHstorage.path/var/lib/webmesh/storePath to the storage directory
--storage.providerSTORAGE_PROVIDERstorage.providerraftStorage provider (defaults to raftstorage or passthrough depending on other options)

Raft Storage Configurations

CLI FlagEnv VarConfig FileDefaultDescription
--storage.raft.apply-timeoutSTORAGE_RAFT_APPLY_TIMEOUTstorage.raft.apply-timeout10sRaft apply timeout.
--storage.raft.commit-timeoutSTORAGE_RAFT_COMMIT_TIMEOUTstorage.raft.commit-timeout10sRaft commit timeout.
--storage.raft.connection-pool-countSTORAGE_RAFT_CONNECTION_POOL_COUNTstorage.raft.connection-pool-count0Raft connection pool count.
--storage.raft.connection-timeoutSTORAGE_RAFT_CONNECTION_TIMEOUTstorage.raft.connection-timeout3sRaft connection timeout.
--storage.raft.election-timeoutSTORAGE_RAFT_ELECTION_TIMEOUTstorage.raft.election-timeout2sRaft election timeout.
--storage.raft.heartbeat-purge-thresholdSTORAGE_RAFT_HEARTBEAT_PURGE_THRESHOLDstorage.raft.heartbeat-purge-threshold25Raft heartbeat purge threshold.
--storage.raft.heartbeat-timeoutSTORAGE_RAFT_HEARTBEAT_TIMEOUTstorage.raft.heartbeat-timeout2sRaft heartbeat timeout.
--storage.raft.leader-lease-timeoutSTORAGE_RAFT_LEADER_LEASE_TIMEOUTstorage.raft.leader-lease-timeout2sRaft leader lease timeout.
--storage.raft.listen-addressSTORAGE_RAFT_LISTEN_ADDRESSstorage.raft.listen-address[::]:9000Raft listen address.
--storage.raft.max-append-entriesSTORAGE_RAFT_MAX_APPEND_ENTRIESstorage.raft.max-append-entries64Raft max append entries.
--storage.raft.observer-chan-bufferSTORAGE_RAFT_OBSERVER_CHAN_BUFFERstorage.raft.observer-chan-buffer100Raft observer channel buffer.
--storage.raft.snapshot-intervalSTORAGE_RAFT_SNAPSHOT_INTERVALstorage.raft.snapshot-interval30sRaft snapshot interval.
--storage.raft.snapshot-retentionSTORAGE_RAFT_SNAPSHOT_RETENTIONstorage.raft.snapshot-retention2Raft snapshot retention.
--storage.raft.snapshot-thresholdSTORAGE_RAFT_SNAPSHOT_THRESHOLDstorage.raft.snapshot-threshold8192Raft snapshot threshold.

External Storage Configurations

CLI FlagEnv VarConfig FileDefaultDescription
--storage.external.configSTORAGE_EXTERNAL_CONFIGstorage.external.config{}Configuration to pass to the plugin as key value pairs
--storage.external.insecureSTORAGE_EXTERNAL_INSECUREstorage.external.insecurefalseUse an insecure connection to the plugin server
--storage.external.serverSTORAGE_EXTERNAL_SERVERstorage.external.serverAddress of a server for the plugin
--storage.external.tls-ca-fileSTORAGE_EXTERNAL_TLS_CA_FILEstorage.external.tls-ca-filePath to a CA for verifying certificates
--storage.external.tls-cert-fileSTORAGE_EXTERNAL_TLS_CERT_FILEstorage.external.tls-cert-filePath to a certificate for authenticating to the plugin server
--storage.external.tls-key-fileSTORAGE_EXTERNAL_TLS_KEY_FILEstorage.external.tls-key-filePath to a key for authenticating to the plugin server
--storage.external.tls-skip-verifySTORAGE_EXTERNAL_TLS_SKIP_VERIFYstorage.external.tls-skip-verifyfalseSkip verifying the plugin server’s certificate

TLS Configurations

CLI FlagEnv VarConfig FileDefaultDescription
--tls.ca-dataTLS_CA_DATAtls.ca-dataBase64 encoded TLS CA certificate for verifying peer certificates.
--tls.ca-fileTLS_CA_FILEtls.ca-filePath to a TLS CA certificate for verifying peer certificates.
--tls.insecureTLS_INSECUREtls.insecurefalseDisable TLS.
--tls.insecure-skip-verifyTLS_INSECURE_SKIP_VERIFYtls.insecure-skip-verifyfalseSkip verification of the server TLS cert.
--tls.verify-chain-onlyTLS_VERIFY_CHAIN_ONLYtls.verify-chain-onlyfalseVerify only the certificate chain.

WireGuard Configurations

CLI FlagEnv VarConfig FileDefaultDescription
--wireguard.disable-full-tunnelWIREGUARD_DISABLE_FULL_TUNNELwireguard.disable-full-tunnelfalseIgnore routes for a default gateway.
--wireguard.endpointsWIREGUARD_ENDPOINTSwireguard.endpoints[]Additional WireGuard endpoints to broadcast when joining.
--wireguard.force-interface-nameWIREGUARD_FORCE_INTERFACE_NAMEwireguard.force-interface-namefalseForce the use of the given name by deleting any pre-existing interface with the same name.
--wireguard.force-tunWIREGUARD_FORCE_TUNwireguard.force-tunfalseForce the use of a TUN interface.
--wireguard.interface-nameWIREGUARD_INTERFACE_NAMEwireguard.interface-namewebmesh0The name of the interface.
--wireguard.key-fileWIREGUARD_KEY_FILEwireguard.key-fileThe path to the WireGuard private key. If it does not exist it will be created.
--wireguard.key-rotation-intervalWIREGUARD_KEY_ROTATION_INTERVALwireguard.key-rotation-interval168h0m0sThe interval to rotate wireguard keys. Set this to 0 to disable key rotation.
--wireguard.listen-portWIREGUARD_LISTEN_PORTwireguard.listen-port51820The port to listen on.
--wireguard.masqueradeWIREGUARD_MASQUERADEwireguard.masqueradefalseEnable masquerading of traffic from the wireguard interface.
--wireguard.modprobeWIREGUARD_MODPROBEwireguard.modprobefalseAttempt to load the wireguard kernel module on linux systems.
--wireguard.mtuWIREGUARD_MTUwireguard.mtu1420The MTU to use for the interface.
--wireguard.persistent-keepaliveWIREGUARD_PERSISTENT_KEEPALIVEwireguard.persistent-keepalive0sThe interval at which to send keepalive packets to peers.
--wireguard.record-metricsWIREGUARD_RECORD_METRICSwireguard.record-metricsfalseRecord WireGuard metrics. These are only exposed if the metrics server is enabled.
--wireguard.record-metrics-intervalWIREGUARD_RECORD_METRICS_INTERVALwireguard.record-metrics-interval10sThe interval at which to update WireGuard metrics.

Discovery Configurations

CLI FlagEnv VarConfig FileDefaultDescription
--discovery.bootstrap-serversDISCOVERY_BOOTSTRAP_SERVERSdiscovery.bootstrap-servers[]list of bootstrap servers to use for the DHT
--discovery.connect-timeoutDISCOVERY_CONNECT_TIMEOUTdiscovery.connect-timeout5stimeout for connecting to a peer
--discovery.discoverDISCOVERY_DISCOVERdiscovery.discoverfalseuse the libp2p kademlia DHT for discovery
--discovery.local-addrsDISCOVERY_LOCAL_ADDRSdiscovery.local-addrs[]list of local addresses to announce to the discovery service
--discovery.rendezvousDISCOVERY_RENDEZVOUSdiscovery.rendezvouspre-shared key to use as a rendezvous point for peer discovery

Services Configurations

CLI FlagEnv VarConfig FileDefaultDescription
--services.api.admin-enabledSERVICES_API_ADMIN_ENABLEDservices.api.admin-enabledfalseEnable and register the AdminAPI.
--services.api.allowed-originsSERVICES_API_ALLOWED_ORIGINSservices.api.allowed-origins[*]Allowed origins for CORS.
--services.api.cors-enabledSERVICES_API_CORS_ENABLEDservices.api.cors-enabledfalseEnable CORS for the gRPC web server.
--services.api.disable-leader-proxySERVICES_API_DISABLE_LEADER_PROXYservices.api.disable-leader-proxyfalseDisable the leader proxy.
--services.api.disabledSERVICES_API_DISABLEDservices.api.disabledfalseDisable the API. This is ignored when joining as a Raft member.
--services.api.insecureSERVICES_API_INSECUREservices.api.insecurefalseDisable TLS.
--services.api.libp2p.announceSERVICES_API_LIBP2P_ANNOUNCEservices.api.libp2p.announcefalseAnnounce this peer to the discovery service.
--services.api.libp2p.bootstrap-serversSERVICES_API_LIBP2P_BOOTSTRAP_SERVERSservices.api.libp2p.bootstrap-servers[]List of bootstrap servers to use for the DHT.
--services.api.libp2p.connect-timeoutSERVICES_API_LIBP2P_CONNECT_TIMEOUTservices.api.libp2p.connect-timeout0sTimeout for connecting to a peer.
--services.api.libp2p.enabledSERVICES_API_LIBP2P_ENABLEDservices.api.libp2p.enabledfalseEnable the libp2p API.
--services.api.libp2p.local-addrsSERVICES_API_LIBP2P_LOCAL_ADDRSservices.api.libp2p.local-addrs[]List of local addresses to announce to the discovery service.
--services.api.libp2p.rendezvousSERVICES_API_LIBP2P_RENDEZVOUSservices.api.libp2p.rendezvousPre-shared key to use as a rendezvous point for peer discovery.
--services.api.listen-addressSERVICES_API_LISTEN_ADDRESSservices.api.listen-address[::]:8443gRPC listen address.
--services.api.mesh-enabledSERVICES_API_MESH_ENABLEDservices.api.mesh-enabledfalseEnable and register the MeshAPI.
--services.api.mtlsSERVICES_API_MTLSservices.api.mtlsfalseRequire clients to provide a client certificate.
--services.api.mtls-client-ca-fileSERVICES_API_MTLS_CLIENT_CA_FILEservices.api.mtls-client-ca-fileClient CA file if not provided by the mtls auth plugin
--services.api.tls-cert-dataSERVICES_API_TLS_CERT_DATAservices.api.tls-cert-dataTLS certificate data.
--services.api.tls-cert-fileSERVICES_API_TLS_CERT_FILEservices.api.tls-cert-fileTLS certificate file.
--services.api.tls-key-dataSERVICES_API_TLS_KEY_DATAservices.api.tls-key-dataTLS key data.
--services.api.tls-key-fileSERVICES_API_TLS_KEY_FILEservices.api.tls-key-fileTLS key file.
--services.api.web-enabledSERVICES_API_WEB_ENABLEDservices.api.web-enabledfalseEnable gRPC over HTTP/1.1.
--services.meshdns.cache-sizeSERVICES_MESHDNS_CACHE_SIZEservices.meshdns.cache-size100Size of the remote DNS cache (0 = disabled).
--services.meshdns.compressionSERVICES_MESHDNS_COMPRESSIONservices.meshdns.compressiontrueEnable DNS compression.
--services.meshdns.disable-forwardingSERVICES_MESHDNS_DISABLE_FORWARDINGservices.meshdns.disable-forwardingfalseDisable forwarding requests.
--services.meshdns.enabledSERVICES_MESHDNS_ENABLEDservices.meshdns.enabledfalseEnable mesh DNS.
--services.meshdns.forwardersSERVICES_MESHDNS_FORWARDERSservices.meshdns.forwarders[]DNS forwarders (default = system resolvers).
--services.meshdns.include-system-resolversSERVICES_MESHDNS_INCLUDE_SYSTEM_RESOLVERSservices.meshdns.include-system-resolversfalseInclude system resolvers in any provided forwarders list.
--services.meshdns.ipv6-onlySERVICES_MESHDNS_IPV6_ONLYservices.meshdns.ipv6-onlyfalseOnly respond to IPv6 requests.
--services.meshdns.isten-tcpSERVICES_MESHDNS_ISTEN_TCPservices.meshdns.isten-tcp[::]:53TCP address to listen on for DNS requests.
--services.meshdns.listen-udpSERVICES_MESHDNS_LISTEN_UDPservices.meshdns.listen-udp[::]:53UDP address to listen on for DNS requests.
--services.meshdns.request-timeoutSERVICES_MESHDNS_REQUEST_TIMEOUTservices.meshdns.request-timeout5sDNS request timeout.
--services.meshdns.reuse-portSERVICES_MESHDNS_REUSE_PORTservices.meshdns.reuse-port0Enable SO_REUSEPORT for mesh DNS. Only available on Linux systems.
--services.meshdns.subscribe-forwardersSERVICES_MESHDNS_SUBSCRIBE_FORWARDERSservices.meshdns.subscribe-forwardersfalseSubscribe to new nodes that can forward requests.
--services.metrics.enabledSERVICES_METRICS_ENABLEDservices.metrics.enabledfalseEnable gRPC metrics.
--services.metrics.listen-addressSERVICES_METRICS_LISTEN_ADDRESSservices.metrics.listen-address[::]:8080gRPC metrics listen address.
--services.metrics.pathSERVICES_METRICS_PATHservices.metrics.path/metricsgRPC metrics path.
--services.registrar.enabledSERVICES_REGISTRAR_ENABLEDservices.registrar.enabledfalseEnable the registrar service.
--services.registrar.id-auth.allowed-idsSERVICES_REGISTRAR_ID_AUTH_ALLOWED_IDSservices.registrar.id-auth.allowed-ids[]List of allowed peer IDs
--services.registrar.id-auth.id-filesSERVICES_REGISTRAR_ID_AUTH_ID_FILESservices.registrar.id-auth.id-files[]Path to a file containing a list of allowed peer IDs
--services.registrar.id-auth.insecure-allow-allSERVICES_REGISTRAR_ID_AUTH_INSECURE_ALLOW_ALLservices.registrar.id-auth.insecure-allow-allfalseAllow all peer IDs. This is insecure and should only be used for testing.
--services.registrar.id-auth.remote-fetch-retriesSERVICES_REGISTRAR_ID_AUTH_REMOTE_FETCH_RETRIESservices.registrar.id-auth.remote-fetch-retries5Number of times to retry fetching a remote ID file. Defaults to 5. Set to -1 to disable retries.
--services.registrar.id-auth.remote-fetch-retry-intervalSERVICES_REGISTRAR_ID_AUTH_REMOTE_FETCH_RETRY_INTERVALservices.registrar.id-auth.remote-fetch-retry-interval3sInterval to wait between retries to fetch a remote ID file. Defaults to 3 seconds.
--services.registrar.id-auth.time-skewSERVICES_REGISTRAR_ID_AUTH_TIME_SKEWservices.registrar.id-auth.time-skew1Maximum allowed time skew between the client and server as a multiple of 30 seconds. 0 defaults to 30 seconds. Set to -1 to disable time skew checking.
--services.registrar.id-auth.watch-id-filesSERVICES_REGISTRAR_ID_AUTH_WATCH_ID_FILESservices.registrar.id-auth.watch-id-filesfalseWatch ID files for changes
--services.registrar.id-auth.watch-intervalSERVICES_REGISTRAR_ID_AUTH_WATCH_INTERVALservices.registrar.id-auth.watch-interval1m0sInterval to poll for changes to remote ID files. When unset or less than zero, defaults to 1 minute.
--services.registrar.privateSERVICES_REGISTRAR_PRIVATEservices.registrar.privatefalseEnable private lookups.
--services.turn.enabledSERVICES_TURN_ENABLEDservices.turn.enabledfalseEnable TURN server.
--services.turn.endpointSERVICES_TURN_ENDPOINTservices.turn.endpointTURN endpoint to advertise.
--services.turn.listen-addressSERVICES_TURN_LISTEN_ADDRESSservices.turn.listen-address[::]:3478Address to listen on for STUN/TURN requests.
--services.turn.port-rangeSERVICES_TURN_PORT_RANGEservices.turn.port-range49152-65535Port range to use for TURN relays.
--services.turn.public-ipSERVICES_TURN_PUBLIC_IPservices.turn.public-ipPublic IP to advertise for STUN/TURN requests.
--services.turn.realmSERVICES_TURN_REALMservices.turn.realmwebmeshRealm used for TURN server authentication.
--services.webrtc.enabledSERVICES_WEBRTC_ENABLEDservices.webrtc.enabledfalseEnable and register the WebRTC API.
--services.webrtc.stun-serversSERVICES_WEBRTC_STUN_SERVERSservices.webrtc.stun-servers[stun:stun.l.google.com:19302]TURN/STUN servers to use for the WebRTC API.

Plugin Configurations

CLI FlagEnv VarConfig FileDefaultDescription
--plugins.basic-auth.htpasswd-filePLUGINS_BASIC_AUTH_HTPASSWD_FILEplugins.basic-auth.htpasswd-filepath to htpasswd file
--plugins.debug.disable-pprofPLUGINS_DEBUG_DISABLE_PPROFplugins.debug.disable-pproffalseDisable pprof
--plugins.debug.enable-db-querierPLUGINS_DEBUG_ENABLE_DB_QUERIERplugins.debug.enable-db-querierfalseEnable database querier
--plugins.debug.listen-addressPLUGINS_DEBUG_LISTEN_ADDRESSplugins.debug.listen-addresslocalhost:6060Address to lissten on
--plugins.debug.path-prefixPLUGINS_DEBUG_PATH_PREFIXplugins.debug.path-prefix/debugPath prefix to use for the debug server
--plugins.debug.pprof-profilesPLUGINS_DEBUG_PPROF_PROFILESplugins.debug.pprof-profilesPprof profiles to enable (default: all)
--plugins.id-auth.allowed-idsPLUGINS_ID_AUTH_ALLOWED_IDSplugins.id-auth.allowed-ids[]List of allowed peer IDs
--plugins.id-auth.id-filesPLUGINS_ID_AUTH_ID_FILESplugins.id-auth.id-files[]Path to a file containing a list of allowed peer IDs
--plugins.id-auth.insecure-allow-allPLUGINS_ID_AUTH_INSECURE_ALLOW_ALLplugins.id-auth.insecure-allow-allfalseAllow all peer IDs. This is insecure and should only be used for testing.
--plugins.id-auth.remote-fetch-retriesPLUGINS_ID_AUTH_REMOTE_FETCH_RETRIESplugins.id-auth.remote-fetch-retries0Number of times to retry fetching a remote ID file. Defaults to 5. Set to -1 to disable retries.
--plugins.id-auth.remote-fetch-retry-intervalPLUGINS_ID_AUTH_REMOTE_FETCH_RETRY_INTERVALplugins.id-auth.remote-fetch-retry-interval0sInterval to wait between retries to fetch a remote ID file. Defaults to 3 seconds.
--plugins.id-auth.time-skewPLUGINS_ID_AUTH_TIME_SKEWplugins.id-auth.time-skew0Maximum allowed time skew between the client and server as a multiple of 30 seconds. 0 defaults to 30 seconds. Set to -1 to disable time skew checking.
--plugins.id-auth.watch-id-filesPLUGINS_ID_AUTH_WATCH_ID_FILESplugins.id-auth.watch-id-filesfalseWatch ID files for changes
--plugins.id-auth.watch-intervalPLUGINS_ID_AUTH_WATCH_INTERVALplugins.id-auth.watch-interval0sInterval to poll for changes to remote ID files. When unset or less than zero, defaults to 1 minute.
--plugins.ldap.bind-dnPLUGINS_LDAP_BIND_DNplugins.ldap.bind-dnDN to bind with
--plugins.ldap.bind-passwordPLUGINS_LDAP_BIND_PASSWORDplugins.ldap.bind-passwordPassword to bind with
--plugins.ldap.ca-filePLUGINS_LDAP_CA_FILEplugins.ldap.ca-filePath to CA file to use to verify the LDAP server’s certificate
--plugins.ldap.node-id-attributePLUGINS_LDAP_NODE_ID_ATTRIBUTEplugins.ldap.node-id-attributeAttribute to use to identify the node
--plugins.ldap.serverPLUGINS_LDAP_SERVERplugins.ldap.serverLDAP server to connect to
--plugins.ldap.user-base-dnPLUGINS_LDAP_USER_BASE_DNplugins.ldap.user-base-dnBase DN to use to search for users
--plugins.ldap.user-disabled-valuePLUGINS_LDAP_USER_DISABLED_VALUEplugins.ldap.user-disabled-valueValue of the user status attribute that indicates the user is disabled
--plugins.ldap.user-id-attributePLUGINS_LDAP_USER_ID_ATTRIBUTEplugins.ldap.user-id-attributeAttribute to use to identify the user
--plugins.ldap.user-status-attributePLUGINS_LDAP_USER_STATUS_ATTRIBUTEplugins.ldap.user-status-attributeAttribute to use to determine if the user is disabled
--plugins.mtls.ca-dataPLUGINS_MTLS_CA_DATAplugins.mtls.ca-dataBase64 encoded PEM CA data to use to verify client certificates.
--plugins.mtls.ca-filePLUGINS_MTLS_CA_FILEplugins.mtls.ca-filePath to a CA file to use to verify client certificates.