Introduction
Kubo (formerly go-ipfs) is the reference implementation of the IPFS protocol, maintained by Protocol Labs. IPFS replaces location-based addressing (URLs) with content-based addressing (CIDs), so files are identified by their cryptographic hash rather than where they are stored. Kubo acts as both a node in the IPFS peer-to-peer network and a local gateway for accessing content.
What IPFS Kubo Does
- Stores and retrieves files using content identifiers (CIDs) derived from cryptographic hashes
- Connects to a global peer-to-peer network for decentralized file distribution
- Provides an HTTP Gateway so browsers can access IPFS content via standard HTTP
- Supports pinning to keep specific content available on your node permanently
- Includes a full API server for programmatic interaction with the IPFS node
Architecture Overview
Kubo implements the libp2p networking stack for peer discovery and data transfer. Content is split into blocks organized as a Merkle DAG (directed acyclic graph). The DHT (distributed hash table) based on Kademlia maps CIDs to the peers that store them. When content is requested, Kubo uses Bitswap to negotiate block exchanges with peers. A local datastore (Flatfs or Badger) persists blocks on disk.
Self-Hosting & Configuration
- Initialize a node with
ipfs initwhich creates a local repository in~/.ipfs - Configure the API, Gateway, and Swarm listen addresses in
~/.ipfs/config - Run
ipfs daemonto start the node and join the IPFS network - Use
ipfs pin add <CID>to ensure content remains available on your node - Deploy behind Nginx with the gateway port (default 8080) for public IPFS gateway hosting
Key Features
- Content addressing ensures data integrity verification on every retrieval
- Deduplication at the block level saves storage when multiple files share content
- Built-in HTTP gateway serves IPFS content to standard web browsers
- MFS (Mutable File System) provides a familiar files-and-folders abstraction over IPFS
- Pubsub messaging enables real-time communication between IPFS nodes
Comparison with Similar Tools
- IPFS Helia — JavaScript implementation for browsers and Node.js; Kubo is the full Go node for servers
- Filecoin — incentivized storage network built on IPFS; Kubo is the underlying content layer without token economics
- BitTorrent — file sharing via torrents; IPFS uses content-addressed DAGs with built-in deduplication
- Arweave — permanent storage with one-time payment; IPFS requires active pinning to keep data available
- Sia — decentralized storage marketplace; Kubo focuses on content routing rather than paid storage contracts
FAQ
Q: Is content on IPFS permanent? A: No. Content is only available while at least one node pins or caches it. Unpinned data may be garbage collected.
Q: How do I make content publicly accessible? A: Run Kubo with the gateway enabled and share the CID. Public gateways like ipfs.io also serve content.
Q: Can IPFS handle mutable content like websites? A: Yes, using IPNS (InterPlanetary Name System) which maps a persistent key to changing CIDs.
Q: What is the difference between Kubo and go-ipfs? A: They are the same project. It was renamed from go-ipfs to Kubo in 2022 to distinguish the implementation from the protocol.