下面内容来自机翻,仅供参考. {#下面内容来自机翻-仅供参考}
原文档: 链接? {#原文档-链接?}
Kubo 配置文件 {#Kubo-配置文件}
Kubo (go-ipfs) 配置文件是一个 JSON 文档,位于"$IPFS_PATH/config"。它
在节点实例化时读取一次,无论是对于离线命令,还是在
启动守护进程。在正在运行的守护进程上执行的命令不会读取
运行时的配置文件。
目录 {#目录}
- Kubo 配置文件
- 目录
- 个人资料
- 类型
地址
API
AutoNAT
引导程序
数据存储
发现
实验性
网关
身份
内部
Ipns
迁移
坐骑
固定
Pubsub
对等互连
重新提供者
路由
群
Swarm.AddrFilters
Swarm.DisableBandwidthMetrics
Swarm.DisableNatPortMap
Swarm.EnableHolePunching
Swarm.EnableAutoRelay
Swarm.RelayClient
Swarm.RelayService
Swarm.RelayService.Enabled
Swarm.RelayService.Limit
Swarm.RelayService.ReservationTTL
Swarm.RelayService.MaxReservations
Swarm.RelayService.MaxCircuits
Swarm.RelayService.BufferSize
Swarm.RelayService.MaxReservationsPerPeer
Swarm.RelayService.MaxReservationsPerIP
Swarm.RelayService.MaxReservationsPerASN
Swarm.EnableRelayHop
Swarm.DisableRelay
Swarm.EnableAutoNATService
Swarm.ConnMgr
Swarm.ResourceMgr
Swarm.Transports
Swarm.Transports.Network
Swarm.Transports.Security
- [
Swarm.Transports.Multiplexers
](#swarmtransports Multiplexers) - [
Swarm.Transports.Multiplexers.Yamux
](#swarmtransports Multiplexersyamux) - [
Swarm.Transports.Multiplexers.Mplex
](#swarmtransports Multiplexersmplex)
DNS
个人资料 {#个人资料}
配置配置文件允许快速调整配置。配置文件可以是
使用"--profile"标志应用于"ipfs init"或"ipfs 配置文件"
应用`命令。应用配置文件时,配置文件的备份
将在"$IPFS_PATH"中创建。
下面列出了可用的配置文件。你也可以找到他们
记录在"ipfs 配置文件 --help"中。
-
服务器
禁用本地主机发现,建议在以下情况使用
在具有公共 IPv4 地址的计算机上运行 IPFS。 -
随机端口
对传入的集群连接使用随机端口号。
-
默认数据存储
将节点配置为使用默认数据存储 (flatfs)。
有关此数据存储的更多信息,请阅读"flatfs"配置文件说明。
该配置文件只能在首次初始化节点时应用。
-
本地发现
启用本地发现(默认启用)。对于在发现后重新启用本地发现很有用
被另一个配置文件(例如服务器配置文件)禁用。 -
测试
减少IPFS守护进程的外部干扰,这
在测试环境中使用守护进程时非常有用。 -
默认网络
恢复默认网络设置。
测试轮廓的反向轮廓。 -
Flatfs
配置节点以使用 flatfs 数据存储。Flatfs 是默认数据存储。
这是最久经考验且最可靠的数据存储。
如果出现以下情况,您应该使用此数据存储:- 您需要一个非常简单且非常可靠的数据存储,并且您信任您的
文件系统。该数据存储将每个块存储为单独的文件
底层文件系统,因此除非出现问题,否则不太可能丢失数据
与底层文件系统。 - 您需要以尽快回收可用空间的方式运行垃圾收集。
- 您想要最小化内存使用。
- 您可以接受默认的数据导入速度,或者更喜欢使用"--nocopy"。
该配置文件只能在首次初始化节点时应用。
- 您需要一个非常简单且非常可靠的数据存储,并且您信任您的
獾
配置节点以使用实验性 badger 数据存储。请记住,这 使用过时的 badger 1.x 。
如果性能的某些方面,请使用此数据存储,
尤其是添加许多 GB 文件的速度至关重要。但是,请注意:
- 当您的数据存储被占用时,该数据存储将无法正确回收空间
小于几千兆字节。如果您使用"--enable-gc"运行 IPFS,您计划在其中存储很少的数据
您的 IPFS 节点,并且磁盘使用比性能更重要,请考虑使用
flatfs
。 - 此数据存储最多使用几 GB 内存。
- 适用于中型数据存储,但如果您的数据集大于 1 TB,则可能会遇到性能问题。
- 当前的实现基于旧的 badger 1.x,上游团队不再支持该版本。
该配置文件只能在首次初始化节点时应用。
-
低功耗
减少系统上的守护进程开销。影响节点
功能 - 内容发现和数据的性能
抓取可能会降级。本地数据不会在 DHT 等路由系统上公布。Swarm.ConnMgr
设置为一次维持最小数量的 p2p 连接。- 禁用
Reprovider
服务 → DHT 和其他路由系统上不会公布 CID(!) - 禁用自动NAT。
请谨慎使用此配置文件。
类型 {#类型}
本文档引用了标准 JSON 类型(例如,"null"、"string"、
number
等),以及一些自定义类型,如下所述。
标志
{#标志}
标志允许启用和禁用功能。然而,与简单的布尔值不同,
它们也可以是"null"(或省略)以指示默认值应该
被选择。这使得 Kubo 更容易更改默认值
未来,除非用户明确地将标志设置为"true"(启用)或
"假"(禁用)。标志具有三种可能的状态:
null
或缺失(应用默认值)。true
(启用)
-"假"(禁用)
优先级
{#优先级}
优先级允许指定功能/协议的优先级并禁用
功能/协议。优先级可以采用以下值之一:
null
/missing(应用默认优先级,与标志相同)
-"假"(禁用)1 - 2^63
(优先级,越低越好)
字符串
{#字符串}
字符串是一种特殊类型,可以方便地指定单个字符串、数组
字符串,或 null:
空
"单个字符串"
["an"、"数组"、"of"、"字符串"]
持续时间
{#持续时间}
Duration 是一种描述时间长度的类型,使用与 go 相同的格式
是(例如"1d2h4m40.01s")。
可选整数
{#可选整数}
可选整数允许指定一些数值
配置文件中缺少时的隐式默认值:
null
/missing 将应用 Kubo 源中定义的默认值 (.WithDefault(value)
)-2^63
和2^63-1
之间的整数(即-9223372036854775808
到9223372036854775807
)
可选字节
{#可选字节}
可选字节允许指定一些字节数
配置文件中缺少时的隐式默认值:
null
/missing(应用 Kubo 源代码中定义的默认值)- 指示字节数的字符串值,包括人类可读的表示形式:
可选字符串
{#可选字符串}
可选字符串允许指定一些字符串值
配置文件中缺少时的隐式默认值:
null
/missing 将应用 Kubo 源中定义的默认值 (.WithDefault("value")
)- 一个字符串
可选持续时间
{#可选持续时间}
可选的持续时间允许指定一些持续时间值
配置文件中缺少时的隐式默认值:
null
/missing 将应用 Kubo 源中定义的默认值 (.WithDefault("1h2m3s")
)- 具有有效 go 持续时间 的字符串(例如"1d2h4m40.01s")。
地址
{#地址}
包含有关此节点要使用的各种侦听器地址的信息。
地址.API
{#地址-API}
Multiaddr 或多地址数组,描述服务本地 HTTP 的地址
API 开启。
支持的运输:
- tcp/ip{4,6} -
/ipN/.../tcp/...
- unix -
/unix/path/to/socket
默认值: /ip4/127.0.0.1/tcp/5001
类型:"字符串"(多地址)
地址.网关
{#地址-网关}
多地址或多地址数组描述服务于本地的地址
网关打开。
支持的运输:
- tcp/ip{4,6} -
/ipN/.../tcp/...
- unix -
/unix/path/to/socket
默认值: /ip4/127.0.0.1/tcp/8080
类型:"字符串"(多地址)
地址.Swarm
{#地址-Swarm}
描述要侦听 p2p 群的地址的 multiaddrs 数组
连接。
支持的运输:
- tcp/ip{4,6} -
/ipN/.../tcp/...
- websocket -
/ipN/.../tcp/.../ws
- quic (Draft-29) -
/ipN/.../udp/.../quic
- 可以与/quic-v1
和/quic-v1/webtransport
共享相同的两个元组 - quicv1 (RFC9000) -
/ipN/.../udp/.../quic-v1
- 可以与/quic
和/quic-v1/webtransport
共享相同的两个元组 - webtransport
/ipN/.../udp/.../quic-v1/webtransport
- 可以与/quic
和/quic-v1
共享相同的两个元组
默认:
|------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4 5 6 7 8 9 10
| [ "/ip4/ 0.0 .0 .0 /tcp/ 4001 ", "/ip6/ : : /tcp/ 4001 " , "/ip4/ 0.0 .0 .0 /udp/ 4001 /quic", "/ip4/ 0.0 .0 .0 /udp/ 4001 /quic-v1", "/ip4/ 0.0 .0 .0 /udp/ 4001 /quic-v1/webtransport", "/ip6/ : : /udp/ 4001 /quic" , "/ip6/ : : /udp/ 4001 /quic-v1" , "/ip6/ : : /udp/ 4001 /quic-v1/webtransport" ]
|
类型: 数组[字符串]
(多地址)
地址.公告
{#地址-公告}
如果非空,则此数组指定要向
网络。如果为空,守护进程将宣布推断的群地址。
默认值: []
类型: 数组[字符串]
(多地址)
地址.AppendAnnounce
{#地址-AppendAnnounce}
与 Addresses.Announce
类似,只是这不
如果非空,则覆盖推断的群地址。
默认值: []
类型: 数组[字符串]
(多地址)
地址.NoAnnounce
{#地址-NoAnnounce}
不向网络公布的群地址数组。
优先于"Addresses.Announce"和"Addresses.AppendAnnounce"。
默认值: []
类型: 数组[字符串]
(多地址)
API
{#API}
包含 API 网关使用的信息。
API.HTTPHeaders
{#API-HTTPHeaders}
要在来自 API HTTP 服务器的响应上设置的 HTTP 标头映射。
例子:
|---------------|-----------------------------|
| 1 2 3
| { "Foo": [ "酒吧" ] }
|
默认值: null
类型: object[string -> array[string]]
(标头名称 -> 标头值数组)
自动NAT
{#自动NAT}
包含 AutoNAT 服务的配置选项。自动网络地址转换服务
帮助网络上的其他节点确定它们是否可以公开访问
互联网的其余部分。
AutoNAT.ServiceMode
{#AutoNAT-ServiceMode}
未设置(默认)时,AutoNAT 服务默认为_启用_。否则,这
字段可以采用两个值之一:
*"启用"-启用服务(除非节点确定它本身,
无法通过公共互联网访问)。
*"已禁用"- 禁用该服务。
将来可能会添加其他模式。
类型: string
( "enabled"
或 "disabled"
之一)
AutoNAT.Throttle
{#AutoNAT-Throttle}
设置后,此选项将配置 AutoNAT 服务限制行为。经过
默认情况下,Kubo 将对其他设备执行 NAT 检查的次数进行速率限制
节点数增加到每分钟 30 个,每个对等点 3 个。
AutoNAT.Throttle.GlobalLimit
{#AutoNAT-Throttle-GlobalLimit}
配置每个"AutoNAT.Throttle.Interval"要服务的 AutoNAT 请求数。
默认值:30
类型: integer
(非负数, 0
表示无限制)
AutoNAT.Throttle.PeerLimit
{#AutoNAT-Throttle-PeerLimit}
配置每个"AutoNAT.Throttle.Interval"为每个对等点提供服务的 AutoNAT 请求数。
默认值:3
类型: integer
(非负数, 0
表示无限制)
AutoNAT.Throttle.Interval
{#AutoNAT-Throttle-Interval}
配置上述限制的时间间隔。
默认值:1 分钟
类型: duration
(当 0
/未设置时,使用默认值)
引导程序
{#引导程序}
Bootstrap 是您的节点连接到的受信任节点的多地址数组,用于在启动时获取网络的其他节点。
默认值:ipfs.io 引导节点
类型: 数组[字符串]
(多地址)
数据存储
{#数据存储}
包含与磁盘上的构建和操作相关的信息
存储系统。
数据存储.StorageMax
{#数据存储-StorageMax}
ipfs 存储库数据存储大小的软上限。使用"StorageGCWatermark",
用于计算是否触发 gc 运行(仅当设置了 --enable-gc
标志时)。
默认值: "10GB"
类型: 字符串
(大小)
数据存储.StorageGCWatermark
{#数据存储-StorageGCWatermark}
垃圾回收将占"StorageMax"值的百分比
如果守护进程在启用自动 gc 的情况下运行(即
当前选项默认为 false)。
默认值: 90
类型: 整数
(0-100%)
数据存储.GCPeriod
{#数据存储-GCPeriod}
指定运行垃圾收集的频率的持续时间。仅使用过
如果启用自动GC。
默认值: 1h
类型: duration
(空字符串表示默认值)
数据存储.HashOnRead
{#数据存储-HashOnRead}
一个布尔值。如果设置为 true,则所有从磁盘读取的块都将被散列并
已验证。这将导致 CPU 利用率增加。
默认值:"假"
类型: 布尔
数据存储.BloomFilterSize
{#数据存储-BloomFilterSize}
一个数字,表示块存储的 [bloom] 的大小(以字节为单位)
过滤器]( https://en.wikipedia.org/wiki/Bloom_filter)。零值代表
该功能已禁用。
该站点为各种布隆过滤器值生成有用的图表:
https://hur.st/bloomfilter/?n=1e6&p=0.01&m=&k=7 您可以使用它来查找
首选最佳值,其中"m"是以位为单位的"BloomFilterSize"。记得
将值"m"从位转换为字节,以用作中的"BloomFilterSize"
配置文件。例如,对于 1,000,000 个区块,预计误报率为 1%
率,最终过滤器大小为 9592955 位,因此对于"BloomFilterSize"
我们想要使用 1199120 字节。截至撰写本文时, 7 哈希
函数
,所以式中常数"k"为7。
默认值:"0"(禁用)
类型: integer
(非负,字节)
数据存储.Spec
{#数据存储-Spec}
Spec 定义了 ipfs 数据存储的结构。它是一个可组合的结构,
其中每个数据存储都由一个 json 对象表示。数据存储可以包装其他
数据存储提供额外的功能(例如指标、日志记录或缓存)。
这可以手动更改,但是,如果您进行任何需要更改的更改
不同的磁盘结构,您将需要运行 ipfs-ds-convert
工具 将数据迁移到新的
结构。
有关此配置选项的可能值的更多信息,请参阅
文档/数据存储.md
默认:
|------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| { "坐骑":[ { "孩子": { "路径":"块", "shardFunc": "/repo/flatfs/shard/v1/倒数第二个/2", "同步":真, "类型":"Flatfs" }, "挂载点":"/块", "前缀": "flatfs.datastore", "类型":"测量" }, { "孩子": { "压缩":"无", "路径":"数据存储", "类型":"级别" }, "挂载点":"/", "prefix": "leveldb.datastore", "类型":"测量" } ], "类型":"安装" }
|
类型: 对象
发现
{#发现}
包含用于配置 IPFS 节点发现机制的选项。
Discovery.MDNS
{#Discovery-MDNS}
ZeroConf 多播 DNS-SD 对等发现选项。
Discovery.MDNS.Enabled
{#Discovery-MDNS-Enabled}
一个布尔值,表示多播 DNS-SD 是否应处于活动状态。
默认值: true
类型: 布尔
Discovery.MDNS.Interval
{#Discovery-MDNS-Interval}
已删除: 这不再可配置
在 新的 mDNS 实现 中。
实验
{#实验}
切换和配置 Kubo 的实验性功能。 此处 列出了实验功能。
网关
{#网关}
HTTP 网关的选项。
Gateway.NoFetch
{#Gateway-NoFetch}
当设置为 true 时,网关将仅提供本地存储库中已有的内容
并且不会从网络获取文件。
默认值:"假"
类型: 布尔
网关.NoDNSLink
{#网关-NoDNSLink}
一个布尔值,用于配置 DNSLink 是否在"Host" HTTP 标头中查找值
应该执行。如果存在 DNSLink,则存储在 DNS TXT 中的内容路径
记录变为"/",并将相应的有效负载返回给客户端。
默认值:"假"
类型: 布尔
Gateway.DeserializedResponses
{#Gateway-DeserializedResponses}
用于显式配置此网关是否响应反序列化的可选标志
要求,或不要求。默认情况下,它是启用的。禁用此选项时,网关
仅作为无信任网关运行: https://specs.ipfs.tech/http-gateways/trustless-gateway/。
默认值: true
类型: 标志
Gateway.HTTPHeaders
{#Gateway-HTTPHeaders}
在网关响应上设置的标头。
默认值:"{}"+来自"boxo/gateway#AddAccessControlHeaders"和 ipfs/specs#423 的隐式 CORS 标头
类型: 对象[字符串 -> 数组[字符串]]
Gateway.RootRedirect
{#Gateway-RootRedirect}
将 /
请求重定向到的 url。
默认值: ""
类型: 字符串
(网址)
Gateway.FastDirIndexThreshold
{#Gateway-FastDirIndexThreshold}
已删除 :此选项 不再需要 。自 Kubo 0.18 起被忽略。
网关.可写
{#网关-可写}
已删除 :此选项从 Kubo 0.20 起不再可用。
我们正在努力开发一种现代替代品。为了支持我们的努力,请在 ipfs/specs#375 中留下描述您的用例的评论。
Gateway.PathPrefixes
{#Gateway-PathPrefixes}
已删除: 请参阅 go-ipfs#7702
网关.公共网关
{#网关-公共网关}
PublicGateways
是一个字典,用于定义指定主机名上的网关行为。
可以选择使用一个或多个通配符来定义主机名。
例子:
*.example.com
将匹配对http://foo.example.com/ipfs/*
或http://{cid}.ipfs.bar.example.com/*
的请求。foo-*.example.com
将匹配对http://foo-bar.example.com/ipfs/*
或http://{cid}.ipfs.foo-xyz.example.com 的请求/*
。
Gateway.PublicGateways:路径
{#Gateway-PublicGateways:路径}
应在主机名上公开的路径数组。
例子:
|---------------------------|------------------------------------------------------------------------------------|
| 1 2 3 4 5 6 7 8 9
| { "网关": { "公共网关": { "example.com": { "路径": [ "/ ipfs","/ ipns" ] , } } } }
|
上面启用了" http://example.com/ipfs/*"和"http://example.com/ipns/*",但不启用"http://example.com/api/*"
默认值: []
类型: 数组[字符串]
Gateway.PublicGateways:UseSubdomains
{#Gateway-PublicGateways:UseSubdomains}
一个布尔值,用于配置主机名处的网关是否提供 源隔离
内容根之间。
-
true
- 在http://*.{hostname}/启用[子域网关](https://docs.ipfs.tech/how-to/address-ipfs-on-web/#subdomain-gateway)
-
需要白名单: 确保设置相应的"路径"。
例如,http://{cid}.ipfs.{hostname}
和http://{foo}.ipns.{hostname} 需要
Paths: ["/ipfs", "/ipns"]}
工作:|-------------------------|------------------------------------------------------------------------------------------------------| |
1 2 3 4 5 6 7 8
|"网关": { "公共网关": { "dweb.link": { "UseSubdomains": true , "路径": [ "/ ipfs","/ ipns" ] , } } }
| -
向后兼容: 对内容路径(例如"http://{hostname}/ipfs/{cid}")的请求会产生重定向到"http://{cid}.ipfs.{hostname}"
-
API: 如果"/api"位于"Paths"白名单中,则"http://{hostname}/api/{cmd}"会生成重定向到" http://api.{hostname}/api" /{cmd}`
-
-
false
- 在http://{hostname}/*
启用 路径网关-
例子:
|-------------------------|-------------------------------------------------------------------------------------------------------| |
1 2 3 4 5 6 7 8
|"网关": { "公共网关": { "ipfs.io": { "UseSubdomains":假, "路径": [ "/ ipfs","/ ipns","/ api" ] , } } }
|
-
默认值:"假"
类型: 布尔
Gateway.PublicGateways:NoDNSLink
{#Gateway-PublicGateways:NoDNSLink}
一个布尔值,用于配置主机名的 DNSLink 是否存在于"Host"中
应解析 HTTP 标头。覆盖全局设置。
如果定义了"Paths",它们优先于 DNSLink。
默认值:"false"(默认情况下为每个定义的主机名启用 DNSLink 查找)
类型: 布尔
Gateway.PublicGateways:InlineDNSLink
{#Gateway-PublicGateways:InlineDNSLink}
用于显式配置子域网关是否重定向的可选标志
(由 UseSubdomains: true
启用)应始终内联 DNSLink 名称 (FQDN)
到单个 DNS 标签中:
|-----------|------------------------------------------------------------------------------------|
| 1
| //example.com/ipns/example.net → HTTP 301 → //example-net.ipns.example.com
|
DNSLink 名称内联允许在公共子域网关上使用 HTTPS
标签通配符 TLS 证书(在传递 X-Forwarded-Proto: https
时也启用),
当特殊规则如
https://publicsuffix.org,或 Brave 等浏览器中的自定义本地主机逻辑
必须应用。
默认值:"假"
类型: 标志
Gateway.PublicGateways:反序列化响应
{#Gateway-PublicGateways:反序列化响应}
用于显式配置此网关是否响应反序列化的可选标志
要求,或不要求。默认情况下,它是启用的。禁用此选项时,网关
仅作为无信任网关运行: https://specs.ipfs.tech/http-gateways/trustless-gateway/。
默认值:与全局 Gateway.DeserializedResponses
相同
类型: 标志
Gateway.PublicGateways
的隐式默认值 {#Gateway-PublicGateways-的隐式默认值}
localhost
主机名和环回 IP 的默认条目始终存在。
如果为这些主机名提供了附加配置,它将合并到隐式值之上:
|------------------------------|-------------------------------------------------------------------------------------------|
| 1 2 3 4 5 6 7 8 9 10
| { "网关": { "公共网关": { "本地主机": { "路径": [ "/ ipfs","/ ipns" ] , "使用子域名": true } } } }
|
也可以通过将默认值设置为"null"来删除默认值。
例如,禁用"localhost"上的子域网关
并使该主机名的行为与"127.0.0.1"相同:
``控制台
$ ipfs config --json Gateway.PublicGateways '{"localhost": null }'
|---------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4 5 6 7 8 9 10 11 12 13
| ### `网关`食谱 以下是最常见的公共网关设置的列表。 * 公共[子域网关](https://docs.ipfs.tech/how-to/address-ipfs-on-web/#subdomain-gateway)位于`http://{cid}.ipfs.dweb.link` (每个内容根都有自己的起源) ``控制台 $ ipfs config --json Gateway.PublicGateways '{ "dweb.link":{ "UseSubdomains":true, "路径":["/ipfs","/ipns"] } }'
|
-
向后兼容: 此功能可以自动从内容路径重定向到子域:
http://dweb.link/ipfs/{cid}
→http://{cid}.ipfs.dweb.link
-
X-Forwarded-Proto: 如果您在提供 TLS 的反向代理后面运行 Kubo,请使其添加"X-Forwarded-Proto:https" HTTP 标头,以确保用户重定向到"https://" ,而不是"http://"。它还将确保 DNSLink 名称内联以适合单个 DNS 标签,因此它们可以与通配符 TLS 证书一起正常工作( 详细信息 )。NGINX 指令是
proxy_set_header X-Forwarded-Proto "https";
。:http://dweb.link/ipfs/{cid}
→https://{cid}.ipfs.dweb.link
http://dweb.link/ipns/your-dnslink.site.example.com
→https://your--dnslink-site-example-com.ipfs.dweb.link
-
X-Forwarded-Host: 如果您想覆盖原始请求中的子域网关主机,我们还支持
X-Forwarded-Host: example.com
:http://dweb.link/ipfs/{cid}
→http://{cid}.ipfs.example.com
-
公共 路径网关 位于
http://ipfs.io/ipfs/{cid}
(无原点分离)
``控制台
$ ipfs config --json Gateway.PublicGateways '{
"ipfs.io":{
"UseSubdomains":假,
"路径":["/ipfs"、"/ipns"、"/api"]
}
}'|-----------------|-----------------------------------------------------------------------------------------------------------------------| |
1 2 3 4
|* 公共 [DNSLink](https://dnslink.io/) 网关解析"Host"标头中传递的每个主机名。 ``控制台 $ ipfs config --json Gateway.NoDNSLink false
|- 请注意,"NoDNSLink: false"是默认值(除非手动设置为"true",否则它开箱即用)
-
强化的、特定于站点的 DNSLink 网关 。
禁用远程数据获取("NoFetch: true")和解析未知主机名的 DNSLink("NoDNSLink: true")。
然后,仅针对特定主机名(其数据
已经存在于节点上),而不暴露任何内容寻址"路径":``控制台
$ ipfs config --json Gateway.NoFetch true
$ ipfs config --json Gateway.NoDNSLink true
$ ipfs config --json Gateway.PublicGateways '{
"en.wikipedia-on-ipfs.org":{
"NoDNSLink":假,
"路径":[]
}
}'|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226
|## `身份` ### `Identity.PeerID` 此配置对等点的唯一 PKI 身份标签。设置在 init 上并且从不读取, 在这里只是为了方便。ipfs 将始终从其生成对等点 ID 运行时的密钥对。 类型:`string`(对等 ID) ### `Identity.PrivKey` Base64 编码的 protobuf 描述(并包含)节点的私钥。 类型:"字符串"(base64 编码) ## `内部` 本部分包括各种子系统的内部旋钮,允许拥有大型或私有基础设施的高级用户微调某些行为,而无需重新编译 Kubo。 **请注意,在此处进行明智的更改需要深入的知识,大多数用户应保持这些不变。此处列出的所有旋钮在版本之间都会发生重大变化。** ### `内部.Bitswap` "Internal.Bitswap"包含用于调整 Bitswap 资源利用率的旋钮。 旋钮(如下)记录了它们的值应如何相互关联。 应确定是否应提高或降低其值 基于指标"ipfs_bitswap_active_tasks"、"ipfs_bitswap_pending_tasks", `ipfs_bitswap_pending_block_tasks` 和 `ipfs_bitswap_active_block_tasks` 由 Bitswap 报道。 这些指标可以作为 Prometheus 端点在"{Addresses.API}/debug/metrics/prometheus"进行访问(默认值:"http://127.0.0.1:5001/debug/metrics/prometheus") "ipfs_bitswap_active_tasks"的值由"EngineTaskWorkerCount"限制。 `ipfs_bitswap_pending_tasks` 的值通常由下面的旋钮限制, 然而,它的确切最大值很难预测,因为它取决于任务大小 以及发出请求的同行数量。然而,根据经验, 在健康运行期间,该值应围绕"典型"低值振荡 (不会连续达到平台期)。 如果"ipfs_bitswap_pending_tasks"正在增长,而"ipfs_bitswap_active_tasks"达到最大值,则 该节点已达到其资源限制,新请求进入后无法尽快得到处理。 假设硬件可以支持新的限制,提高资源限制(使用下面的旋钮)可能会有所帮助。 "ipfs_bitswap_active_block_tasks"的值由"EngineBlockstoreWorkerCount"限制。 "ipfs_bitswap_pending_block_tasks"的值间接受到"ipfs_bitswap_active_tasks"的限制,但可能很难 预测,因为它取决于对等任务中涉及的块的数量,该数量可能会有所不同。 如果观察到"ipfs_bitswap_pending_block_tasks"的值增长, 当"ipfs_bitswap_active_block_tasks"达到最大值时,有迹象表明 可用的块任务正在造成瓶颈(由于高延迟块操作, 或者由于每个位交换对等任务的块操作数量较多)。 在这种情况下,请尝试增加"EngineBlockstoreWorkerCount"。 如果此调整仍然没有增加节点的吞吐量,则可能有 是 I/O 或 CPU 等硬件限制。 #### `Internal.Bitswap.TaskWorkerCount` 发送传出消息的线程(goroutine)数量。 限制并发发送操作的数量。 类型:`optionInteger`(线程数,`null` 表示默认为 8) #### `Internal.Bitswap.EngineBlockstoreWorkerCount` 块存储操作的线程数。 用于限制对块存储的并发请求数量。 最佳值可以通过指标"ipfs_bitswap_pending_block_tasks"和"ipfs_bitswap_active_block_tasks"得知。 该数字取决于您的硬件(I/O 和 CPU)。 类型:`optionInteger`(线程数,`null` 表示默认为 128) #### `Internal.Bitswap.EngineTaskWorkerCount` 用于在发送响应之前准备和打包响应的工作线程数。 该数字通常应等于"TaskWorkerCount"。 类型:`optionInteger`(线程数,`null` 表示默认为 8) #### `Internal.Bitswap.MaxOutstandingBytesPerPeer` 等待处理并发送到任何单个对等点的最大字节数(跨所有任务)。 这个数字控制公平性,可以从 250Kb(非常公平)到 10Mb(不太公平,需要更多工作)变化 献给有更多要求的同行)。低于 250Kb 的值可能会导致抖动。 超过 10Mb 的值可能会导致积极想要的对等方消耗所有资源并 降低向需求不那么积极的同行提供的质量。 类型:"可选整数"(字节数,"null"表示默认值,即 1MB) ### `Internal.Bitswap.ProviderSearchDelay` 此参数确定在查找 bitswap 之外的提供程序之前等待多长时间。 其他路由系统(例如 DHT)能够在不到一秒的时间内提供结果,因此降低了 在某些情况下,这个数字将允许更快的对等点查找。 类型:"可选持续时间"("null"表示默认值,即 1 秒) ### `Internal.UnixFSShardingSizeThreshold` 内部使用分片阈值来决定 UnixFS 目录是否应该分片。 该值与 UnixFS 目录块的大小以及任何增加并不严格相关 阈值应注意块大小保持在 2MiB 以下,以便它们 可通过网络堆栈可靠地传输(公共群上的 IPFS 对等点往往会忽略大于 2MiB 的块的请求)。 将此值减少到 1B 在功能上等同于之前的实验性分片选项 分片所有目录。 类型:"可选字节"("null"表示默认值,即 256KiB) ## `IPNS` ### `Ipns.RepublishPeriod` 指定重新发布 ipns 记录的频率的持续时间,以确保 他们在网络上保持新鲜感。 默认值:4 小时。 输入:"interval"或默认为空字符串。 ### `Ipns.RecordLifetime` 指定要在 ipns 记录上设置的值以确保其有效性的持续时间 寿命。 默认值:24 小时。 输入:"interval"或默认为空字符串。 ### `Ipns.ResolveCacheSize` 存储在已解析 ipns 条目的 LRU 缓存中的条目数。参赛作品 将被保存在缓存中,直到其生命周期到期。 默认值:`128` 类型:`integer`(非负数,0表示默认) ### `Ipns.UsePubsub` 启用 IPFS over pubsub 实验以实时发布 IPNS 记录。 **实验:** 在 [experimental-features.md#ipns-pubsub](./experimental-features.md#ipns-pubsub) 中了解当前限制。 默认值:`禁用` 类型:`标志` ## `迁移` 迁移配置如何下载迁移以及是否将下载添加到本地 IPFS。 ### `迁移.DownloadSources` 来源按优先顺序排列,其中"IPFS"表示使用 IPFS,"HTTPS"表示使用默认网关。任何其他值都被解释为自定义网关的主机名。空列表意味着"使用默认源"。 默认值:`["HTTPS","IPFS"]` ### `迁移.保留` 指定下载后是否保留迁移。选项有"丢弃"、"缓存"、"固定"。默认为空字符串。 默认值:`缓存` ## `坐骑` **实验:** 在 [fuse.md](./fuse.md) 中了解当前限制。 FUSE 安装点配置选项。 ### `挂载.IPFS` `/ipfs/` 的挂载点。 默认值:`/ipfs` 类型:`string`(文件系统路径) ### `坐骑.IPNS` `/ipns/` 的挂载点。 默认值:`/ipns` 类型:`string`(文件系统路径) ### `Mounts.FuseAllowOther` 在安装点上设置"FUSE 允许其他"选项。 ## `固定` 固定配置可用于固定内容的选项 (即长期保存内容而不是临时缓存存储)。 ### `固定.RemoteServices` `RemoteServices` 将远程固定服务的名称映射到其配置。 远程固定服务是公开用于管理的 API 的远程服务 该服务对长期数据存储的兴趣。 公开的 API 符合以下定义的规范 https://ipfs.github.io/pinning-services-api-spec/ #### `固定.RemoteServices:API` 包含与使用远程固定服务相关的信息 例子: ```json { "固定":{ "远程服务":{ "myPinningService":{ "API":{ "端点":"https://pinningservice.tld:1234/my/api/path", "密钥":"一些不透明密钥" } } } } }
|
Pinning.RemoteServices:API.Endpoint
{#Pinning-RemoteServices:API-Endpoint}
用于访问固定服务的 HTTP(S) 端点
示例:" https://pinningservice.tld:1234/my/api/path"
类型: 字符串
固定.RemoteServices:API.Key
{#固定-RemoteServices:API-Key}
授予对固定服务的访问权限的密钥
类型: 字符串
Pinning.RemoteServices:策略
{#Pinning-RemoteServices:策略}
包含远程固定服务的附加选择加入策略。
固定.RemoteServices:策略.MFS
{#固定-RemoteServices:策略-MFS}
启用此策略后,它会遵循 MFS 的更改
并更新已配置的远程服务上 MFS 根的 pin。
仅当 MFS 根 CID 更改时才会向远程服务发送 pin 请求
并且自上次请求以来已经过去了足够的时间(由"RepinInterval"确定)。
人们可以通过"ipfs 日志级别 Remotepinning/mfs debug"启用调试来观察 MFS 固定细节,并在完成后切换回"错误"。
Pinning.RemoteServices:策略.MFS.Enabled
{#Pinning-RemoteServices:策略-MFS-Enabled}
控制此策略是否处于活动状态。
默认值:"假"
类型: 布尔
Pinning.RemoteServices:策略.MFS.PinName
{#Pinning-RemoteServices:策略-MFS-PinName}
用于表示 MFS 根 CID 的远程引脚的可选名称。
当留空时,将生成默认名称。
默认值: "policy/{PeerID}/mfs"
,例如 "policy/12.../mfs"
类型: 字符串
Pinning.RemoteServices:Policies.MFS.RepinInterval
{#Pinning-RemoteServices:Policies-MFS-RepinInterval}
定义将 pin 请求发送到远程服务的频率(最多)。
如果留空,将使用默认间隔。低于"1m"的值将被忽略。
默认值: "5m"
类型: 持续时间
发布订阅
{#发布订阅}
已弃用 :请参阅 #9717
Pubsub 配置"ipfs pubsub"子系统。要使用它,必须通过以下方式启用
将 --enable-pubsub-experiment
标志传递给守护进程
或通过下面的"Pubsub.Enabled"标志。
Pubsub.Enabled
{#Pubsub-Enabled}
已弃用 :请参阅 #9717
启用 pubsub 系统。
默认值:"假"
类型: 标志
Pubsub.Router
{#Pubsub-Router}
已弃用 :请参阅 #9717
设置 pubsub 用于将消息路由到对等点的默认路由器。这可以是以下之一:
*"floodsub"-floodsub 是一个基本路由器,它只是将消息_floods_发送给所有
连接的同行。该路由器效率极低,但_非常_可靠。
"gossipsub"
- [gossipsub][] 是一种更高级的路由算法,它将
从网络中链接的子集构建覆盖网格。
默认值: "gossipsub"
类型: string
( "floodsub"
、 "gossipsub"
或 ""
之一(应用默认值))
[gossipsub]: https://github.com/libp2p/specs/tree/master/pubsub/gossipsub
Pubsub.DisableSigning
{#Pubsub-DisableSigning}
已弃用 :请参阅 #9717
禁用消息签名和签名验证。启用此选项,如果
您正在一个完全可信的网络中运行。
即使您不关心是谁发送的,禁用签名也是_不_安全的
消息,因为欺骗消息可以用来压制真实消息
故意重复使用真实消息的消息 ID。
默认值:"假"
类型: 布尔
Pubsub.SeenMessagesTTL
{#Pubsub-SeenMessagesTTL}
已弃用 :请参阅 #9717
控制重复消息的时间窗口,由 Message 标识
ID,将被识别,不会再次发出。
该参数值较小意味着缓存中的 Pubsub 消息将
更快地进行垃圾收集,这可能会导致缓存更小。同时
时间,如果网络中存在转发较旧消息的较慢节点,
这可能会导致更多的重复项通过网络传播。
相反,该参数的值越大,意味着 Pubsub 消息在
缓存稍后将被垃圾收集,这可能会导致更大的缓存
相同的流量模式。然而,重复的可能性较小
通过网络传播。
默认值:请参阅 go-libp2p-pubsub 中的 TimeCacheDuration
类型: 可选持续时间
Pubsub.SeenMessagesStrategy
{#Pubsub-SeenMessagesStrategy}
已弃用 :请参阅 #9717
确定 Pubsub 重复数据删除的生存时间 (TTL) 倒计时方式
消息被计算。
Pubsub 看到的消息缓存是一个 LRU 缓存,可将消息保留最多
指定的持续时间。过了这个时间后,过期的消息将会
从缓存中清除。
"最后查看"缓存是滑动窗口缓存。每次看到消息
再次随着 SeenMessagesTTL 持续时间,其时间戳向前滑动。这
缓存频繁出现的消息并防止它们被
不断传播,特别是因为可能会增加
网络中重复消息的数量。
"first-seen"缓存将存储新消息并在消息到达后清除它们
SeenMessagesTTL 持续时间,即使在此期间多次看到它们
期间。
默认值: last-seen
(参见 go-libp2p-pubsub )
类型: 可选字符串
对等互连
{#对等互连}
配置对等子系统。对等互连子系统将 Kubo 配置为
连接到、保持连接以及重新连接到一组节点。节点应该
使用此子系统在经常有用的对等点之间创建"粘性"链接
提高可靠性。
用例:
- 连接到 IPFS 集群的 IPFS 网关应该对等以确保
网关始终可以从集群中获取内容。 - dapp 可以通过一组固定服务对嵌入的 Kubo 节点进行对等,或者
纺织咖啡馆/中心。 - 一群朋友可以互相查看以确保他们总是可以获取彼此的
内容。
当一个节点被添加到对等节点集中时,Kubo 将:
- 保护连接管理器与此节点的连接。那是,
Kubo 永远不会自动关闭与该节点的连接,并且
到此节点的连接不会计入连接限制。 - 启动时连接到该节点。
- 如果最后一个连接断开或
节点离线。这种重复的重新连接逻辑是由随机的
指数退避延迟范围从约 5 秒到约 10 分钟,以避免
反复重新连接到离线的节点。
对等互连可以是不对称的或对称的:
- 当对称时,连接将受到两个节点的保护,并且可能会
非常稳定。 - 非对称时,只有一个节点(配置对等的节点)进行保护
连接并尝试在断开连接时重新连接到对等节点。如果
对等节点负载较重和/或连接限制较低,
连接可能会反复抖动。不对称地凝视时要小心,不要
超载同行。
对等。对等
{#对等。对等}
与之对等的对等点集合。
|---------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| { "对等": { "同行": [ { "ID" : "QmPeerID1" , "地址": [ "/ip4/ 18.1 .1 .1 /tcp/ 4001 " ] } , { "ID" : "QmPeerID2" , "地址": [ "/ip4/ 18.1 .1 .2 /tcp/ 4001 ","/ip4/ 18.1 .1 .2 /udp/ 4001 /quic" ] } ] } ... }
|
其中"ID"是对等点 ID,"Addrs"是对等点的一组已知地址。如果没有指定地址,则会查询 DHT。
将来可能会添加其他字段。
默认值:空。
类型: 数组[对等]
重新提供者
{#重新提供者}
Reprovider.Interval
{#Reprovider-Interval}
设置向路由重新提供本地内容的轮次之间的时间
系统。
- 如果未设置,则使用隐式安全默认值。
- 如果设置为值"0",它将禁用内容重新提供。
注意:禁用内容重新提供将导致网络上的其他节点
无法发现你拥有你所拥有的物品。如果你想
要禁用此功能并使网络了解您所拥有的内容,您必须
定期手动公布您的内容。
默认值: 22h
( DefaultReproviderInterval
)
类型:"可选持续时间"(默认未设置)
Reprovider.Strategy
{#Reprovider-Strategy}
告诉重新提供者应该宣布什么。有效的策略是:
"all"
- 公布存储块的所有 CID"pinned"
- 仅递归地宣布固定的 CID(根块和子块)"roots"
- 仅宣布显式固定 CID 的根块
默认值: "全部"
类型:"可选字符串"(默认未设置)
路由
{#路由}
包含内容、对等和 IPNS 路由机制的选项。
路由.类型
{#路由-类型}
有多个路由选项:"auto"、"autoclient"、"none"、"dht"、"dhtclient"和"custom"。
-
默认: 如果未设置或设置为"自动",您的节点将使用 IPFS DHT
和下面列出的并行 HTTP 路由器可提高速度。 -
如果设置为"autoclient",您的节点将像"auto"一样运行,但不运行 DHT 服务器。
-
如果设置为"none",您的节点将使用_no_路由系统。你必须
明确连接到具有您正在查找的内容的对等点。 -
如果设置为"dht"(或"dhtclient"/"dhtserver"),您的节点将仅使用 IPFS DHT(无 HTTP 路由器)。
-
如果设置为"自定义",则禁用所有默认路由器,并且仅使用"Routing.Routers"中定义的路由器。
当DHT启用时,它可以以两种模式运行:客户端和服务器。
-
在服务器模式下,您的节点将向其他对等点查询 DHT 记录,并将
响应来自其他对等点的请求(存储记录的请求和
请求检索记录)。 -
在客户端模式下,您的节点将作为客户端查询DHT,但不会响应
应其他同行的要求。该模式比服务器占用资源少
模式。
当 Routing.Type
设置为 auto
或 dht
时,您的节点将作为 DHT 客户端启动,并且
当确定可以从 DHT 服务器访问时,切换到 DHT 服务器
公共互联网(例如,它不在防火墙后面)。
要强制使用特定的仅 DHT 模式、客户端或服务器,请将"Routing.Type"设置为
分别为"dhtclient"或"dhtserver"。请不要将其设置为"dhtserver"
除非您确定可以从公共网络访问您的节点。
当"Routing.Type"设置为"auto"或"autoclient"时,您的节点将加速某些类型的路由
通过利用与 IPIP-337 兼容的 HTTP 端点
除了IPFS DHT。
默认情况下, IPNI 的实例
使用 https://cid.contact。
将"Routing.Type"设置为"custom"后,可以在"Routing.Routers"中配置替代路由规则。
默认值:"自动"(DHT + IPNI)
类型: 可选字符串
( null
/缺失表示默认值)
路由.AcceleratedDHTClient
{#路由-AcceleratedDHTClient}
这个具有完整路由表策略的替代 DHT 客户端将
每小时对 DHT 进行一次完整扫描并记录找到的所有节点。
然后,当尝试查找时,不必经历多个 Kad 跃点
通过查找内存中记录的网络表,能够找到最终的20个节点。
这意味着持续更高的内存来存储路由表
以及每次网络扫描的额外 CPU 和网络带宽。
然而,单个读/写操作的延迟应该快 10 倍左右
在更大的数据集上,吞吐量可提高 600 万倍!
这与"Routing.Type""custom"不兼容。如果您使用可组合路由器
您可以在每个路由器上单独进行配置。
当启用时:
- 客户端 DHT 操作(读取和写入)应该更快地完成
- 提供商现在将使用键空间扫描模式来保持活动状态
CID 集大多个数量级。- 标准的 Bucket-Routing-Table DHT 仍将为 DHT 服务器运行(如果
DHT 服务器已启用)。这意味着经典路由表将
仍然可以用来回答其他节点。
这对于保持不损害网络至关重要。
- 标准的 Bucket-Routing-Table DHT 仍将为 DHT 服务器运行(如果
- 操作"ipfs stats dht"将默认显示有关加速 DHT 客户端的信息
注意事项:
- 运行加速客户端可能会导致更多资源消耗(连接、RAM、CPU、带宽)
- 其机器/网络可以执行的并行连接数量受到限制的用户可能会受到影响
- 资源使用不顺畅,客户端轮流抓取网络,重新提供也同样轮次完成
- 以前拥有大量内容但无法在网络上做广告的用户将看到内容增加
当节点开始将其所有 CID 通告到网络中时,出口带宽。如果您有大量数据
输入您不想宣传的节点,然后考虑使用 Reprovider Strategies
以减少您重新提供的 CID 数量。同样,如果您运行的节点主要处理
短暂的临时数据(例如,您使用单独的节点来摄取数据,然后存储和提供数据)
您可能会受益于使用 策略提供 来防止广告
您最终不会拥有的数据。
- 目前,DHT 无法用于操作前 5-10 分钟的查询,因为路由表正在更新中。
准备好了。这意味着在 DHT 中搜索特定节点或内容等操作最初将无法进行。- 您可以通过运行"ipfs stats dht"来查看 DHT 是否已初始填充
- 目前加速DHT客户端不兼容基于局域网的DHT,不会对DHT进行操作
他们
默认值:"假"
类型:"bool"(缺少表示"false")
路由.路由器
{#路由-路由器}
实验:"Routing.Routers"配置可能会在未来版本中更改
附加路由器的映射。
允许使用替代路由器扩展默认路由 (DHT)
实施。
映射键是路由器的名称,值是其配置。
默认值: {}
类型: 对象[字符串->对象]
路由.路由器:类型
{#路由-路由器:类型}
实验:"Routing.Routers"配置可能会在未来版本中更改
它指定将创建的路由类型。
目前支持的类型:
- 基于 IPIP-337 的 HTTP 协议的"http"简单委托路由
dht
提供基于 libp2p 的 kad-dht 的去中心化路由parallel
和sequential
:可用于顺序或并行运行多个路由器的帮助程序。
类型: 字符串
路由.路由器:参数
{#路由-路由器:参数}
实验:"Routing.Routers"配置可能会在未来版本中更改
创建指定路由器所需的参数。每种路由器类型支持的参数:
HTTP:
Endpoint
(强制):将用于连接到指定路由器的 URL。MaxProvideBatchSize
:此数字确定每批发送的 CID 的最大数量。服务器每批接受的元素可能不超过 100 个。默认 100 个元素。MaxProvideConcurrency
:它确定提供内容时使用的线程数。默认情况下为 GOMAXPROCS。
双氢睾酮:
"Mode"
:DHT 使用的模式。可能的值:"服务器"、"客户端"、"自动""AcceleratedDHTClient"
:如果您想使用加速DHT,请设置为true
。- "PublicIPNetwork":设置为"true"以创建"WAN"DHT。设置为"false"以创建"LAN"DHT。
平行线:
Routers
:将并行执行的路由器列表:Name:string
:路由器的名称。它应该是之前添加到"路由器"列表中的其中之一。超时:持续时间
:本地超时。它接受与 Gotime.ParseDuration(string)
兼容的字符串(10s
、1m
、2h
)。当这个特定的路由器被调用时,时间就会开始计时,当路由器返回时,或者我们达到指定的超时时间,时间就会停止。ExecuteAfter:duration
:提供此参数将在指定时间延迟该路由器的执行。它接受与 Gotime.ParseDuration(string)
兼容的字符串(10s
、1m
、2h
)。IgnoreErrors:bool
:它将指定如果发生错误,是否应忽略该路由器。
超时:持续时间
:全局超时。它接受与 Gotime.ParseDuration(string)
兼容的字符串(10s
、1m
、2h
)。
顺序:
Routers
:将按顺序执行的路由器列表:Name:string
:路由器的名称。它应该是之前添加到"路由器"列表中的其中之一。超时:持续时间
:本地超时。它接受与 Gotime.ParseDuration(string)
兼容的字符串。当这个特定的路由器被调用时,时间就会开始计时,当路由器返回时,或者我们达到指定的超时时间,时间就会停止。IgnoreErrors:bool
:它将指定如果发生错误,是否应忽略该路由器。
超时:持续时间
:全局超时。它接受与 Gotime.ParseDuration(string)
兼容的字符串。
默认值: {}
(使用安全的隐式默认值)
类型: 对象[字符串->字符串]
路由:方法
{#路由:方法}
Methods:map
将定义每个方法将执行哪些路由器。关键是方法的名称:"provide"、"find-providers"、"find-peers"、"put-ipns"、"get-ipns"。所有方法都必须添加到列表中。
该值将包含:
RouterName:string
:路由器的名称。它应该是之前添加到"Routing.Routers"列表中的其中之一。
类型: 对象[字符串->对象]
例子:
使用 2 个路由器、DHT (LAN/WAN) 和并行路由器的完整示例。
|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
| $ ipfs config Routing.Type --json '"自定义"' $ ipfs 配置 Routing.Routers.WanDHT --json '{ "类型":"dht", "参数": { "模式":"自动", "公共IP网络":正确, "加速DHTClient":假 } }' $ ipfs 配置 Routing.Routers.LanDHT --json '{ "类型":"dht", "参数": { "模式":"自动", "公共IP网络":假, "加速DHTClient":假 } }' $ ipfs 配置 Routing.Routers.ParallelHelper --json '{ "类型":"并行", "参数": { "路由器":[ { "路由器名称":"LanDHT", "忽略错误":正确, "超时":"3秒" }, { "路由器名称":"WanDHT", "忽略错误":错误, "超时":"5m", "执行后":"2秒" } ] } }' ipfs 配置路由.Methods --json '{ "查找同行":{ "路由器名称":"并行助手" }, "寻找供应商":{ "路由器名称":"并行助手" }, "获取 ipns":{ "路由器名称":"并行助手" }, "提供": { "路由器名称":"并行助手" }, "put-ipns":{ "路由器名称":"并行助手" } }'
|
群
{#群}
用于配置群的选项。
Swarm.AddrFilters
{#Swarm-AddrFilters}
不拨号的地址数组(多地址网络掩码)。默认情况下,IPFS 节点
公布_所有_地址,甚至是内部地址。这使得节点更容易
同一网络可以互相联系。不幸的是,这意味着 IPFS
每当拨号时,节点都会尝试连接到一个或多个私有IP地址
另一个节点,即使这个另一个节点位于不同的网络上。这可能
触发某些托管提供商的网络扫描警报或导致某些设置紧张。
server
配置文件用合理的默认值填充此列表,
防止拨号到所有不可路由的 IP 地址(例如, /ip4/192.168.0.0/ipcidr/16
,
这是 192.168.0.0/16
的多地址表示),但你应该始终
检查您自己的网络和/或托管提供商的设置。
默认值: []
类型: 数组[字符串]
Swarm.DisableBandwidthMetrics
{#Swarm-DisableBandwidthMetrics}
一个布尔值,当设置为 true 时,将导致 ipfs 不跟踪
带宽指标。禁用带宽指标可能会导致性能轻微下降
改进以及内存使用量的减少。
默认值:"假"
类型: 布尔
Swarm.DisableNatPortMap
{#Swarm-DisableNatPortMap}
禁用自动 NAT 端口转发。
如果未禁用(默认),Kubo 会要求 NAT 设备(例如路由器)打开
启动外部端口并将其转发到 Kubo 正在运行的端口。当这个
工作(即,当您的路由器支持 NAT 端口转发时),它使本地
Kubo 节点可通过公共互联网访问。
默认值:"假"
类型: 布尔
Swarm.EnableHolePunching
{#Swarm-EnableHolePunching}
启用NAT穿越打洞功能
当无法进行端口转发时。
启用后,Kubo 将使用以下方式与交易对手进行协调
[中继连接]( https://github.com/libp2p/specs/blob/master/relay/ Circuit-v2.md),
升级为直接连接
尽可能通过 NAT/防火墙。
此功能需要将"Swarm.RelayClient.Enabled"设置为"true"。
默认值: true
类型: 标志
Swarm.EnableAutoRelay
{#Swarm-EnableAutoRelay}
已删除
请参阅"Swarm.RelayClient"。
Swarm.RelayClient
{#Swarm-RelayClient}
中继客户端使用中继服务的配置选项。
默认值: {}
类型: 对象
Swarm.RelayClient.Enabled
{#Swarm-RelayClient-Enabled}
为此节点启用"自动中继用户"模式。
如果您的节点检测到,它将自动_使用_来自网络的公共中继
无法从公共互联网访问它(例如,它位于
防火墙)并从公共中继获取"/p2p-电路"地址。
默认值: true
类型: 标志
Swarm.RelayClient.StaticRelays
{#Swarm-RelayClient-StaticRelays}
您的节点将使用这些静态配置的中继服务器
而不是从网络中发现公共中继([Circuit Relay v2]( https://github.com/libp2p/specs/blob/master/relay/ Circuit-v2.md))。
默认值: []
类型: 数组[字符串]
Swarm.RelayService
{#Swarm-RelayService}
可以提供给_other_对等点的中继服务的配置选项
在网络上( Circuit Relay v2 )。
默认值: {}
类型: 对象
Swarm.RelayService.Enabled
{#Swarm-RelayService-Enabled}
允许向网络上的其他对等点提供"/p2p-电路"v2 中继服务。
注意:这是中继系统的服务/服务器部分。
禁用此选项将阻止该节点作为中继服务器运行。
使用 Swarm.RelayClient.Enabled
将您的节点转变为中继用户。
默认值: true
类型: 标志
Swarm.RelayService.Limit
{#Swarm-RelayService-Limit}
限制应用于每个中继连接。
默认值: {}
类型: 对象[字符串 -> 字符串]
Swarm.RelayService.ConnectionDurationLimit
{#Swarm-RelayService-ConnectionDurationLimit}
重置中继连接之前的时间限制。
默认值: "2m"
类型: 持续时间
Swarm.RelayService.ConnectionDataLimit
{#Swarm-RelayService-ConnectionDataLimit}
重置中继连接之前中继的数据限制(每个方向)。
默认值: 131072
(128 kb)
类型: 可选整数
Swarm.RelayService.ReservationTTL
{#Swarm-RelayService-ReservationTTL}
新的或刷新的预订的持续时间。
默认值: "1h"
类型: 持续时间
Swarm.RelayService.MaxReservations
{#Swarm-RelayService-MaxReservations}
活动中继插槽的最大数量。
默认值: 128
类型: 可选整数
Swarm.RelayService.MaxCircuits
{#Swarm-RelayService-MaxCircuits}
每个对等方打开的中继连接的最大数量。
默认值: 16
类型: 可选整数
Swarm.RelayService.BufferSize
{#Swarm-RelayService-BufferSize}
中继连接缓冲区的大小。
默认值: 2048
类型: 可选整数
Swarm.RelayService.MaxReservationsPerPeer
{#Swarm-RelayService-MaxReservationsPerPeer}
来自同一对等点的最大保留数。
默认值: 4
类型: 可选整数
Swarm.RelayService.MaxReservationsPerIP
{#Swarm-RelayService-MaxReservationsPerIP}
来自同一 IP 的最大保留数。
默认值: 8
类型: 可选整数
Swarm.RelayService.MaxReservationsPerASN
{#Swarm-RelayService-MaxReservationsPerASN}
来自同一 ASN 的最大保留数。
默认值: 32
类型: 可选整数
Swarm.EnableRelayHop
{#Swarm-EnableRelayHop}
已删除
替换为 Swarm.RelayService.Enabled
。
Swarm.DisableRelay
{#Swarm-DisableRelay}
已删除
将"Swarm.Transports.Network.Relay"设置为"false"。
Swarm.EnableAutoNATService
{#Swarm-EnableAutoNATService}
已删除
请使用 AutoNAT.ServiceMode
。
Swarm.ConnMgr
{#Swarm-ConnMgr}
连接管理器决定要保留哪些连接以及多少个连接
被配置为保留。Kubo 目前支持两种连接管理器:
- none:从不关闭空闲连接。
- basic:默认的连接管理器。
默认情况下,此部分为空,隐式默认值定义如下
被使用。
Swarm.ConnMgr.Type
{#Swarm-ConnMgr-Type}
设置要使用的连接管理器类型,选项有:"none"(无连接
管理)和"基本"。
默认值:"基本"。
类型:"可选字符串"(未设置或为空时默认)
基本连接管理器 {#基本连接管理器}
基本连接管理器使用"高水位"、"低水位"和内部
评分以定期关闭连接以释放资源。当一个节点
使用基本连接管理器达到"HighWater"空闲连接,它将
关闭最不有用的连接,直到达到"LowWater"空闲连接。
在以下情况下,连接管理器认为连接空闲:
- 它尚未受到某些子系统的显式_保护_。例如,比特交换
将保护与正在主动下载数据的对等点的连接,
DHT 将保护一些对等点进行路由,并且对等子系统将
保护所有"对等"节点。 - 它的存在时间比
GracePeriod
还要长。
例子:
|------------------------------|-----------------------------------------------------------------------------------------|
| 1 2 3 4 5 6 7 8 9 10
| { "一群": { "ConnMgr": { "类型":"基本", "低水位": 100 , "高水位": 200 , "宽限期":" 30 秒" } } }
|
Swarm.ConnMgr.LowWater
{#Swarm-ConnMgr-LowWater}
LowWater 是基本连接管理器将要处理的连接数
修剪到。
默认值: 32
类型: 可选整数
Swarm.ConnMgr.HighWater
{#Swarm-ConnMgr-HighWater}
HighWater 是连接数,超过时将触发
连接GC操作。注意:受保护/最近形成的连接不计算在内
向这个极限。
默认值: 96
类型: 可选整数
Swarm.ConnMgr.GracePeriod
{#Swarm-ConnMgr-GracePeriod}
GracePeriod 是新连接不被关闭的时间段
由连接管理器。
默认值:"20 秒"
类型: 可选持续时间
Swarm.ResourceMgr
{#Swarm-ResourceMgr}
了解有关 Kubo 使用 libp2p 网络资源管理器的更多信息
在 专用资源管理文档 中。
Swarm.ResourceMgr.Enabled
{#Swarm-ResourceMgr-Enabled}
使用基于默认值和/或其他配置的限制来启用 libp2p 资源管理器,如 libp2p 资源管理 中所述。
默认值: true
类型: 标志
Swarm.ResourceMgr.MaxMemory
{#Swarm-ResourceMgr-MaxMemory}
这是允许 libp2p 使用的最大内存量。
当达到此限制时,libp2p 的资源管理器将阻止创建额外的资源。
该值还用于扩展不同范围内各种资源的限制
当使用默认限制(在 libp2p 资源管理 中讨论)时。
例如,增加此值将增加传入连接的默认限制。
可以通过"ipfs swarm resources --help"检查运行时限制。
默认值:"[TOTAL_SYSTEM_MEMORY]/2"
类型: 可选字节
Swarm.ResourceMgr.MaxFileDescriptors
{#Swarm-ResourceMgr-MaxFileDescriptors}
这是允许 libp2p 使用的文件描述符的最大数量。
当达到此限制时,libp2p 的资源管理器将防止额外的文件描述符消耗。
此参数在 Windows 上被忽略。
默认"[TOTAL_SYSTEM_FILE_DESCRIPTORS]/2"
类型: 可选整数
Swarm.ResourceMgr.Allowlist
{#Swarm-ResourceMgr-Allowlist}
可以绕过正常系统限制的多地址列表(但仍受白名单范围限制)。
go-libp2p-resource-manager#Allowlist.Add 的便捷配置。
默认值: []
类型: 数组[字符串]
(多地址)
Swarm.Transports
{#Swarm-Transports}
libp2p 传输的配置部分。将应用空配置
默认值。
Swarm.Transports.Network
{#Swarm-Transports-Network}
libp2p network 传输的配置部分。启用的传输
该部分将用于拨号。但是,要接收这些连接
传输,这些传输的多地址必须添加到"Addresses.Swarm"中。
支持的传输包括:QUIC、TCP、WS、Relay 和 WebTransport。
本节中的每个字段都是一个"标志"。
Swarm.Transports.Network.TCP
{#Swarm-Transports-Network-TCP}
[TCP] ( https://en.wikipedia.org/wiki/Transmission_Control_Protocol ) 是一个简单的
和广泛部署的传输,它应该与大多数实现兼容
和网络配置。TCP 不直接支持加密和/或
多路复用,因此 libp2p 将在其之上分层安全和多路复用传输。
默认值:启用
类型: 标志
收听地址:
- /ip4/0.0.0.0/tcp/4001(默认)
- /ip6/::/tcp/4001(默认)
Swarm.Transports.Network.Websocket
{#Swarm-Transports-Network-Websocket}
[Websocket] ( https://en.wikipedia.org/wiki/WebSocket ) 是一种常用的传输方式
从基于浏览器的 js-ipfs 节点连接到非基于浏览器的 IPFS 节点。
虽然默认情况下启用拨号功能,但 Kubo 不会监听此功能
默认运输。
默认值:启用
类型: 标志
收听地址:
- /ip4/0.0.0.0/tcp/4002/ws
- /ip6/::/tcp/4002/ws
Swarm.Transports.Network.QUIC
{#Swarm-Transports-Network-QUIC}
[QUIC] ( https://en.wikipedia.org/wiki/QUIC ) 是最广泛使用的交通工具
久保节点。它是一种基于 UDP 的传输,具有内置加密和
复用。相对于 TCP 的主要优点是:
1.建立连接需要1次往返(我们的TCP传输
目前需要 4)。
2. 没有 队头阻塞 。
3. 每个连接不需要文件描述符,减轻了操作系统的负载。
默认值:启用
类型: 标志
收听地址:
- /ip4/0.0.0.0/udp/4001/quic(默认)
- /ip6/::/udp/4001/quic(默认)
Swarm.Transports.Network.Relay
{#Swarm-Transports-Network-Relay}
Libp2p 中继 代理
通过在多个 libp2p 节点之间跳跃来形成连接的传输。
允许 IPFS 节点使用其"/p2p-电路"连接到其他对等点
多地址。这种传输主要用于绕过防火墙和
NAT。
也可以看看:
- 文档:[Libp2p 电路继电器]( https://docs.libp2p.io/concepts/ Circuit-relay/)
Swarm.RelayClient.Enabled
用于获取公共- 在防火墙后面时的"/p2p-电路"地址。
Swarm.EnableHolePunching
通过中继直接连接升级
Swarm.RelayService.Enabled
成为
其他对等点的有限中继
默认值:启用
类型: 标志
收听地址:
- 这种运输很特殊。任何启用此传输的节点都可以接收
此传输上的入站连接,无需指定侦听地址。
Swarm.Transports.Network.WebTransport
{#Swarm-Transports-Network-WebTransport}
[ go-libp2p
]的新功能( https://github.com/libp2p/go-libp2p/releases/tag/v0.23.0 )
是 WebTransport 传输。
这是 WebSocket 的精神后代,但基于"HTTP/3"。
由于它运行在"HTTP/3"之上,因此它在底层使用"QUIC"。
由于额外的开销,我们预计它的性能比"QUIC"最差,
这种传输实际上是针对无法执行"TCP"或"QUIC"的代理(如浏览器)。
WebTransport 是一种新的传输协议,目前由 IETF 和 W3C 正在开发,并且已经由 Chrome 实现。
从概念上讲,它就像在 QUIC 而不是 TCP 上运行的 WebSocket。最重要的是,它允许浏览器建立与 WebTransport 服务器的(安全!)连接,而无需 CA 签名的证书,
从而使在浏览器中运行的任何 js-libp2p 节点能够连接到任何 kubo 节点,而无需手动配置。
之前的替代方案是 websocket 安全,需要手动安装反向代理和 TLS 证书。
默认值:启用
类型: 标志
Swarm.Transports.Security
{#Swarm-Transports-Security}
libp2p security 传输的配置部分。启用的传输
此部分将用于保护未加密的连接。
安全传输配置为"优先级"类型。
当建立_出站_连接时,Kubo 将尝试每种安全性
按优先级顺序传输(从低到高),直到找到一个协议
接收器支持。当建立_inbound_连接时,Kubo会让
发起者选择协议,但会拒绝使用任何禁用的协议
运输。
支持的传输包括:TLS(优先级 100)和 Noise(优先级 300)。
默认优先级绝不会低于 100。
Swarm.Transports.Security.TLS
{#Swarm-Transports-Security-TLS}
TLS (1.3) 是默认值
从 Kubo 0.5.0 开始,安全传输。这也是最受关注和关注的
值得信赖的安全传输。
默认值: 100
类型: 优先
Swarm.Transports.Security.SECIO
{#Swarm-Transports-Security-SECIO}
对 SECIO 的支持已被删除。请从您的配置中删除此选项。
Swarm.Transports.Security.Noise
{#Swarm-Transports-Security-Noise}
Noise 预计将被替换
由于易于使用,TLS 作为跨平台、默认的 libp2p 协议
执行。目前默认启用,但优先级较低,因为它
尚未得到广泛支持。
默认值: 300
类型: 优先
Swarm.Transports.Multiplexers
{#Swarm-Transports-Multiplexers}
libp2p _多路复用器_传输的配置部分。启用的传输
该部分将用于复用双工连接。
多路复用器传输的保护方式与安全传输相同,
"优先"类型。与安全传输一样,发起者得到他们的
第一选择。
支持的传输包括:Yamux(优先级 100)和 Mplex(优先级 200)
默认优先级绝不会低于 100。
Swarm.Transports.Multiplexers.Yamux
{#Swarm-Transports-Multiplexers-Yamux}
Yamux 是 Kubo 节点之间通信时使用的默认多路复用器。
默认值: 100
类型: 优先
Swarm.Transports.Multiplexers.Mplex
{#Swarm-Transports-Multiplexers-Mplex}
Mplex 是 Kubo 和所有设备之间通信时使用的默认多路复用器
其他 IPFS 和 libp2p 实现。与 Yamux 不同:
- Mplex 是一个更简单的协议。
- Mplex 更高效。
- Mplex 没有内置的 keepalive。
- Mplex 不支持背压。不幸的是,这意味着,如果
到对等点的单个流会备份一段时间,mplex
传输将杀死该流以允许其他流继续进行。在另一
另一方面,缺乏背压意味着 mplex 在某些方面可以明显更快
高延迟连接。
默认值: 200
类型: 优先
DNS
{#DNS}
用于为 DNSLink 和 /dns*
Multiaddrs 配置 DNS 解析的选项。
DNS.Resolvers
{#DNS-Resolvers}
FQDN 到自定义解析器 URL 的映射。
这允许覆盖操作系统提供的默认 DNS 解析器,
每个域或 TLD 使用不同的解析器(包括来自替代的非 ICANN 命名系统的解析器)。
例子:
|------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4 5 6 7 8 9 10
| { "DNS": { "解析器": { "eth。":"https : //dns.eth.limo/dns-query", "加密。":"https : //resolver.unstoppable.io/dns-query", "自由。":"https : //ns1.irisen.fr/dns-query", "." : "https://cloudflare-dns.com/dns-query" } } }
|
请注意:
-
目前仅支持 DNS over HTTPS (DoH) 端点的"https://" URL 作为值。
-
默认的全能解析器是操作系统提供的明文解析器。可以通过为由"."指示的 DNS 根添加 DoH 条目来覆盖它,如上所示。
-
对选定分散式 TLD 的开箱即用支持依赖于 尽力提供的集中式服务 。隐式 DoH 解析器是:
|-----------------|-------------------------------------------------------------------------------------------------------------------------------| |
1 2 3 4
|{ "eth。":"https : //resolver.cloudflare-eth.com/dns-query", "加密。":"https : //resolver.cloudflare-eth.com/dns-query" }
|为了获得去中心化命名系统的所有好处,我们强烈建议将 DoH 端点设置为空字符串,并在本地主机上运行自己的去中心化解析器作为包罗万象的解析器。
默认值: {}
类型: 对象[字符串 -> 字符串]
DNS.MaxCacheTTL
{#DNS-MaxCacheTTL}
DoH 缓存中条目有效的最大持续时间。
这允许您限制 DNS 响应建议的生存时间 ( RFC2181 )。
如果存在,上限将应用于 DNS.Resolvers
中的 DoH 解析器。
注意:这不适用于 Go 的默认 DNS 解析器。要使其成为全局设置,请首先向"DNS.Resolvers"添加"."条目。
例子:
"5m"
DNS 条目保留 5 分钟或更短时间。"0s"
DNS 条目一旦被检索就会过期。
默认值:尊重 DNS 响应 TTL
类型: 可选持续时间