The InterPlanetary File System is a protocol and peer-to-peer network for storing and sharing data in a distributed file system. IPFS uses content-addressing to uniquely identify each file in a global namespace connecting all computing devices. The DSPs utilize this as the storage layer to request and serve information to and from vRAM <> RAM as a caching solution.



Hardware Requirements


  • golang
  • systemd


sudo apt-get update
sudo apt-get install golang-go -y

Centos/Fedora/AWS Linux v2

sudo yum install golang -y


sudo su -
wget https://dist.ipfs.io/go-ipfs/v$VERS/$DIST
tar xvfz $DIST
rm *.gz
mv go-ipfs/ipfs /usr/local/bin/ipfs

Configure systemd

sudo su -
ipfs init
ipfs config Addresses.API /ip4/
ipfs config Addresses.Gateway /ip4/
cat <<EOF > /lib/systemd/system/ipfs.service
Description=IPFS daemon
ExecStart=/usr/local/bin/ipfs daemon

systemctl start ipfs
systemctl enable ipfs


Adding Peers

To connect with your peers you may open port 4001 to the selected IPs that you wish to communicate with or open the port to all addresses.

Bootstrap Peers | Documentation

Bootstrap peers default to IPFS nodes provided by the core development team. They are scattered across the world. These peers are what your IPFS node will initially monitor upon startup. You may add our mainnet and kylin testnet IPFS nodes with the following commands:

# kylin

ipfs bootstrap add /ip4/
ipfs bootstrap add /ip4/

Swarm Peers | Documentation

Swarm peers are addresses that the local daemon will listen on for connections from other IPFS peers. They are what your IPFS node will look to first when requesting a file that is not cached locally. Both your node as well as the node you are trying to connect to must run the following commands:

# kylin

ipfs swarm connect /ip4/
ipfs swarm connect /ip4/

Reconnecting Periodically | Medium Article

Peers have a tendency to disconnect from each other if not reconnected manually periodically, so to combat this, you may add the following two files to periodically reconnect to your swarm peers.

sudo su -
cat <<EOF > /lib/systemd/system/gateway-connector.service
Description=Job that periodically connects this IPFS node to the gateway node
ExecStart=/usr/local/bin/ipfs swarm connect <ADD_MULTIPLE_CONNECTIONS_HERE_SPACE_SEPARATED> # /ip4/ /ip4/
sudo su -
cat <<EOF > /lib/systemd/system/gateway-connector.timer
Description=Timer that periodically triggers gateway-connector.service

Now you can enable and start the service:

sudo systemctl enable gateway-connector.timer
sudo systemctl start gateway-connector.timer

To double checked this worked, run:

systemctl list-timers

You should see an entry for your gateway connector service. You can also check the status of its last execution attempt by running:

systemctl status gateway-connector

Finally you can monitor the process with:

journalctl -f | grep ipfs

Running a private network | Documentation

Running a private IPFS network is possible by removing all default IPFS bootstrap peers and only adding those of your private network.

ipfs bootstrap rm all - Remove all peers from the bootstrap list


IPFS-Cluster | Documentation

Bootsrapping from an existing IPFS Cluster | Documentation

IPFS is designed so that a node only stores files locally that are specifically requested. The following is one way of populating a new IPFS node with all existing files from a pre-existing node.

To do so, first create a secret from node0, the original node, then share that secret with node1, the node you want to bootstrap from node0. Then node1 runs the bootstrap command specifying the cluster’s address and setting the CLUSTER_SECRET as an env variable.


  • export CLUSTER_SECRET=$(od -vN 32 -An -tx1 /dev/urandom | tr -d ' \n')
  • ipfs-cluster-service init
  • ipfs-cluster-service daemon

node1 (bootstrapping from node0)

  • export CLUSTER_SECRET=<copy from node0>
  • ipfs-cluster-service init
  • ipfs-cluster-service daemon --bootstrap /ip4/ // replace with what you see from running node0’s daemon
  • ipfs-cluster-ctl peers ls check your peers to see you’ve added node0 correctly


  • if you want to remove a peer after the bootstrapping is complete, the following command will do that and shut down the IPFS cluster
  • ipfs-cluster-ctl peers rm QmYFYwnFUkjFhJcSJJGN72wwedZnpQQ4aNpAtPZt8g5fCd