Installing and Running an IPFS Node

VP of People, Opreto

5 minute read

IPFS, the InterPlanetary File System, might evoke grand images of cosmic networking, but its true significance lies in ignoring topological boundaries altogether and making them irrelevant. While the name might come off as grandiose, it emphasizes IPFS’s capability to create a global, decentralized network where data can be stored, accessed, and shared completely independently of considerations about physical location. The underlying technology becomes secondary, as content-addressable storage takes center stage in ensuring the sanctity and robustness of the system. Content addressing is a core concept in IPFS that plays a crucial role in its functioning: instead of relying on traditional hierarchical file paths and domain-based naming, IPFS identifies files based on their cryptographic hash. Every file in the IPFS network is assigned a unique hash derived from its content. This hash is used as the file’s address, making it immutable and resistant to tampering.

In the digital age, content-addressability has emerged as a powerful and unifying concept driving innovation across various technological domains. From distributed file sharing to version control and beyond, three revolutionary technologies, namely IPFS, BitTorrent, and Git, have harnessed the potential of content-addressable storage to reshape the way we interact with data. At the core of all three of these systems lies the fundamental idea of uniquely identifying content through cryptographic hashes, ensuring data integrity, efficient distribution, and decentralized operation. We will leave a comparison to Git and Bittorrent to another day, and today we will delve into the technical side of things, providing a step-by-step guide on how to install IPFS on your own server at home, empowering you to participate in the interconnected and resilient web of content. Read my last post for an explanation about why I think IPFS is a fantastic project worth dedicating your resources and time to participating in, then read on as we unlock the potential of content-addressable systems and their transformative impact on modern data management.

Installing IPFS

There are multiple options for installing IPFS on various platforms, but the easiest for non-Linux platforms is to install IPFS Desktop. This desktop application contains all the necessary service components and lets you interact with the network through a simple user-interface.

To install IPFS on Ubuntu Linux using Docker Compose, follow these steps:

  1. Install Docker: If you haven’t already installed Docker on your Ubuntu machine, you can follow the official Docker installation guide for Ubuntu:

  2. Install Docker Compose: Next, install Docker Compose on your Ubuntu machine. You can do this by executing the following commands:

sudo curl -L "$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
  1. Create a Docker Compose File (docker-compose.yml): In your desired directory, create a file named docker-compose.yml with the following content:
version: '3'

    image: ipfs/go-ipfs
      - "4001:4001"  # IPFS Swarm Port
      - "5001:5001"  # IPFS API Port
      - "8080:8080"  # IPFS Gateway Port
      - ipfs_data:/data/ipfs
    command: ["daemon", "--migrate=true"]

  1. Start IPFS with Docker Compose: Open a terminal, navigate to the directory containing the docker-compose.yml file, and execute the following command to start the IPFS node:
docker-compose up -d

The -d flag runs the containers in the background (detached mode).

  1. Verify the IPFS Node: To check if the IPFS node is running, use the following command:
docker ps

You should see the ipfs_node container listed among the running containers.

  1. Access the IPFS Web Interface: Open your web browser and go to http://localhost:5001/webui. This will take you to the IPFS web interface, where you can interact with the IPFS node, add files, and manage content.

That’s it! You have successfully installed and started IPFS on Ubuntu Linux using Docker Compose. The IPFS node is now running, and you can begin using it for decentralized and distributed file-sharing. Additionally, with Docker Compose, you can easily manage and scale your IPFS deployment, making it a convenient choice for running IPFS on your system.

Pinning Content in IPFS

The pinning feature in IPFS is a powerful way to ensure that specific content remains available on the IPFS network, even if there are no active users requesting it. When you pin content in IPFS, you essentially tell the network to keep that data safe and available, regardless of whether other users are currently accessing it or not. This is particularly useful for important files, websites, or any data you want to preserve over time. When you pin something, you are creating a reference to the content, making it part of your local node’s storage. This way, even if the original content provider goes offline or removes the data, your pinned content remains accessible to others. The pinning system allows IPFS to distribute and maintain popular data efficiently, promoting data redundancy and resilience in the decentralized network.

Monitoring your IPFS node

The IPFS dashboard provides valuable metrics to monitor and analyze the usage of the IPFS network. It offers insights into various aspects of the network’s performance, helping users and administrators make informed decisions. Some of the key metrics available on the dashboard include data transfer rates, storage usage, network latency, and the number of active nodes. These metrics are essential in understanding the overall health and efficiency of the IPFS network.

The dashboard gathers these metrics by collecting data from different nodes and peers within the IPFS network. Each node continuously measures its performance and shares this information with other connected nodes. This decentralized data collection process ensures that the metrics are aggregated from various parts of the network, providing a comprehensive view of IPFS usage. Once collected, the data is processed and displayed in an easy-to-understand format on the dashboard.

Through the insights gained from the dashboard, users can identify potential bottlenecks, gauge the network’s capacity, and optimize their IPFS setups accordingly. Additionally, network administrators can spot unusual trends or fluctuations in usage, helping them address potential issues promptly.

My experience with IPFS

My experience has been smooth thus far. I dedicated a 10GB ZFS filesystem to the network, with the storage capacity enforced by the ZFS quota feature. I pinned several files that are important to me, but they have not been highly utilized. Content is cached locally when I fetch it through my own node, up to the storage quota of the ZFS filesystem behind it. The system’s bandwidth usage is correspondingly quite low, and YMMV depending on the popularity of content you host.

If you have any questions, or want to share your experiences with the network, or want me to pin your content, leave a comment below.