docs/environment-variables.md
IPFS_PATHIPFS_LOGGINGIPFS_LOGGING_FMTGOLOG_LOG_LEVELGOLOG_LOG_FMTGOLOG_FILEGOLOG_OUTPUTGOLOG_TRACING_FILEIPFS_FUSE_DEBUGYAMUX_DEBUGIPFS_FD_MAXIPFS_DIST_PATHIPFS_NS_MAPIPFS_HTTP_ROUTERSIPFS_HTTP_ROUTERS_FILTER_PROTOCOLSIPFS_CONTENT_BLOCKING_DISABLEIPFS_WAIT_REPO_LOCKIPFS_TELEMETRYHTTPS_PROXYHTTP_PROXYNO_PROXYLIBP2P_TCP_REUSEPORTLIBP2P_TCP_MUXLIBP2P_MUX_PREFSLIBP2P_RCMGRLIBP2P_DEBUG_RCMGRLIBP2P_SWARM_FD_LIMITIPFS_PATHSets the location of the IPFS repo (where the config, blocks, etc. are stored).
Default: ~/.ipfs
IPFS_LOGGINGSpecifies the log level for Kubo.
IPFS_LOGGING is a deprecated alias for the GOLOG_LOG_LEVEL environment variable. See below.
IPFS_LOGGING_FMTSpecifies the log message format.
IPFS_LOGGING_FMT is a deprecated alias for the GOLOG_LOG_FMT environment variable. See below.
GOLOG_LOG_LEVELSpecifies the log-level, both globally and on a per-subsystem basis. Level can be one of:
debuginfowarnerrordpanicpanicfatalPer-subsystem levels can be specified with subsystem=level. One global level and one or more per-subsystem levels
can be specified by separating them with commas.
Default: error
Example:
GOLOG_LOG_LEVEL="error,core/server=debug" ipfs daemon
Logging can also be configured at runtime, both globally and on a per-subsystem basis, with the ipfs log command.
See Known logger subsystems for subsystem names related to the provide/reprovide pipeline.
GOLOG_LOG_FMTSpecifies the log message format. It supports the following values:
color -- human readable, colorized (ANSI) outputnocolor -- human readable, plain-text output.json -- structured JSON.For example, to log structured JSON (for easier parsing):
export GOLOG_LOG_FMT="json"
The logging format defaults to color when the output is a terminal, and nocolor otherwise.
GOLOG_FILESets the file to which Kubo logs. By default, Kubo logs to standard error.
GOLOG_OUTPUTWhen stderr and/or stdout options are configured or specified by the GOLOG_OUTPUT environ variable, log only to the output(s) specified. For example:
GOLOG_OUTPUT="stderr" logs only to stderrGOLOG_OUTPUT="stdout" logs only to stdoutGOLOG_OUTPUT="stderr+stdout" logs to both stderr and stdoutGOLOG_TRACING_FILESets the file to which Kubo sends tracing events. By default, tracing is disabled.
This log can be read at runtime (without writing it to a file) using the ipfs log tail command.
Warning: Enabling tracing will likely affect performance.
IPFS_FUSE_DEBUGWhen set to any non-empty value, logs every FUSE operation (open, read, write, lookup, getattr, etc.) to stderr with its arguments and return values. Useful for diagnosing mount issues or inspecting what the kernel requests.
Default: not set (no debug logging)
YAMUX_DEBUGIf SET, enables debug logging for the yamux stream muxer.
Default: false
IPFS_FD_MAXSets the file descriptor limit for Kubo. If Kubo fails to set the file descriptor limit, it will log an error.
Defaults: 2048
IPFS_DIST_PATHIPFS Content Path from which Kubo fetches repo migrations (when the daemon
is launched with the --migrate flag).
Default: /ipfs/<cid> (the exact path is hardcoded in
migrations.CurrentIpfsDist, depends on the IPFS version)
IPFS_NS_MAPAdds static namesys records for deterministic tests and debugging. Useful for testing things like DNSLink without real DNS lookup.
Example:
$ IPFS_NS_MAP="dnslink-test1.example.com:/ipfs/bafkreicysg23kiwv34eg2d7qweipxwosdo2py4ldv42nbauguluen5v6am,dnslink-test2.example.com:/ipns/dnslink-test1.example.com" ipfs daemon
...
$ ipfs resolve -r /ipns/dnslink-test2.example.com
/ipfs/bafkreicysg23kiwv34eg2d7qweipxwosdo2py4ldv42nbauguluen5v6am
IPFS_HTTP_ROUTERSOverrides AutoConf and all other HTTP routers when set.
When Routing.Type=auto, this environment variable takes precedence over
both AutoConf-provided endpoints and any manually configured delegated routers.
The value should be a space or comma-separated list of HTTP routing endpoint URLs.
This is useful for:
Example:
$ ipfs config Routing.Type auto
$ IPFS_HTTP_ROUTERS="http://127.0.0.1:7423" ipfs daemon
The above will replace all AutoConf endpoints with a single local one, allowing for
inspection/debug of HTTP requests sent by Kubo via while true ; do nc -l 7423; done
or more advanced tools like mitmproxy.
When not set, Kubo uses endpoints from AutoConf (when enabled) or manually configured Routing.DelegatedRouters.
IPFS_HTTP_ROUTERS_FILTER_PROTOCOLSOverrides values passed with filter-protocols parameter defined in IPIP-484.
Value is space-separated.
$ IPFS_HTTP_ROUTERS_FILTER_PROTOCOLS="unknown transport-bitswap transport-foo" ipfs daemon
Default: config.DefaultHTTPRoutersFilterProtocols
IPFS_CONTENT_BLOCKING_DISABLEDisables the content-blocking subsystem. No denylists will be watched and no content will be blocked.
IPFS_WAIT_REPO_LOCKSpecifies the amount of time to wait for the repo lock. Set the value of this variable to a string that can be parsed as a golang time.Duration. For example:
IPFS_WAIT_REPO_LOCK="15s"
If the lock cannot be acquired because someone else has the lock, and IPFS_WAIT_REPO_LOCK is set to a valid value, then acquiring the lock is retried every second until the lock is acquired or the specified wait time has elapsed.
IPFS_TELEMETRYControls the behavior of the telemetry plugin. Valid values are:
on: Enables telemetry.off: Disables telemetry.auto: Like on, but logs an informative message about telemetry and gives user 15 minutes to opt-out before first collection. Used automatically on first run and when IPFS_TELEMETRY is not set.The mode can also be set in the config file under Plugins.Plugins.telemetry.Config.Mode.
Example:
export IPFS_TELEMETRY="off"
HTTPS_PROXYProxy for outbound https:// HTTP requests and /wss libp2p WebSocket peer dials. Kubo relies on Go's http.ProxyFromEnvironment, which is honored by every HTTP client in the default code paths:
ipfs CLI talking to a remote daemon over Kubo RPC.client/rpc) used by third-party Go applications.ipfs update downloader fetching release binaries and checksums from GitHub.Routing.DelegatedRouters.AutoConf.URL).certmagic: both the challenge broker request to p2p-forge and the ACME flow to the configured CA (Let's Encrypt by default)./wss outbound peer dials (gorilla/websocket DefaultDialer).Accepted forms:
http://host:port: plain HTTP proxy; TLS targets tunnel through CONNECT. Works for both https:// and wss://.https://host:port: proxy itself is reached over TLS. Requires Kubo 0.41 or newer.http://user:pass@host:port.Example:
HTTPS_PROXY=http://proxy.local:8080 ipfs daemon
Scope:
/ws, /wss, gateway, RPC) are not affected.HTTP_PROXYSame as HTTPS_PROXY, applied to http:// URLs and /ws libp2p WebSocket peer dials.
NO_PROXYComma-separated list of host names, domain suffixes (prefixed with a dot), or CIDR blocks that bypass HTTP_PROXY and HTTPS_PROXY.
Example:
NO_PROXY="localhost,127.0.0.1,.internal" HTTPS_PROXY=http://proxy.local:8080 ipfs daemon
LIBP2P_TCP_REUSEPORTKubo tries to reuse the same source port for all connections to improve NAT
traversal. If this is an issue, you can disable it by setting
LIBP2P_TCP_REUSEPORT to false.
Default: true
LIBP2P_TCP_MUXBy default Kubo tries to reuse the same listener port for raw TCP and WebSockets transports via experimental libp2p.ShareTCPListener() feature introduced in go-libp2p#2984.
If this is an issue, you can disable it by setting LIBP2P_TCP_MUX to false and use separate ports for each TCP transport.
[!CAUTION] This configuration option may be removed once
libp2p.ShareTCPListener()becomes default in go-libp2p.
Default: true
LIBP2P_MUX_PREFSDeprecated: Use the Swarm.Transports.Multiplexers config field.
Tells Kubo which multiplexers to use in which order.
Default: "/yamux/1.0.0 /mplex/6.7.0"
LIBP2P_RCMGRForces libp2p Network Resource Manager
to be enabled (1) or disabled (0).
When set, overrides Swarm.ResourceMgr.Enabled from the config.
Default: use config (not set)
LIBP2P_DEBUG_RCMGREnables tracing of libp2p Network Resource Manager
and outputs it to rcmgr.json.gz
Default: disabled (not set)
LIBP2P_SWARM_FD_LIMITThis variable controls the number of concurrent outbound dials (except dials to relay addresses which have their own limiting logic).
Reducing it slows down connection ballooning but might affect performance negatively.
Default: 160 (not set)
TEST_DHT_STUBLifts WAN DHT filters so kubo can operate against DHT peers on loopback, enabling end-to-end provide/findprovs/IPNS testing without public internet access. Exercises every DHT code path: dial, protocol negotiation, message serialization, routing table management.
Filters removed on the WAN DHT when this variable is set:
AddressFilter: accepts loopback addresses (default rejects non-public)QueryFilter: accepts all peers (default rejects non-public)RoutingTableFilter: accepts all peers (default rejects non-public)RoutingTablePeerDiversityFilter: disabled (default caps same-IP peers to 3)In the CLI test harness, h.BootstrapWithStubDHT(nodes) spawns a
mini-DHT on the loopback interface and sets this variable on each
node automatically, allowing the loopback DHT to serve as a WAN
replacement. Tests do not need to set this variable externally.
Default: disabled (not set)
For tracing configuration, please check: https://github.com/ipfs/boxo/blob/main/docs/tracing.md