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)
- chore: bump deps in preparation for v0.37.0 (#3011) (libp2p/go-libp2p#3011)
- autonat: fix interaction with autorelay (#2967) (libp2p/go-libp2p#2967)
- swarm: add a peer dial latency metric (#2959) (libp2p/go-libp2p#2959)
- peerstore: limit number of non connected peers in addrbook (#2971) (libp2p/go-libp2p#2971)
- fix: swarm: refactor address resolution (#2990) (libp2p/go-libp2p#2990)
- Add backoff for updating local IP addresses on error (#2999) (libp2p/go-libp2p#2999)
- libp2phttp: HTTP Peer ID Authentication (#2854) (libp2p/go-libp2p#2854)
- relay: make only 1 reservation per peer (#2974) (libp2p/go-libp2p#2974)
- autonatv2: recover from panics (#2992) (libp2p/go-libp2p#2992)
- basichost: ensure no duplicates in Addrs output (#2980) (libp2p/go-libp2p#2980)
- fix(websocket): re-enable websocket transport test (#2987) (libp2p/go-libp2p#2987)
- feat(websocket): switch the underlying http server logger to use ipfs/go-log (#2985) (libp2p/go-libp2p#2985)
- peerstore: better GC in membacked peerstore (#2960) (libp2p/go-libp2p#2960)
- connmgr: reduce log level for untagging untracked peers (libp2p/go-libp2p#2961)
- 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)
- chore: remove Roadmap file (#2954) (libp2p/go-libp2p#2954)
- chore: add a funding JSON file to apply for Optimism rPGF round 5 (#2940) (libp2p/go-libp2p#2940)
- Fix: WebSocket: Clone TLS config before creating a new listener
- fix: enable dctur when interface address is public (#2931) (libp2p/go-libp2p#2931)
- fix: QUIC/Webtransport Transports now will prefer their owned listeners for dialing out (#2936) (libp2p/go-libp2p#2936)
- ci: uci/update-go (#2937) (libp2p/go-libp2p#2937)
- fix: slice append value (#2938) (libp2p/go-libp2p#2938)
- webrtc: wait for listener context before dropping connection (#2932) (libp2p/go-libp2p#2932)
- ci: use go1.23, drop go1.21 (#2933) (libp2p/go-libp2p#2933)
- Fail on any test timeout (#2929) (libp2p/go-libp2p#2929)
- test: Try to fix test timeout (#2930) (libp2p/go-libp2p#2930)
- ci: Out of the tarpit (#2923) (libp2p/go-libp2p#2923)
- Make BlackHoleState type public (#2917) (libp2p/go-libp2p#2917)
- Fix proto import paths (#2920) (libp2p/go-libp2p#2920)
- github.com/libp2p/go-libp2p-kad-dht (v0.26.1 -> v0.28.0):
- chore: release v0.28.0 (#998) (libp2p/go-libp2p-kad-dht#998)
- fix: set context timeout for
queryPeer
(#996) (libp2p/go-libp2p-kad-dht#996) - refactor: document and expose Amino DHT defaults (#990) (libp2p/go-libp2p-kad-dht#990)
- Use timeout context for NewStream call (libp2p/go-libp2p-kad-dht#994)
- release v0.27.0 (libp2p/go-libp2p-kad-dht#992)
- Add new DHT option to provide custom pb.MessageSender (libp2p/go-libp2p-kad-dht#991)
- fix: replace deprecated Boxo function (libp2p/go-libp2p-kad-dht#987)
- fix(query): reverting changes on TestRTEvictionOnFailedQuery (libp2p/go-libp2p-kad-dht#984)
- github.com/libp2p/go-libp2p-pubsub (v0.11.0 -> v0.12.0):
- chore: upgrade go-libp2p (#575) (libp2p/go-libp2p-pubsub#575)
- GossipSub v1.2: IDONTWANT control message and priority queue. (#553) (libp2p/go-libp2p-pubsub#553)
- Re-enable disabled gossipsub test (#566) (libp2p/go-libp2p-pubsub#566)
- chore: staticcheck
- chore: update rand usage
- chore: go fmt
- chore: add or force update version.json
- added missing Close call on the AddrBook member of GossipSubRouter (#568) (libp2p/go-libp2p-pubsub#568)
- test: test notify protocols updated (#567) (libp2p/go-libp2p-pubsub#567)
- Switch to the new peer notify mechanism (#564) (libp2p/go-libp2p-pubsub#564)
- test: use the regular libp2p host (#565) (libp2p/go-libp2p-pubsub#565)
- Missing flood protection check for number of message IDs when handling
Ihave
messages (#560) (libp2p/go-libp2p-pubsub#560)
👨👩👧👦 Contributors
Contributor | Commits | Lines ± | Files Changed |
---|---|---|---|
Marco Munizaga | 16 | +4253/-545 | 81 |
Pop Chunhapanya | 1 | +1423/-137 | 15 |
sukun | 10 | +752/-425 | 35 |
Steven Allen | 11 | +518/-541 | 35 |
Andrew Gillis | 19 | +348/-194 | 50 |
Marcin Rataj | 26 | +343/-132 | 47 |
Adin Schmahmann | 4 | +269/-29 | 12 |
gammazero | 12 | +154/-18 | 13 |
Josh Klopfenstein | 1 | +90/-35 | 27 |
galargh | 3 | +42/-44 | 13 |
Daniel Norman | 2 | +30/-16 | 4 |
Mikel Cortes | 3 | +25/-4 | 4 |
gopherfarm | 1 | +14/-14 | 6 |
Carlos Peliciari | 1 | +12/-12 | 4 |
Prithvi Shahi | 2 | +5/-11 | 3 |
web3-bot | 6 | +12/-3 | 6 |
guillaumemichel | 3 | +7/-6 | 3 |
Jorropo | 1 | +11/-0 | 1 |
Sorin Stanculeanu | 1 | +8/-0 | 1 |
Hlib Kanunnikov | 2 | +6/-2 | 4 |
André Bierlein | 1 | +4/-3 | 1 |
bytetigers | 1 | +1/-1 | 1 |
Wondertan | 2 | +2/-0 | 2 |
Alexandr Burdiyan | 1 | +1/-1 | 1 |
Guillaume Michel | 1 | +0/-1 | 1 |