master
md 226 lines 13 KB
Rendered Raw
1 <h1 align="center">
2 <br>
3 <a href="https://github.com/ipfs/kubo/blob/master/docs/logo/"><img src="https://user-images.githubusercontent.com/157609/250148884-d6d12db8-fdcf-4be3-8546-2550b69845d8.png" alt="Kubo logo" title="Kubo logo" width="200"></a>
4 <br>
5 Kubo: IPFS Implementation in Go
6 <br>
7 </h1>
8
9 <p align="center" style="font-size: 1.2rem;">The first implementation of IPFS.</p>
10
11 <p align="center">
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://docs.ipfs.tech/community/"><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/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 </p>
18
19 <hr />
20
21 <p align="center">
22 <b><a href="#what-is-kubo">What is Kubo?</a></b> | <b><a href="#quick-taste">Quick Taste</a></b> | <b><a href="#install">Install</a></b> | <b><a href="#documentation">Documentation</a></b> | <b><a href="#development">Development</a></b> | <b><a href="#getting-help">Getting Help</a></b>
23 </p>
24
25 ## What is Kubo?
26
27 Kubo was the first [IPFS](https://docs.ipfs.tech/concepts/what-is-ipfs/) implementation and is the [most widely used one today](https://probelab.io/ipfs/topology/#chart-agent-types-avg). It takes an opinionated approach to content-addressing ([CIDs](https://docs.ipfs.tech/concepts/glossary/#cid), [DAGs](https://docs.ipfs.tech/concepts/glossary/#dag)) that maximizes interoperability: [UnixFS](https://docs.ipfs.tech/concepts/glossary/#unixfs) for files and directories, [HTTP Gateways](https://docs.ipfs.tech/concepts/glossary/#gateway) for web browsers, [Bitswap](https://docs.ipfs.tech/concepts/glossary/#bitswap) and [HTTP](https://specs.ipfs.tech/http-gateways/trustless-gateway/) for verifiable data transfer.
28
29 **Features:**
30
31 - Runs an IPFS node as a network service (LAN [mDNS](https://github.com/libp2p/specs/blob/master/discovery/mdns.md) and WAN [Amino DHT](https://docs.ipfs.tech/concepts/glossary/#dht))
32 - [Command-line interface](https://docs.ipfs.tech/reference/kubo/cli/) (`ipfs --help`)
33 - [WebUI](https://github.com/ipfs/ipfs-webui/#readme) for node management
34 - [HTTP Gateway](https://specs.ipfs.tech/http-gateways/) for trusted and [trustless](https://docs.ipfs.tech/reference/http/gateway/#trustless-verifiable-retrieval) content retrieval
35 - [HTTP RPC API](https://docs.ipfs.tech/reference/kubo/rpc/) to control the daemon
36 - [HTTP Routing V1](https://specs.ipfs.tech/routing/http-routing-v1/) client and server for [delegated routing](./docs/delegated-routing.md)
37 - [FUSE mounts](./docs/fuse.md) for mounting `/ipfs`, `/ipns`, and `/mfs` as local filesystems (experimental)
38 - [Content blocking](./docs/content-blocking.md) for public node operators
39
40 **Other IPFS implementations:** [Helia](https://github.com/ipfs/helia) (JavaScript), [more...](https://docs.ipfs.tech/concepts/ipfs-implementations/)
41
42 ## Quick Taste
43
44 After [installing Kubo](#install), verify it works:
45
46 ```console
47 $ ipfs init
48 generating ED25519 keypair...done
49 peer identity: 12D3KooWGcSLQdLDBi2BvoP8WnpdHvhWPbxpGcqkf93rL2XMZK7R
50
51 $ ipfs daemon &
52 Daemon is ready
53
54 $ echo "hello IPFS" | ipfs add -q --cid-version 1
55 bafkreicouv3sksjuzxb3rbb6rziy6duakk2aikegsmtqtz5rsuppjorxsa
56
57 $ ipfs cat bafkreicouv3sksjuzxb3rbb6rziy6duakk2aikegsmtqtz5rsuppjorxsa
58 hello IPFS
59 ```
60
61 Verify this CID is provided by your node to the IPFS network: <https://check.ipfs.network/?cid=bafkreicouv3sksjuzxb3rbb6rziy6duakk2aikegsmtqtz5rsuppjorxsa>
62
63 See `ipfs add --help` for all import options. Ready for more? Follow the [command-line quick start](https://docs.ipfs.tech/how-to/command-line-quick-start/).
64
65 ## Install
66
67 Follow the [official installation guide](https://docs.ipfs.tech/install/command-line/), or choose: [prebuilt binary](#official-prebuilt-binaries) | [Docker](#docker) | [package manager](#package-managers) | [from source](#build-from-source).
68
69 Prefer a GUI? Try [IPFS Desktop](https://docs.ipfs.tech/install/ipfs-desktop/) and/or [IPFS Companion](https://docs.ipfs.tech/install/ipfs-companion/).
70
71 ### Minimal System Requirements
72
73 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).
74
75 > [!IMPORTANT]
76 > Larger pinsets require additional memory, with an estimated ~1 GiB of RAM per 20 million items for reproviding to the Amino DHT.
77
78 > [!CAUTION]
79 > 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.
80
81 ### Official Prebuilt Binaries
82
83 Download from https://dist.ipfs.tech#kubo or [GitHub Releases](https://github.com/ipfs/kubo/releases/latest).
84
85 ### Docker
86
87 Official images are published at https://hub.docker.com/r/ipfs/kubo/: [![Docker Image Version (latest semver)](https://img.shields.io/docker/v/ipfs/kubo?color=blue&label=kubo%20docker%20image&logo=docker&sort=semver&style=flat-square&cacheSeconds=3600)](https://hub.docker.com/r/ipfs/kubo/)
88
89 #### 🟢 Release Images
90
91 Use these for production deployments.
92
93 - `latest` and [`release`](https://hub.docker.com/r/ipfs/kubo/tags?name=release) always point at [the latest stable release](https://github.com/ipfs/kubo/releases/latest)
94 - [`vN.N.N`](https://hub.docker.com/r/ipfs/kubo/tags?name=v) points at a specific [release tag](https://github.com/ipfs/kubo/releases)
95
96 ```console
97 $ docker pull ipfs/kubo:latest
98 $ docker run --rm -it --net=host ipfs/kubo:latest
99 ```
100
101 To [customize your node](https://docs.ipfs.tech/install/run-ipfs-inside-docker/#customizing-your-node), pass config via `-e` or mount scripts in `/container-init.d`.
102
103 #### 🟠 Developer Preview Images
104
105 For internal testing, not intended for production.
106
107 - [`master-latest`](https://hub.docker.com/r/ipfs/kubo/tags?name=master-latest) points at `HEAD` of [`master`](https://github.com/ipfs/kubo/commits/master/)
108 - [`master-YYYY-DD-MM-GITSHA`](https://hub.docker.com/r/ipfs/kubo/tags?name=master-2) points at a specific commit
109
110 #### 🔴 Internal Staging Images
111
112 For testing arbitrary commits and experimental patches (force push to `staging` branch).
113
114 - [`staging-latest`](https://hub.docker.com/r/ipfs/kubo/tags?name=staging-latest) points at `HEAD` of [`staging`](https://github.com/ipfs/kubo/commits/staging/)
115 - [`staging-YYYY-DD-MM-GITSHA`](https://hub.docker.com/r/ipfs/kubo/tags?name=staging-2) points at a specific commit
116
117 ### Build from Source
118
119 ![GitHub go.mod Go version](https://img.shields.io/github/go-mod/go-version/ipfs/kubo?label=Requires%20Go&logo=go&style=flat-square&cacheSeconds=3600)
120
121 ```bash
122 git clone https://github.com/ipfs/kubo.git
123 cd kubo
124 make build # creates cmd/ipfs/ipfs
125 make install # installs to $GOPATH/bin/ipfs
126 ```
127
128 See the [Developer Guide](docs/developer-guide.md) for details, Windows instructions, and troubleshooting.
129
130 ### Package Managers
131
132 Kubo is available in community-maintained packages across many operating systems, Linux distributions, and package managers. See [Repology](https://repology.org/project/kubo/versions) for the full list: [![Packaging status](https://repology.org/badge/tiny-repos/kubo.svg)](https://repology.org/project/kubo/versions)
133
134 > [!WARNING]
135 > These packages are maintained by third-party volunteers. The IPFS Project and Kubo maintainers are not responsible for their contents or supply chain security. For increased security, [build from source](#build-from-source).
136
137 #### Linux
138
139 | Distribution | Install | Version |
140 |--------------|---------|---------|
141 | Ubuntu | [PPA](https://launchpad.net/~twdragon/+archive/ubuntu/ipfs): `sudo apt install ipfs-kubo` | [![PPA: twdragon](https://img.shields.io/badge/PPA-twdragon-E95420?logo=ubuntu)](https://launchpad.net/~twdragon/+archive/ubuntu/ipfs) |
142 | Arch | `pacman -S kubo` | [![Arch package](https://repology.org/badge/version-for-repo/arch/kubo.svg)](https://archlinux.org/packages/extra/x86_64/kubo/) |
143 | Fedora | [COPR](https://copr.fedorainfracloud.org/coprs/taw/ipfs/): `dnf install kubo` | [![COPR: taw](https://img.shields.io/badge/COPR-taw-51A2DA?logo=fedora)](https://copr.fedorainfracloud.org/coprs/taw/ipfs/) |
144 | Nix | `nix-env -i kubo` | [![nixpkgs unstable](https://repology.org/badge/version-for-repo/nix_unstable/kubo.svg)](https://search.nixos.org/packages?query=kubo) |
145 | Gentoo | `emerge -a net-p2p/kubo` | [![Gentoo package](https://repology.org/badge/version-for-repo/gentoo/kubo.svg)](https://packages.gentoo.org/packages/net-p2p/kubo) |
146 | openSUSE | `zypper install kubo` | [![openSUSE Tumbleweed](https://repology.org/badge/version-for-repo/opensuse_tumbleweed/kubo.svg)](https://software.opensuse.org/package/kubo) |
147 | Solus | `sudo eopkg install kubo` | [![Solus package](https://repology.org/badge/version-for-repo/solus/kubo.svg)](https://packages.getsol.us/shannon/k/kubo/) |
148 | Guix | `guix install kubo` | [![Guix package](https://repology.org/badge/version-for-repo/gnuguix/kubo.svg)](https://packages.guix.gnu.org/packages/kubo/) |
149 | _other_ | [See Repology for the full list](https://repology.org/project/kubo/versions) | |
150
151 ~~Snap~~ no longer supported ([#8688](https://github.com/ipfs/kubo/issues/8688))
152
153 #### macOS
154
155 | Manager | Install | Version |
156 |---------|---------|---------|
157 | Homebrew | `brew install ipfs` | [![Homebrew](https://repology.org/badge/version-for-repo/homebrew/kubo.svg)](https://formulae.brew.sh/formula/ipfs) |
158 | MacPorts | `sudo port install ipfs` | [![MacPorts](https://repology.org/badge/version-for-repo/macports/kubo.svg)](https://ports.macports.org/port/ipfs/) |
159 | Nix | `nix-env -i kubo` | [![nixpkgs unstable](https://repology.org/badge/version-for-repo/nix_unstable/kubo.svg)](https://search.nixos.org/packages?query=kubo) |
160 | _other_ | [See Repology for the full list](https://repology.org/project/kubo/versions) | |
161
162 #### Windows
163
164 | Manager | Install | Version |
165 |---------|---------|---------|
166 | Scoop | `scoop install kubo` | [![Scoop](https://repology.org/badge/version-for-repo/scoop/kubo.svg)](https://scoop.sh/#/apps?q=kubo) |
167 | _other_ | [See Repology for the full list](https://repology.org/project/kubo/versions) | |
168
169 ~~Chocolatey~~ no longer supported ([#9341](https://github.com/ipfs/kubo/issues/9341))
170
171 ## Documentation
172
173 | Topic | Description |
174 |-------|-------------|
175 | [Configuration](docs/config.md) | All config options reference |
176 | [Environment variables](docs/environment-variables.md) | Runtime settings via env vars |
177 | [Experimental features](docs/experimental-features.md) | Opt-in features in development |
178 | [HTTP Gateway](docs/gateway.md) | Path, subdomain, and trustless gateway setup |
179 | [HTTP RPC clients](docs/http-rpc-clients.md) | Client libraries for Go, JS |
180 | [Delegated routing](docs/delegated-routing.md) | Multi-router and HTTP routing |
181 | [Metrics & monitoring](docs/metrics.md) | Prometheus metrics |
182 | [FUSE mounts](docs/fuse.md) | Mount `/ipfs`, `/ipns`, `/mfs` as local filesystems |
183 | [Content blocking](docs/content-blocking.md) | Denylist for public nodes |
184 | [Customizing](docs/customizing.md) | Unsure if use Plugins, Boxo, or fork? |
185 | [Debug guide](docs/debug-guide.md) | CPU profiles, memory analysis, tracing |
186 | [Changelogs](docs/changelogs/) | Release notes for each version |
187 | [All documentation](https://github.com/ipfs/kubo/tree/master/docs) | Full list of docs |
188
189 ## Development
190
191 See the [Developer Guide](docs/developer-guide.md) for build instructions, testing, and contribution workflow. AI coding agents should follow [AGENTS.md](AGENTS.md).
192
193 ## Getting Help
194
195 - [IPFS Forum](https://discuss.ipfs.tech) - community support, questions, and discussion
196 - [Community](https://docs.ipfs.tech/community/) - chat, events, and working groups
197 - [GitHub Issues](https://github.com/ipfs/kubo/issues) - bug reports for Kubo specifically
198 - [IPFS Docs Issues](https://github.com/ipfs/ipfs-docs/issues) - documentation issues
199
200 ## Security Issues
201
202 See [`SECURITY.md`](SECURITY.md).
203
204 ## Contributing
205
206 [![](https://cdn.rawgit.com/jbenet/contribute-ipfs-gif/master/img/contribute.gif)](https://github.com/ipfs/community/blob/master/CONTRIBUTING.md)
207
208 We welcome contributions. See [CONTRIBUTING.md](CONTRIBUTING.md) and the [Developer Guide](docs/developer-guide.md).
209
210 This repository follows the IPFS [Code of Conduct](https://github.com/ipfs/community/blob/master/code-of-conduct.md).
211
212 ## Maintainer Info
213
214 <a href="https://ipshipyard.com/"><img align="right" src="https://github.com/user-attachments/assets/39ed3504-bb71-47f6-9bf8-cb9a1698f272" /></a>
215
216 > [!NOTE]
217 > Kubo is maintained by the [Shipyard](https://ipshipyard.com/) team.
218 >
219 > [Release Process](https://ipshipyard.notion.site/Kubo-Release-Process-6dba4f5755c9458ab5685eeb28173778)
220
221 ## License
222
223 Dual-licensed under Apache 2.0 and MIT:
224
225 - [LICENSE-APACHE](LICENSE-APACHE)
226 - [LICENSE-MIT](LICENSE-MIT)