# Install IPFS Kubo
This guide describes the available installation processes for IPFS Kubo, a Go-based implementation of the InterPlanetary File System (IPFS) protocol. Kubo was the first implementation of IPFS, and is the most widely used implementation today. Kubo allows you to do everything that IPFS Desktop can do, but at a more granular level, since you can specify which commands to run. Kubo has the following features:
- An IPFS daemon server
- Extensive command line tooling
- An HTTP RPC API for controlling the node
- An HTTP Gateway for serving content to HTTP browsers
- Binaries for Windows, MacOS, Linux, FreeBSD and OpenBSD
Installing Kubo in the command line is handy for many use cases, such as building applications and services on top of an IPFS node, or setting up a node without a user interface (which is usually the case with remote servers or virtual machines).
To get started, familiarize yourself with the system requirements. Then, determine if you'd like to install Kubo using one of the 5 official binary distributions, or build Kubo from source. Once you've installed Kubo, determine which node to use in the command line. Finally, check out the next steps.
Building from source is only recommended if you are running Kubo on a system with severe resource constraints, or are contributing to the Kubo project.
# System requirements
Kubo runs on most Windows, MacOS, Linux, FreeBSD and OpenBSD systems that meet the following requirements:
- 6 GiB of memory.
- 2 CPU cores (kubo is highly parallel).
Note the following:
- The amount of disk space your IPFS installation uses depends on how much data you're sharing. A base installation uses around 12MB of disk space.
- You can enable automatic garbage collection via --enable-gc and adjust using default maximum disk storage (opens new window) for data retrieved from other peers.
# Kubo on resource-constrained systems
If you are running Kubo on a resource-constrained system (such as a Raspberry Pi), you should initialize your daemon with the
ipfs init --profile=lowpower
This reduces daemon overhead on the system but may degrade content discovery and data fetching performance.
# Install official binary distributions
This section describes how to download and install the Kubo binary from
dist.ipfs.tech on Windows, MacOS, Linux, FreeBSD and OpenBSD operating systems. The IPFS team publishes the latest, official prebuilt Kubo binaries on the dist.ipfs.tech website (opens new window). New IPFS Kubo binary releases are automatically shown on the Kubo page on
If you are unable to access dist.ipfs.tech (opens new window), you can also download Kubo (go-ipfs) from the project's GitHub releases (opens new window) page or
/ipns/dist.ipfs.tech at the dweb.link (opens new window) gateway.
Binaries are available for the following operating systems:
For installation instructions for your operating system, select the appropriate tab.
# Build Kubo from source
For the current instructions on how to manually download, compile and build Kubo from source, see the Build from Source (opens new window) section in the Kubo repository.
# Determining which node to use with the command line
The command line can detect and use any node that's running, unless it's configured to use an external binary file. Here's which node to use for the local daemon or a remote client:
# Local daemon
The local daemon process is automatically started in the CLI with the command
ipfs daemon. It creates an
$IPFS_PATH/api file with an RPC API address.
# Remote client
You can install the standalone IPFS CLI client independently and use it to talk to an IPFS Desktop node or a Brave node. Use the RPC API to talk to the
When an IPFS command executes without parameters, the CLI client checks whether the
$IPFS_PATH/api file exists and connects to the address listed there.
$IPFS_PATHis in the default location (for example,
~/.ipfson Linux), then it works automatically and the IPFS CLI client talks to the locally running
ipfsdaemon without any extra configuration.
$IPFS_PATHisn't in the default location, use the
--api <rpc-api-addr>command-line argument. Alternatively, you can set the environment variable to
IPFS_PATHwill point to a directory with the api file with the existing
# Most common examples
If you are an IPFS Desktop user, you can install CLI tools and an
.ipfs/api file is automatically picked up.
If you're not running IPFS Desktop, specify a custom port with
ipfs --api /ip4/127.0.0.1/tcp/<port> id in the CLI.
For example, Brave RPC API runs on port 45001, so the CLI can talk to the Brave daemon using
ipfs --api /ip4/127.0.0.1/tcp/45001 id. You can use
mkdir -p ~/.ipfs && echo "/ip4/<ip>/tcp/<rpc-port>" > ~/.ipfs/api to avoid passing
--api every time.
# Next steps
Now that you've installed IPFS Kubo, check out the IPFS Kubo Tutorial in Guides, which will guide you through taking a Kubo node online and interacting with the network.