@cryptotaxi247 / kubo / commits / 96f3007b5

docs(readme): update min. requirements + cleanup (#10750)

* docs(readme): update min. requirements + cleanup Adding note about extra memory requirement due to https://github.com/ipfs/kubo/commit/ba22102a640b3f41804319981d83908c96a96275 * docs(config): memory cost of buffered provider Co-authored-by: Daniel Norman <1992255+2color@users.noreply.github.com>

Marcin Rataj committed Mar 14, 2025 at 17:55 UTC 96f3007b55169d5b178b4e0563ec2dda6e29d3f5
2 files changed +21 -18
README.md
+15 -17
@@ -12,19 +12,19 @@
12 <a href="https://ipfs.tech"><img src="https://img.shields.io/badge/project-IPFS-blue.svg?style=flat-square" alt="Official Part of IPFS Project"></a>
13 <a href="https://discuss.ipfs.tech"><img alt="Discourse Forum" src="https://img.shields.io/discourse/posts?server=https%3A%2F%2Fdiscuss.ipfs.tech"></a>
14 <a href="https://matrix.to/#/#ipfs-space:ipfs.io"><img alt="Matrix" src="https://img.shields.io/matrix/ipfs-space%3Aipfs.io?server_fqdn=matrix.org"></a>
15 - <a href="https://github.com/ipfs/kubo/actions"><img src="https://img.shields.io/github/actions/workflow/status/ipfs/kubo/build.yml?branch=master" alt="ci"></a>
15 + <a href="https://github.com/ipfs/kubo/actions"><img src="https://img.shields.io/github/actions/workflow/status/ipfs/kubo/gobuild.yml?branch=master"></a>
16 <a href="https://github.com/ipfs/kubo/releases"><img alt="GitHub release" src="https://img.shields.io/github/v/release/ipfs/kubo?filter=!*rc*"></a>
17 - <a href="https://godoc.org/github.com/ipfs/kubo"><img src="https://img.shields.io/badge/godoc-reference-5272B4.svg?style=flat-square" alt="godoc reference"></a>
17 </p>
18
19 <hr />
20
21 ## What is Kubo?
22
24 -Kubo was the first IPFS implementation and is the most widely used one today. Implementing the *Interplanetary Filesystem* - the Web3 standard for content-addressing, interoperable with HTTP. Thus powered by IPLD's data models and the libp2p for network communication. Kubo is written in Go.
23 +Kubo was the first IPFS implementation and is the most widely used one today. Implementing the *Interplanetary Filesystem* - the standard for content-addressing on the Web, interoperable with HTTP. Thus powered by future-proof data models and the libp2p for network communication. Kubo is written in Go.
24
25 Featureset
26 - Runs an IPFS-Node as a network service that is part of LAN and WAN DHT
27 +- Native support for UnixFS (most popular way to represent files and directories on IPFS)
28 - [HTTP Gateway](https://specs.ipfs.tech/http-gateways/) (`/ipfs` and `/ipns`) functionality for trusted and [trustless](https://docs.ipfs.tech/reference/http/gateway/#trustless-verifiable-retrieval) content retrieval
29 - [HTTP Routing V1](https://specs.ipfs.tech/routing/http-routing-v1/) (`/routing/v1`) client and server implementation for [delegated routing](./docs/delegated-routing.md) lookups
30 - [HTTP Kubo RPC API](https://docs.ipfs.tech/reference/kubo/rpc/) (`/api/v0`) to access and control the daemon
@@ -64,12 +64,11 @@ Before opening an issue, consider using one of the following locations to ensure
64 - [Next milestones](#next-milestones)
65 - [Table of Contents](#table-of-contents)
66 - [Security Issues](#security-issues)
67 -- [Minimal System Requirements](#minimal-system-requirements)
67 - [Install](#install)
68 + - [Minimal System Requirements](#minimal-system-requirements)
69 - [Docker](#docker)
70 - [Official prebuilt binaries](#official-prebuilt-binaries)
71 - [Updating](#updating)
72 - - [Using ipfs-update](#using-ipfs-update)
72 - [Downloading builds using IPFS](#downloading-builds-using-ipfs)
73 - [Unofficial Linux packages](#unofficial-linux-packages)
74 - [ArchLinux](#arch-linux)
@@ -112,16 +111,21 @@ Before opening an issue, consider using one of the following locations to ensure
111
112 Please follow [`SECURITY.md`](SECURITY.md).
113
115 -### Minimal System Requirements
114 +## Install
115
117 -IPFS can run on most Linux, macOS, and Windows systems. We recommend running it on a machine with at least 6 GB of RAM and 2 CPU cores (ideally more, Kubo is highly parallel).
116 +The canonical download instructions for IPFS are over at: https://docs.ipfs.tech/install/. It is **highly recommended** you follow those instructions if you are not interested in working on IPFS development.
117
119 -> [!CAUTION]
120 -> On systems with less memory, it may not be completely stable, and you run on your own risk.
118 +For production use, Release Docker images (below) are recommended.
119
122 -## Install
120 +### Minimal System Requirements
121
124 -The canonical download instructions for IPFS are over at: https://docs.ipfs.tech/install/. It is **highly recommended** you follow those instructions if you are not interested in working on IPFS development.
122 +Kubo runs on most Linux, macOS, and Windows systems. For optimal performance, we recommend at least 6 GB of RAM and 2 CPU cores (more is ideal, as Kubo is highly parallel).
123 +
124 +> [!IMPORTANT]
125 +> Larger pinsets require additional memory, with an estimated ~1 GiB of RAM per 20 million items for reproviding to the Amino DHT.
126 +
127 +> [!CAUTION]
128 +> Systems with less than the recommended memory may experience instability, frequent OOM errors or restarts, and missing data announcement (reprovider window), which can make data fully or partially inaccessible to other peers. Running Kubo on underprovisioned hardware is at your own risk.
129
130 ### Docker
131
@@ -170,12 +174,6 @@ If you are unable to access [dist.ipfs.tech](https://dist.ipfs.tech#kubo), you c
174
175 #### Updating
176
173 -##### Using ipfs-update
174 -
175 -IPFS has an updating tool that can be accessed through `ipfs update`. The tool is
176 -not installed alongside IPFS in order to keep that logic independent of the main
177 -codebase. To install `ipfs-update` tool, [download it here](https://dist.ipfs.tech/#ipfs-update).
178 -
177 ##### Downloading builds using IPFS
178
179 List the available versions of Kubo (go-ipfs) implementation:
docs/config.md
+6 -1
@@ -1597,7 +1597,12 @@ Tells reprovider what should be announced. Valid strategies are:
1597 providers for the missing block in the middle of a file, unless the peer
1598 happens to already be connected to a provider and ask for child CID over
1599 bitswap.
1600 -- `"flat"` - same as `all`, announce all CIDs of stored blocks, but without prioritizing anything
1600 +- `"flat"` - same as `all`, announce all CIDs of stored blocks, but without prioritizing anything.
1601 +
1602 +> [!IMPORTANT]
1603 +> Reproviding larger pinsets using the `all`, `pinned`, or `roots` strategies requires additional memory, with an estimated ~1 GiB of RAM per 20 million items for reproviding to the Amino DHT.
1604 +> This is due to the use of a buffered provider, which avoids holding a lock on the entire pinset during the reprovide cycle.
1605 +> The `flat` strategy can be used to lower memory requirements, but only recommended if memory utilization is too high, prioritization of pins is not necessary, and it is acceptable to announce every block cached in the local repository.
1606
1607 Default: `"all"`
1608