kubo/docs/changelogs/v0.40.md
Marcin Rataj 6df07bd5a6 fix: wire --config-file flag across all commands
the --config-file global flag was defined but not properly used by most
commands. this fixes the flag to work consistently, allowing config to
be stored separately from the repo.

useful for Kubernetes deployments where config comes from a ConfigMap
and data lives on a PersistentVolume.

changes:
- fsrepo: add InitWithUserConfig/OpenWithUserConfig that respect custom
  config paths
- fsrepo: fix InitWithUserConfig to create version/datastore_spec even
  when config file already exists (pre-populated from ConfigMap)
- commands: update all commands that open repo to use the new functions
- daemon: add CONFIGURATION FILE MANAGEMENT section to help text
  explaining difference between --init-config (one-time copy) and
  --config-file (persistent external path)
- init: clarify that default-config template preserves Identity
2025-12-20 05:15:11 +01:00

3.4 KiB
Raw Blame History

Kubo changelog v0.40

This release was brought to you by the Shipyard team.

v0.40.0

Overview

🔦 Highlights

Routing V1 HTTP API now exposed by default

The Routing V1 HTTP API is now exposed by default at http://127.0.0.1:8080/routing/v1. This allows light clients in browsers to use Kubo Gateway as a delegated routing backend instead of running a full DHT client. Support for IPIP-476: Delegated Routing DHT Closest Peers API is included. Can be disabled via Gateway.ExposeRoutingAPI.

Track total size when adding pins

Adds total size progress tracking of pinned nodes during ipfs pin add --progress. The output now shows the total size of the pinned dag.

Example output:

Fetched/Processed 336 nodes (83 MB)

Improved config management for Kubernetes and containers

The --config-file flag now works across all commands. You can store the IPFS config file separately from the repo, which is useful for:

  • Kubernetes: Mount config from a ConfigMap while storing data on a PersistentVolume
  • Containers: Keep config in a read-only layer while data lives in a volume

--init-config vs --config-file:

# --init-config: copies template to $IPFS_PATH/config (one-time)
$ ipfs init --init-config /etc/ipfs/template.json
# Result: config lives at ~/.ipfs/config
# Edits to /etc/ipfs/template.json have no effect after init

# --config-file: uses external path directly (persistent)
$ ipfs init --repo-dir ~/.ipfs --config-file /etc/ipfs/config
$ ipfs daemon --repo-dir ~/.ipfs --config-file /etc/ipfs/config
# Result: no config in ~/.ipfs, always reads /etc/ipfs/config
# ConfigMap updates take effect on daemon restart

When initializing with a pre-existing config file, the Identity and all settings are preserved.

📦 Dependency updates

📝 Changelog

👨‍👩‍👧‍👦 Contributors