Releases: ipfs/kubo
v0.33.0-rc1
This is a Release Candidate we managed to ship before holiday break :-)
See the related issue: #10580 + discussion forum topic
And the draft changelog: docs/changelogs/v0.33.md
This release was brought to you by the Shipyard team.
v0.32.1
This release was brought to you by the Shipyard team.
Overview
This is a bugfix release on top of v0.32.0 to include go-libp2p-kad-dht v0.28.1.
If you run with Routing.AcceleratedDHTClient=true
make sure to update.
Release v0.32 issue #10547
🗣 Discuss
If you have comments, questions, or feedback on this release, please post here.
If you experienced any bugs with the release, please post an issue.
🔦 Highlights
🎯 AutoTLS: Automatic Certificates for libp2p WebSockets via libp2p.direct
This release introduces an experimental feature that significantly improves how browsers (Helia, Service Worker) can connect to Kubo node.
Opt-in configuration allows a publicly dialable Kubo nodes (public IP, port forwarding, or NAT with uPnP) to obtain CA-signed TLS certificates for libp2p Secure WebSocket (WSS) connections automatically.
Tip
To enable this feature, set AutoTLS.Enabled
to true
and add a listener for /tls/sni/*.libp2p.direct/ws
on a separate TCP port:
{
+ "AutoTLS": { "Enabled": true },
"Addresses": {
"Swarm": {
"/ip4/0.0.0.0/tcp/4001",
+ "/ip4/0.0.0.0/tcp/4002/tls/sni/*.libp2p.direct/ws",
"/ip6/::/tcp/4001",
+ "/ip6/::/tcp/4002/tls/sni/*.libp2p.direct/ws",
After restarting your node for the first time you may need to wait 5-15 minutes to pass all checks and for the changes to take effect.
We are working on sharing the same TCP port with other transports (go-libp2p#2984).
See AutoTLS
configuration for more details how to enable it and what to expect.
This is an early preview, we appreciate you testing and filling bug reports or feedback in the tracking issue at kubo#10560.
📦️ Dependency updates
- update
ipfs-webui
to v4.4.0 - update
boxo
to v0.24.1 + v0.24.2 + v0.24.3- This includes a number of fixes and bitswap improvements, and support for filtering from IPIP-484 in delegated HTTP routing and IPNI queries.
- update
go-libp2p
to v0.37.0- This update required removal of
Swarm.RelayService.MaxReservationsPerPeer
configuration option from Kubo. If you had it set, remove it from your configuration file.
- This update required removal of
- update
go-libp2p-kad-dht
to v0.27.0 + v0.28.0 + v0.28.1 - update
go-libp2p-pubsub
to v0.12.0 - update
p2p-forge/client
to v0.0.2 - removed
go-homedir
- The
github.com/mitchellh/go-homedir
repo is archived, no longer needed, and no longer maintained. homedir.Dir
is replaced by the stdlibos.UserHomeDir
homedir.Expand
is replaced byfsutil.ExpandHome
in thegithub.com/ipfs/kubo/misc/fsutil
package.- The new
github.com/ipfs/kubo/misc/fsutil
package contains file utility code previously located elsewhere in kubo.
- The
📝 Changelog
Full Changelog
- github.com/ipfs/kubo:
- chore: 0.32.0
- fix: go-libp2p-kad-dht v0.28.0 (#10578) (ipfs/kubo#10578)
- chore: 0.32.0-rc2
- feat: ipfs-webui v4.4.0 (#10574) (ipfs/kubo#10574)
- chore: label implicit loggers
- chore: boxo v0.24.3 and p2p-forge v0.0.2 (#10572) (ipfs/kubo#10572)
- chore: stop using go-homedir (#10568) (ipfs/kubo#10568)
- fix(autotls): store certificates at the location from the repo path (#10566) (ipfs/kubo#10566)
- chore: 0.32.0-rc1
- docs(autotls): add note about separate port use (#10562) (ipfs/kubo#10562)
- feat(AutoTLS): opt-in WSS certs from p2p-forge at libp2p.direct (#10521) (ipfs/kubo#10521)
- chore: upgrade to boxo v0.24.2 (#10559) (ipfs/kubo#10559)
- refactor: update to go-libp2p v0.37.0 (#10554) (ipfs/kubo#10554)
- docs(config): explain what multiaddr is
- chore: update dependencies (#10548) (ipfs/kubo#10548)
- chore: update test dependencies (#10555) (ipfs/kubo#10555)
- chore(ci): adjust verbosity
- chore(ci): verbose build of test/bin deps
- chore(ci): build docker images for staging branch
- Create Changelog: v0.32 (ipfs/kubo#10546)
- Merge release v0.31.0 (ipfs/kubo#10545)
- chore: update RELEASE_CHECKLIST.md (#10544) (ipfs/kubo#10544)
- feat: ipfs-webui v4.3.3 (#10543) (ipfs/kubo#10543)
- chore: update RELEASE_CHECKLIST.md (#10542) (ipfs/kubo#10542)
- Add full changelog to release changelog
- fix: go 1.23(.2) (#10540) (ipfs/kubo#10540)
- chore: bump version to 0.32.0-dev
- github.com/ipfs/boxo (v0.24.0 -> v0.24.3):
- Release v0.24.3 (ipfs/boxo#713)
- Merge branch 'main' into release
- Release v0.24.2 (ipfs/boxo#707)
- Release v0.24.1 (ipfs/boxo#706)
- github.com/ipfs/go-ipfs-cmds (v0.13.0 -> v0.14.0):
- chore: release v0.14.0 (#269) (ipfs/go-ipfs-cmds#269)
- github.com/ipfs/go-ipfs-redirects-file (v0.1.1 -> v0.1.2):
- chore: v0.1.2 (#29) (ipfs/go-ipfs-redirects-file#29)
- docs(readme): refer specs and ipip
- chore: update dependencies (#28) (ipfs/go-ipfs-redirects-file#28)
- github.com/ipfs/go-metrics-prometheus (v0.0.2 -> v0.0.3):
- chore: release v0.0.3 (#24) (ipfs/go-metrics-prometheus#24)
- chore: update deps and update go-log to v2 (#23) (ipfs/go-metrics-prometheus#23)
- sync: update CI config files (#9) (ipfs/go-metrics-prometheus#9)
- github.com/ipfs/go-unixfsnode (v1.9.1 -> v1.9.2):
- New release version (ipfs/go-unixfsnode#78)
- chore: update dependencies
- github.com/libp2p/go-flow-metrics (v0.1.0 -> v0.2.0):
- chore: release v0.2.0 (#33) (libp2p/go-flow-metrics#33)
- chore: cleanup readme (#31) (libp2p/go-flow-metrics#31)
- ci: uci/update-go (libp2p/go-flow-metrics#27)
- fix(ewma): reduce the chances of fake bandwidth spikes (#8) (libp2p/go-flow-metrics#8)
- chore: switch to typed atomics (#24) (libp2p/go-flow-metrics#24)
- test: use mock clocks for all tests (#25) (libp2p/go-flow-metrics#25)
- ci: uci/copy-templates (libp2p/go-flow-metrics#21)
- github.com/libp2p/go-libp2p (v0.36.5 -> v0.37.0):
- Release v0.37.0 (#3013) (libp2p/go-libp2p#3013)
- feat: Add WithFxOption (#2956) (libp2p/go-libp2p#2956)
- chore: update imports to use slices package (#3007) (libp2p/go-libp2p#3007)
- Change latency metrics buckets (#3012) (libp2p/go-libp2p#3012)
- chore: bump deps in preparation for v0.37.0 (#3011) (libp2p/go-libp2p#3011)
- autonat: fix interaction with autorelay (#2967) ([libp2p/go-libp2p#2967](h...
v0.32.0
Warning
If you depend on Routing.AcceleratedDHTClient=true
this release contains a regression where accelerated client does not crawl the network correctly and the regular one is used instead as a fallback, making announcements slower than expected.
The fix for Routing.AcceleratedDHTClient=true
is in v0.32.1.
If you don't use Routing.AcceleratedDHTClient=true
, this release is perfectly fine to use as-is.
This release was brought to you by the Shipyard team.
Overview
Release v0.32.0 issue #10547
🗣 Discuss
If you have comments, questions, or feedback on this release, please post here.
If you experienced any bugs with the release, please post an issue.
🔦 Highlights
🎯 AutoTLS: Automatic Certificates for libp2p WebSockets via libp2p.direct
This release introduces an experimental feature that significantly improves how browsers (Helia, Service Worker) can connect to Kubo node.
Opt-in configuration allows a publicly dialable Kubo nodes (public IP, port forwarding, or NAT with uPnP) to obtain CA-signed TLS certificates for libp2p Secure WebSocket (WSS) connections automatically.
Tip
To enable this feature, set AutoTLS.Enabled
to true
and add a listener for /tls/sni/*.libp2p.direct/ws
on a separate TCP port:
{
+ "AutoTLS": { "Enabled": true },
"Addresses": {
"Swarm": {
"/ip4/0.0.0.0/tcp/4001",
+ "/ip4/0.0.0.0/tcp/4002/tls/sni/*.libp2p.direct/ws",
"/ip6/::/tcp/4001",
+ "/ip6/::/tcp/4002/tls/sni/*.libp2p.direct/ws",
After restarting your node for the first time you may need to wait 5-15 minutes to pass all checks and for the changes to take effect.
We are working on sharing the same TCP port with other transports (go-libp2p#2984).
See AutoTLS
configuration for more details how to enable it and what to expect.
This is an early preview, we appreciate you testing and filling bug reports or feedback in the tracking issue at kubo#10560.
📦️ Dependency updates
- update
ipfs-webui
to v4.4.0 - update
boxo
to v0.24.1 + v0.24.2 + v0.24.3- This includes a number of fixes and bitswap improvements, and support for filtering from IPIP-484 in delegated HTTP routing and IPNI queries.
- update
go-libp2p
to v0.37.0- This update required removal of
Swarm.RelayService.MaxReservationsPerPeer
configuration option from Kubo. If you had it set, remove it from your configuration file.
- This update required removal of
- update
go-libp2p-kad-dht
to v0.27.0 + v0.28.0 - update
go-libp2p-pubsub
to v0.12.0 - update
p2p-forge/client
to v0.0.2 - removed
go-homedir
- The
github.com/mitchellh/go-homedir
repo is archived, no longer needed, and no longer maintained. homedir.Dir
is replaced by the stdlibos.UserHomeDir
homedir.Expand
is replaced byfsutil.ExpandHome
in thegithub.com/ipfs/kubo/misc/fsutil
package.- The new
github.com/ipfs/kubo/misc/fsutil
package contains file utility code previously located elsewhere in kubo.
- The
📝 Changelog
Full Changelog
- github.com/ipfs/kubo:
- chore: 0.32.0
- fix: go-libp2p-kad-dht v0.28.0 (#10578) (ipfs/kubo#10578)
- chore: 0.32.0-rc2
- feat: ipfs-webui v4.4.0 (#10574) (ipfs/kubo#10574)
- chore: label implicit loggers
- chore: boxo v0.24.3 and p2p-forge v0.0.2 (#10572) (ipfs/kubo#10572)
- chore: stop using go-homedir (#10568) (ipfs/kubo#10568)
- fix(autotls): store certificates at the location from the repo path (#10566) (ipfs/kubo#10566)
- chore: 0.32.0-rc1
- docs(autotls): add note about separate port use (#10562) (ipfs/kubo#10562)
- feat(AutoTLS): opt-in WSS certs from p2p-forge at libp2p.direct (#10521) (ipfs/kubo#10521)
- chore: upgrade to boxo v0.24.2 (#10559) (ipfs/kubo#10559)
- refactor: update to go-libp2p v0.37.0 (#10554) (ipfs/kubo#10554)
- docs(config): explain what multiaddr is
- chore: update dependencies (#10548) (ipfs/kubo#10548)
- chore: update test dependencies (#10555) (ipfs/kubo#10555)
- chore(ci): adjust verbosity
- chore(ci): verbose build of test/bin deps
- chore(ci): build docker images for staging branch
- Create Changelog: v0.32 (ipfs/kubo#10546)
- Merge release v0.31.0 (ipfs/kubo#10545)
- chore: update RELEASE_CHECKLIST.md (#10544) (ipfs/kubo#10544)
- feat: ipfs-webui v4.3.3 (#10543) (ipfs/kubo#10543)
- chore: update RELEASE_CHECKLIST.md (#10542) (ipfs/kubo#10542)
- Add full changelog to release changelog
- fix: go 1.23(.2) (#10540) (ipfs/kubo#10540)
- chore: bump version to 0.32.0-dev
- github.com/ipfs/boxo (v0.24.0 -> v0.24.3):
- Release v0.24.3 (ipfs/boxo#713)
- Merge branch 'main' into release
- Release v0.24.2 (ipfs/boxo#707)
- Release v0.24.1 (ipfs/boxo#706)
- github.com/ipfs/go-ipfs-cmds (v0.13.0 -> v0.14.0):
- chore: release v0.14.0 (#269) (ipfs/go-ipfs-cmds#269)
- github.com/ipfs/go-ipfs-redirects-file (v0.1.1 -> v0.1.2):
- chore: v0.1.2 (#29) (ipfs/go-ipfs-redirects-file#29)
- docs(readme): refer specs and ipip
- chore: update dependencies (#28) (ipfs/go-ipfs-redirects-file#28)
- github.com/ipfs/go-metrics-prometheus (v0.0.2 -> v0.0.3):
- chore: release v0.0.3 (#24) (ipfs/go-metrics-prometheus#24)
- chore: update deps and update go-log to v2 (#23) (ipfs/go-metrics-prometheus#23)
- sync: update CI config files (#9) (ipfs/go-metrics-prometheus#9)
- github.com/ipfs/go-unixfsnode (v1.9.1 -> v1.9.2):
- New release version (ipfs/go-unixfsnode#78)
- chore: update dependencies
- github.com/libp2p/go-flow-metrics (v0.1.0 -> v0.2.0):
- chore: release v0.2.0 (#33) (libp2p/go-flow-metrics#33)
- chore: cleanup readme (#31) (libp2p/go-flow-metrics#31)
- ci: uci/update-go (libp2p/go-flow-metrics#27)
- fix(ewma): reduce the chances of fake bandwidth spikes (#8) (libp2p/go-flow-metrics#8)
- chore: switch to typed atomics (#24) (libp2p/go-flow-metrics#24)
- test: use mock clocks for all tests (#25) (libp2p/go-flow-metrics#25)
- ci: uci/copy-templates (libp2p/go-flow-metrics#21)
- github.com/libp2p/go-libp2p (v0.36.5 -> v0.37.0):
- Release v0.37.0 (#3013) (libp2p/go-libp2p#3013)
- feat: Add WithFxOption (#2956) (libp2p/go-libp2p#2956)
- chore: update imports to use slices package (#3007) (libp2p/go-libp2p#3007)
- Change latency metrics buckets (#3012) ([libp2p/go-libp2p#3012](https://github.com/libp2p/go-lib...
v0.32.0-rc2
See the related issue: #10547
And the draft changelog: docs/changelogs/v0.32.md
If you are brave, consider enabling AutoTLS
and provide feedback.
v0.32.0-rc1
See the related issue: #10547
And the draft changelog: docs/changelogs/v0.32.md
If you are brave, consider enabling AutoTLS
and provide feedback.
v0.31.0
This release was brought to you by the Shipyard team.
Overview
Release v0.31.0 issue #10499
🗣 Discuss
If you have comments, questions, or feedback on this release, please post here.
If you experienced any bugs with the release, please post an issue.
🔦 Highlights
Experimental Pebble Datastore
Pebble visits Kubo
Pebble provides a high-performance alternative to leveldb as the datastore, and provides a modern replacement for legacy badgerv1.
A fresh Kubo node can be initialized with pebbleds
profile via ipfs init --profile pebbleds
.
There are a number of parameters available for tuning pebble's performance to your specific needs. Default values are used for any parameters that are not configured or are set to their zero-value.
For a description of the available tuning parameters, see kubo/docs/datastores.md#pebbleds.
New metrics
- Added 3 new go metrics:
go_gc_gogc_percent
,go_gc_gomemlimit_bytes
andgo_sched_gomaxprocs_threads
as those are recommended by the Go team - Added network usage metrics:
process_network_receive_bytes_total
andprocess_network_transmit_bytes_total
- Removed
go_memstat_lookups_total
metric which was always 0
lowpower
profile no longer breaks DHT announcements
We've notices users were applying lowpower
profile, and then reporting content routing issues. This was because lowpower
disabled reprovider system and locally hosted data was no longer announced on Amino DHT.
This release changes lowpower
profile to not change reprovider settings, ensuring the new users are not sabotaging themselves. It also adds annouce-on
and announce-off
profiles for controlling announcement settings separately.
Important
If you've ever applied the lowpower
profile before, there is a high chance your node is not announcing to DHT anymore.
If you have Reprovider.Interval
set to 0
you may want to set it to 22h
(or run ipfs config profile apply announce-on
) to fix your system.
As a convenience, ipfs daemon
will warn if reprovide system is disabled, creating oportinity to fix configuration if it was not intentional.
go 1.23, boxo 0.24 and go-libp2p 0.36.5
Various bugfixes. Please update.
📝 Changelog
Full Changelog
- github.com/ipfs/kubo:
- fix: go 1.23(.2) (#10540) (ipfs/kubo#10540)
- chore: bump version to 0.32.0-dev
- feat(routing/http): support IPIP-484 and streaming (#10534) (ipfs/kubo#10534)
- fix(daemon): webui URL when rpc is catch-all (#10520) (ipfs/kubo#10520)
- chore: update changelog and config doc with more info about pebble (#10533) (ipfs/kubo#10533)
- feat: pebbleds profile and plugin (#10530) (ipfs/kubo#10530)
- chore: dependency updates for 0.31 (#10511) (ipfs/kubo#10511)
- feat: explicit announce-on/off profiles (#10524) (ipfs/kubo#10524)
- fix(core): look for MFS root in local repo only (#8661) (ipfs/kubo#8661)
- Fix issue in ResourceManager and nopfsPlugin about repo path (#10492) (ipfs/kubo#10492)
- feat(bitswap): allow configuring WithWantHaveReplaceSize (#10512) (ipfs/kubo#10512)
- refactor: simplify logic for MFS pinning (#10506) (ipfs/kubo#10506)
- docs: clarify Gateway.PublicGateways (#10525) (ipfs/kubo#10525)
- chore: clarify dep update in RELEASE_CHECKLIST.md (#10518) (ipfs/kubo#10518)
- feat: ipfs-webui v4.3.2 (#10523) (ipfs/kubo#10523)
- docs(config): add useful references
- docs(config): improve profile descriptions (#10517) (ipfs/kubo#10517)
- docs: update RELEASE_CHECKLIST.md (#10496) (ipfs/kubo#10496)
- chore: create next changelog (#10510) (ipfs/kubo#10510)
- Merge Release: v0.30.0 [skip changelog] (ipfs/kubo#10508)
- chore: boxo v0.23.0 and go-libp2p v0.36.3 (#10507) (ipfs/kubo#10507)
- docs: replace outdated package paths described in rpc README (#10505) (ipfs/kubo#10505)
- fix: switch back to go 1.22 (#10502) (ipfs/kubo#10502)
- fix(cli): preserve hostname specified with --api in http request headers (#10497) (ipfs/kubo#10497)
- chore: upgrade to go 1.23 (#10486) (ipfs/kubo#10486)
- fix: error during config when running benchmarks (#10495) (ipfs/kubo#10495)
- chore: update go-unixfsnode, cmds, and boxo (#10494) (ipfs/kubo#10494)
- Docs fix spelling issues (#10493) (ipfs/kubo#10493)
- chore: update version (#10491) (ipfs/kubo#10491)
- github.com/ipfs/boxo (v0.23.0 -> v0.24.0):
- Release v0.24.0 (ipfs/boxo#683)
- github.com/ipfs/go-ipld-cbor (v0.1.0 -> v0.2.0):
- v0.2.0
- deprecate DumpObject() in favor of better named Encode()
- add an EncodeWriter method, using the pooled marshallers
- fix expCid vs actualCid guard
- github.com/ipld/go-car/v2 (v2.13.1 -> v2.14.2):
- v2.14.2 bump
- fix: goreleaser v2 compat, trigger release-binaries with workflow_run
- v2.14.1 bump
- chore: update fuzz to Go 1.22
- v2.14.0 bump
- fix(cmd): properly pick up --inverse and --cid-file args (ipld/go-car#531)
- Re-factor cmd functions to library (ipld/go-car#524)
- ci: uci/copy-templates (ipld/go-car#521)
- Add a
car ls --unixfs-blocks
to render two-column output (ipld/go-car#514)
- github.com/libp2p/go-libp2p (v0.36.3 -> v0.36.5):
- chore: remove Roadmap file (#2954) (libp2p/go-libp2p#2954)
- fix: Release v0.36.5
- autonatv2: recover from panics (#2992) (libp2p/go-libp2p#2992)
- basichost: ensure no duplicates in Addrs output (#2980) (libp2p/go-libp2p#2980)
- Release v0.36.4
- peerstore: better GC in membacked peerstore (#2960) (libp2p/go-libp2p#2960)
- fix: use quic.Version instead of the deprecated quic.VersionNumber (#2955) (libp2p/go-libp2p#2955)
- tcp: fix metrics for multiple calls to Close (#2953) (libp2p/go-libp2p#2953)
- github.com/libp2p/go-libp2p-kbucket (v0.6.3 -> v0.6.4):
- release v0.6.4 (libp2p/go-libp2p-kbucket#135)
- feat: add log printing when peer added and removed table (libp2p/go-libp2p-kbucket#134)
- Upgrade to go-log v2.5.1 (libp2p/go-libp2p-kbucket#132)
- chore: update go-libp2p-asn-util
- github.com/multiformats/go-multiaddr-dns (v0.3.1 -> v0.4.0):
- Release v0.4.0 (#64) (multiformats/go-multiaddr-dns#64)
- Limit total number of resolved addresses from DNS response (#63) (multiformats/go-multiaddr-dns#63)
- fix!: Only resolve the first DNS-like component (#61) (multiformats/go-multiaddr-dns#61)
- ...
v0.31.0-rc2
This second RC includes go-libp2p v0.36.5 and go 1.23.2 bugfixes.
Changelog: docs/changelogs/v0.31.md
Provide feedback in: https://discuss.ipfs.tech/t/kubo-v0-31-0-rc2-is-out/18592/
v0.31.0-rc1
See the related issue: #10499
And the draft changelog: docs/changelogs/v0.31.md
v0.30.0
- 💬 Discuss
- 🔦 Highlights
- Improved P2P connectivity
- Refactored Bitswap and dag-pb chunker
- WebRTC-Direct Transport enabled by default
- UnixFS 1.5: Mode and Modification Time Support
- AutoNAT V2 Service Introduced Alongside V1
- Automated
ipfs version check
- Version Suffix Configuration
/unix/
socket support inAddresses.API
- Cleaned Up
ipfs daemon
Startup Log - Commands Preserve Specified Hostname
- 📝 Changelog
- 👨👩👧👦 Contributors
Overview
🔦 Highlights
This release took longer and is more packed with fixes and features than usual.
Important
TLDR: update, it contains many, many fixes.
Improved P2P connectivity
This release comes with significant go-libp2p update from v0.34.1 to v0.36.3 (release notes).
It includes multiple fixes to key protocols: QUIC/Webtransport/WebRTC, Connection Upgrades through Relay (DCUtR), and Secure WebSockets.
Also, peers that are behind certain types of NAT will now be more reachable. For this alone, Kubo users are highly encouraged to upgrade.
Refactored Bitswap and dag-pb chunker
Some workloads may experience improved memory profile thanks to optimizations from Boxo SDK v0.23.0.
Important
Storage providers should upgrade to take advantage of the Bitswap server fix, which resolves the issue of greedy peers depleting available wantlist slots for their PeerID, resulting in stalled downloads.
WebRTC-Direct Transport enabled by default
Kubo now ships with WebRTC Direct listener enabled by default: /udp/4001/webrtc-direct
.
WebRTC Direct complements existing /wss
(Secure WebSockets) and /webtransport
transports. Unlike /wss
, which requires a domain name and a CA-issued TLS certificate, WebRTC Direct works with IPs and can be enabled by default on all Kubo nodes.
Learn more: Swarm.Transports.Network.WebRTCDirect
Note
Kubo 0.30 includes a migration for existing users that adds /webrtc-direct
listener on the same UDP port as /udp/{port}/quic-v1
. This supports the WebRTC-Direct rollout by reusing preexisting UDP firewall settings and port mappings created for QUIC.
UnixFS 1.5: Mode and Modification Time Support
Kubo now allows users to opt-in to store mode and modification time for files, directories, and symbolic links.
By default, if you do not opt-in, the old behavior remains unchanged, and the same CIDs will be generated as before.
The ipfs add
CLI options --preserve-mode
and --preserve-mtime
can be used to store the original mode and last modified time of the file being added, and ipfs files stat /ipfs/CID
can be used for inspecting these optional attributes:
$ touch ./file
$ chmod 654 ./file
$ ipfs add --preserve-mode --preserve-mtime -Q ./file
QmczQr4XS1rRnWVopyg5Chr9EQ7JKpbhgnrjpb5kTQ1DKQ
$ ipfs files stat /ipfs/QmczQr4XS1rRnWVopyg5Chr9EQ7JKpbhgnrjpb5kTQ1DKQ
QmczQr4XS1rRnWVopyg5Chr9EQ7JKpbhgnrjpb5kTQ1DKQ
Size: 0
CumulativeSize: 22
ChildBlocks: 0
Type: file
Mode: -rw-r-xr-- (0654)
Mtime: 13 Aug 2024, 21:15:31 UTC
The CLI and HTTP RPC options --mode
, --mtime
and --mtime-nsecs
can be used to set them to arbitrary values.
Opt-in support for mode
and mtime
was also added to MFS (ipfs files --help
). For more information see --help
text of ipfs files touch|stat|chmod
commands.
Modification time support was also added to the Gateway. If present, value from file's dag-pb is returned in Last-Modified
HTTP header and requests made with If-Modified-Since
can produce HTTP 304 not modified response.
Note
Storing mode
and mtime
requires root block to be dag-pb
and disabled raw-leaves
setting to create envelope for storing the metadata.
AutoNAT V2 Service Introduced Alongside V1
The AutoNAT service enables nodes to determine their public reachability on the internet. AutoNAT V2 enhances this protocol with improved features. In this release, Kubo will offer both V1 and V2 services to other peers, although it will continue to use only V1 when acting as a client. Future releases will phase out V1, transitioning clients to utilize V2 exclusively.
For more details, see the Deployment Plan for AutoNAT V2 and AutoNAT
configuration options.
Automated ipfs version check
Kubo now performs privacy-preserving version checks using the libp2p identify protocol on peers detected by the Amino DHT client.
If more than 5% of Kubo peers seen by your node are running a newer version, you will receive a log message notification.
- For manual checks, refer to
ipfs version check --help
for details. - To disable automated checks, set
Version.SwarmCheckEnabled
tofalse
.
Version Suffix Configuration
Defining the optional agent version suffix is now simpler. The Version.AgentSuffix
value from the Kubo config takes precedence over any value provided via ipfs daemon --agent-version-suffix
(which is still supported).
Note
Setting a custom version suffix helps with ecosystem analysis, such as Amino DHT reports published at https://stats.ipfs.network
/unix/
socket support in Addresses.API
This release fixes a bug which blocked users from using Unix domain sockets for Kubo's RPC (instead of a local HTTP port).
$ ipfs config Addresses.API "/unix/tmp/kubo.socket"
$ ipfs daemon # start with rpc socket
...
RPC API server listening on /unix/tmp/kubo.socket
$ # cli client, in different terminal can find socket via /api file
$ cat $IPFS_PATH/api
/unix/tmp/kubo.socket
$ # or have it pased via --api
$ ipfs --api=/unix/tmp/kubo.socket id
Cleaned Up ipfs daemon
Startup Log
The ipfs daemon
startup output has been streamlined to enhance clarity and usability:
$ ipfs daemon
Initializing daemon...
Kubo version: 0.30.0
Repo version: 16
System version: amd64/linux
Golang version: go1.22.5
PeerID: 12D3KooWQ73s1CQsm4jWwQvdCAtc5w8LatyQt7QLQARk5xdhK9CE
Swarm listening on 127.0.0.1:4001 (TCP+UDP)
Swarm listening on 192.0.2.10:4001 (TCP+UDP)
Swarm listening on [::1]:4001 (TCP+UDP)
Swarm listening on [2001:0db8::10]:4001 (TCP+UDP)
Run 'ipfs id' to inspect announced and discovered multiaddrs of this node.
RPC API server listening on /ip4/127.0.0.1/tcp/5001
WebUI: http://127.0.0.1:5001/webui
Gateway server listening on /ip4/127.0.0.1/tcp/8080
Daemon is ready
The previous lengthy listing of all listener and announced multiaddrs has been removed due to its complexity, especially with modern libp2p nodes sharing multiple transports and long lists of /webtransport
and /webrtc-direct
certhashes.
The output now features a simplified list of swarm listeners, displayed in the format host:port (TCP+UDP)
, which provides essential information for debugging connectivity issues, particularly related to port forwarding.
Announced libp2p addresses are no longer printed on startup, because libp2p may change or augument them based on AutoNAT, relay, and UPnP state. Instead, users are prompted to run ipfs id
to obtain up-to-date list of listeners and announced multiaddrs in libp2p format.
Commands Preserve Specified Hostname
When executing a CLI command over Kubo RPC API, if a hostname is specified by --api=/dns4/<domain>/
the resulting HTTP request now contains the hostname, instead of the the IP address that the hostname resolved to, as was the previous behavior. This makes it easier for those trying to run Kubo behind a reverse proxy using hostname-based rules.
📝 Changelog
Full Changelog
- github.com/ipfs/kubo:
- chore: set version to 0.30.0
- chore: bump CurrentVersionNumber
- chore: boxo v0.23.0 and go-libp2p v0.36.3 (#10507) (ipfs/kubo#10507)
- fix: switch back to go 1.22 (#10502) (ipfs/kubo#10502)
- chore: update go-unixfsnode, cmds, and boxo (#10494) (ipfs/kubo#10494)
- fix(cli): preserve hostname specified with --api in http request headers (#10497) (ipfs/kubo#10497)
- chore: upgrade to go 1.23 (#10486) (ipfs/kubo#10486)
- fix: error during config when running benchmarks (#10495) ([#10495](https:...
v0.30.0-rc3
Changelog: docs/changelogs/v0.30.md