Skip to content

Commit 96f3007

Browse files
lidel2color
andauthored
docs(readme): update min. requirements + cleanup (#10750)
* docs(readme): update min. requirements + cleanup Adding note about extra memory requirement due to ba22102 * docs(config): memory cost of buffered provider Co-authored-by: Daniel Norman <[email protected]>
1 parent 183dc7d commit 96f3007

File tree

2 files changed

+21
-18
lines changed

2 files changed

+21
-18
lines changed

README.md

+15-17
Original file line numberDiff line numberDiff line change
@@ -12,19 +12,19 @@
1212
<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>
1313
<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>
1414
<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>
1616
<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>
1817
</p>
1918

2019
<hr />
2120

2221
## What is Kubo?
2322

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.
2524

2625
Featureset
2726
- 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)
2828
- [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
2929
- [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
3030
- [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
6464
- [Next milestones](#next-milestones)
6565
- [Table of Contents](#table-of-contents)
6666
- [Security Issues](#security-issues)
67-
- [Minimal System Requirements](#minimal-system-requirements)
6867
- [Install](#install)
68+
- [Minimal System Requirements](#minimal-system-requirements)
6969
- [Docker](#docker)
7070
- [Official prebuilt binaries](#official-prebuilt-binaries)
7171
- [Updating](#updating)
72-
- [Using ipfs-update](#using-ipfs-update)
7372
- [Downloading builds using IPFS](#downloading-builds-using-ipfs)
7473
- [Unofficial Linux packages](#unofficial-linux-packages)
7574
- [ArchLinux](#arch-linux)
@@ -112,16 +111,21 @@ Before opening an issue, consider using one of the following locations to ensure
112111

113112
Please follow [`SECURITY.md`](SECURITY.md).
114113

115-
### Minimal System Requirements
114+
## Install
116115

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.
118117

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.
121119

122-
## Install
120+
### Minimal System Requirements
123121

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.
125129
126130
### Docker
127131

@@ -170,12 +174,6 @@ If you are unable to access [dist.ipfs.tech](https://dist.ipfs.tech#kubo), you c
170174

171175
#### Updating
172176

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-
179177
##### Downloading builds using IPFS
180178

181179
List the available versions of Kubo (go-ipfs) implementation:

docs/config.md

+6-1
Original file line numberDiff line numberDiff line change
@@ -1597,7 +1597,12 @@ Tells reprovider what should be announced. Valid strategies are:
15971597
providers for the missing block in the middle of a file, unless the peer
15981598
happens to already be connected to a provider and ask for child CID over
15991599
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.
16011606
16021607
Default: `"all"`
16031608

0 commit comments

Comments
 (0)