ipfs

InterPlanetary FileSystem operations

Download executable

https://github.com/ipfs/kubo/releases/

Create and start container

docker create --name ipfs -p 8080:8080 -p 5001:5001 ipfs/kubo:master-latest
docker start ipfs

Set API address

echo "/ip4/127.0.0.1/tcp/5001" > ~/.ipfs/api

Local WebUI

http://127.0.0.1:5001/webui/

Check CID publicly available

https://check.ipfs.network/

View CID on public IPFS gateway

https://dweb.link/ipfs/$CID

Find provider of a CID

ipfs routing findprovs bafybeibg6pes7z462uiletrcm74obq3t54iow4ogm6542v4j52th23bwg4

Output:

12D3KooWFdAaYfYehyNHok7bebpH3gq6DrCKDeHY9vBJSXJ5zQxL

Find addresses of a Peer

ipfs routing findpeer 12D3KooWFdAaYfYehyNHok7bebpH3gq6DrCKDeHY9vBJSXJ5zQxL

Output:

/dns4/91-120-146-1.k51qzi5uqu5dic06api37t38kay1fuvkcoqy9kkmxrppe4jbcfhil3g10zxuod.libp2p.direct/tcp/4001/tls/ws
/ip4/172.19.0.2/tcp/4001
/ip4/91.120.146.1/udp/4001/quic-v1/webtransport/certhash/uEiDx2Tpy0nXkSs-A57qClwWvZgA8fhPUkOwvKULFvGYplw/certhash/uEiD5dtfR_uxm6yTYU1w3GSW-fplCTxjcXjZb0ZG0b3yVZg
/ip4/172.19.0.2/udp/4001/quic-v1
/ip4/91.120.146.1/tcp/4001
/ip4/172.19.0.2/udp/4001/quic-v1/webtransport/certhash/uEiDx2Tpy0nXkSs-A57qClwWvZgA8fhPUkOwvKULFvGYplw/certhash/uEiD5dtfR_uxm6yTYU1w3GSW-fplCTxjcXjZb0ZG0b3yVZg
/ip4/91.120.146.1/udp/4001/quic-v1
/ip4/91.120.146.1/udp/4001/webrtc-direct/certhash/uEiATQmyhKUPAdSs1iTwpVznmNw5KEMTTi34kzhxMbzac8w
/ip4/91.120.146.1/udp/56218/webrtc-direct/certhash/uEiATQmyhKUPAdSs1iTwpVznmNw5KEMTTi34kzhxMbzac8w
/ip4/172.19.0.2/udp/4001/webrtc-direct/certhash/uEiATQmyhKUPAdSs1iTwpVznmNw5KEMTTi34kzhxMbzac8w

Ping a peer

ipfs ping -n 5 12D3KooWFdAaYfYehyNHok7bebpH3gq6DrCKDeHY9vBJSXJ5zQxL

Output:

PING 12D3KooWFdAaYfYehyNHok7bebpH3gq6DrCKDeHY9vBJSXJ5zQxL.
Pong received: time=0.89 ms
Pong received: time=0.43 ms
Pong received: time=0.54 ms
Pong received: time=0.61 ms
Pong received: time=0.41 ms
Average latency: 0.58ms

Mutable filesystem

List files on MFS with CID

ipfs files ls -l

Output:

Apollo/ QmSnuWmxptJZdLJpKRarxBMS2Ju2oANVrgbr2xWbie9b2D  0

Get CID of the root of the MFS

ipfs files stat /

Output:

QmVRdMF9vbqBBG1dafhLUessgQtT3u4vWWZKfV82VTffWW
Size: 0
CumulativeSize: 302898916792
ChildBlocks: 3
Type: directory
Mode: not set (not set)
Mtime: not set

Publish current MFS as IPNS

ipfs name publish $(ipfs files stat / | head -n 1)

Output:

Published to k51qzi5uqu5dic06api37t38kay1fuvkcoqy9kkmxrppe4jbcfhil3g10zxuod: /ipfs/QmPXRQHXjSfvXVS6V81GU658QX6AV5osE4BgCQAyP7KcRd

Add keys and publish IPFS

Create new key

ipfs key gen files

Output:

k51qzi5uqu5dhjwblkxq3srzrbggcjp1719hi7qdzcj42dlnyp4tpkw5esafx5

List keys

ipfs key list -l

Output:

k51qzi5uqu5dic06api37t38kay1fuvkcoqy9kkmxrppe4jbcfhil3g10zxuod self  
k51qzi5uqu5dhjwblkxq3srzrbggcjp1719hi7qdzcj42dlnyp4tpkw5esafx5 files 

Publis MFS on custom key

ipfs name publish --key=files --lifetime=10m --ttl=10m $(ipfs files stat / | head -n 1)

Output:

Published to k51qzi5uqu5dhjwblkxq3srzrbggcjp1719hi7qdzcj42dlnyp4tpkw5esafx5: /ipfs/Qmbcg1H8JgjUsFovDLNhCXqXECyf6HdaQ8VAfXcpguoAdz