How To: Install IPFS (& IPFS-Cluster) on Raspberry Pi

Hey ya’ll, I made a tutorial for installing IPFS/IPFS Cluster on a Raspberry Pi 3B+. Here’s the link.

This was an offshoot of some work I’m doing on a personal notes app that utilizes IPFS. I realized pretty quickly I needed Cluster to orchestrate updates across my parent node (the RPI) & the child nodes (laptops / other devices I “login” from), so threw it into the article as well.

Hopefully this is helpful for anyone else looking to explore the IPFS / RPI space!

3 Likes

Hey @lyttlerock your link seems to be broken, do you have a copy posted elsewhere?

This seems to be a copy of the original… unsure of authorized copy or not…

Here is a more recent tutorial:

Linux install guide for an IPFS node on a Raspberry, Banana, or Atomic Pi with Ubuntu to pin CIDs

This tutorial is streamlined from a great tutorial here: How to install IPFS node on Raspberry Pi 4 running Ubuntu - Friends of Little Yus

1. Prerequisites

  • Raspberry, Banana, or Atomic Pi with at least 1GB RAM

  • 32GB storage capacity for OS and CID content

  • internet connection preferably via LAN

2. Install Ubuntu Server version (LTS)

3. Download IPFS

  • visit the IPFS distribution page Releases · ipfs/kubo · GitHub

  • depending on your your Pi-model, download the latest 64-bit linux-arm64 or 32-bit linux-arm version

  • as of this writing, latest version is 0.18.1. which will exemplarily be used on Raspberry Pi:

Raspberry Pi 3/4 (64-bit):

wget https://dist.ipfs.io/go-ipfs/v0.18.1/go-ipfs_v0.18.1_linux-arm64.tar.gz

Raspberry Pi 2 (32-bit):

wget https://dist.ipfs.io/go-ipfs/v0.18.1/go-ipfs_v0.18.1_linux-arm.tar.gz

4. Extract

Raspberry Pi 3/4 (64-bit): tar -xvzf go-ipfs_v0.18.1_linux-arm64.tar.gz

Raspberry Pi 2 (32-bit): tar -xvzf go-ipfs_v0.18.1_linux-arm.tar.gz

5. Run install script and confirm installed version

cd go-ipfs

sudo bash install.sh

ipfs --version

6. Low-power profile initialization

since we are happy with a resource-constrained system we
initialize IPFS with the low-power profile:

ipfs init —profile=lowpower

7. Create a service for the IPFS daemon

The following link was used as reference for creating this service file: systemd support · Issue #1430 · ipfs/kubo · GitHub

Create service file:

sudo nano /etc/systemd/system/ipfs.service

Edit, Copy, and Save the following to the ipfs.service file (Replace Raspberry with your username):

[Unit]

Description=IPFS Daemon

After=network.target

[Service]

User=Raspberry

Environment=IPFS_PATH=/home/Raspberry/.ipfs

ExecStart=/usr/local/bin/ipfs daemon --init --migrate

StandardOutput=journal

Restart=on-failure

KillSignal=SIGINT

[Install]

WantedBy=multi-user.target

8. Start IPFS

sudo systemctl daemon-reload

sudo systemctl start ipfs

9. Enable auto-start on reboot

sudo systemctl enable ipfs

10. Reboot Pi

sudo reboot now

11. Pinning CIDs

pin CIDs to keep sensitive content censorship resistent, e.g., the GridSAT NDP - just copy/paste the following commands:

CID for NFT with NDP source code:

ipfs pin add QmNZ6pKjn5s68MazQycJwazymio9rGx3i6qZqCDsgfzgBP

CID for NDP .git:

ipfs pin add QmYjdbvH4fvrJosbn9Nu85QUZB9MQC9P6CwozcMJELepSj

CID for gridsat.eth/:

ipfs pin add QmWxzTDuZzDGD24tv2cukJhUo5H8CF9bUqA8bxZR7Y77UK

Note: CIDs may constantly change - please update regularly - CID updates for the exemplary NDP are posted here, on Twitter, LinkedIn, and gridsat.eth/

The following steps are not mandatory and can be skipped for a resilient IPFS node to pin content - however, they help the IPFS network to perform at its best:

12. Configure Ports

IPFS uses the following default ports:

  • 4001 – default libp2p swarm port – must be open to sync to all other public nodes.

  • 5001 – API port and webui– provides write/admin access to the node – should be locked down or configured to only be accessible by your local IP.

  • 8080 – Gateway

13. Configure firewall

assumed that UFW already runs, open up the following local ports:

  • 4001 must be open to sync to all other public nodes.

  • 5001 API port and webui. Keep closed if you do not use

  • 8080 – Gateway. Keep closed if you do not use

Open up ports:

sudo ufw allow 4001

sudo ufw allow 5001

sudo ufw allow 8080

14. Port forwarding

most internet routers support the Universal Plug-and-Play (UPnP) and/or IPv6 - enable, e.g., for Fritz!Box How do I activate UPnP for my Fritz!Box? | Paessler Knowledge Base - if there is no native UPnP and/or IPv6 support, IPFS only needs the libp2p swarm port (4001) to be open: Configure NAT and port forwarding | IPFS Docs

1 Like

What i see to install IPFS and IPFS-Cluster on Raspberry Pi:

  1. Install necessary tools like Go and Git.
  2. Download IPFS using the terminal.
  3. Install IPFS using the terminal.
  4. Initialize IPFS using the terminal.
  5. Start IPFS using the terminal.
  6. Download IPFS-Cluster using the terminal.
  7. Start IPFS-Cluster using the terminal.