IPFS 本地节点搭建(命令行)

Koalas1105 于 2022-11-20 发布

前言

本文在CentOS Linux release 8.3.2011系统上搭建了一个 IPFS 节点(命令行版本),并对文件上传、下载、网络同步、pin、GC、IPNS等进行了实际操作,以加深对 IPFS 工作原理的理解。

代码实践

代码实践

安装

wget https://dist.ipfs.tech/kubo/v0.16.0/kubo_v0.16.0_linux-amd64.tar.gz
tar -xvzf kubo_v0.16.0_linux-amd64.tar.gz
cd kubo
sudo bash install.sh
ipfs --version

启动

# 启动节点
ipfs init

# 上传文件
ipfs add index.html
added QmR5966HgE69xRrxg4qUTB7uXmbiuC28jL3jq3rUVSi6VL index.html

# 上传文件并且只输出哈希值
ipfs add -q index.html
added QmR5966HgE69xRrxg4qUTB7uXmbiuC28jL3jq3rUVSi6VL index.html

# 上传目录
ipfs add -r [Dir]

# 查看文件
ipfs cat /ipfs/QmU2U6sgWsAK1tYRuNeswGAny5xmsMASukVXLrvronyfWs/index.html

# 查看自己上传的文件
ipfs cat QmU2U6sgWsAK1tYRuNeswGAny5xmsMASukVXLrvronyfWs

# 查看图片并输出到文件
ipfs cat QmU2U6sgWsAK1tYRuNeswGAny5xmsMASukVXLrvronyfWs > index.html01

# 下载文件
ipfs get QmU2U6sgWsAK1tYRuNeswGAny5xmsMASukVXLrvronyfWs -o iindex.html02

# 压缩并下载文件
ipfs get QmU2U6sgWsAK1tYRuNeswGAny5xmsMASukVXLrvronyfWs -Cao index.html03


开启/加入服务

# 查看当前节点信息 
ipfs id

# 查看IPFS配置信息
ipfs config show

# 开启节点服务器
ipfs daemon

如果IPFS不是运行在当前电脑, 那么配置需要做两处改动后才能访问webui

一处是Addresses.API 和 Addresses.Gateway

"Addresses": {
  ...
  "API": "/ip4/127.0.0.1/tcp/5001",
  "Gateway": "/ip4/127.0.0.1/tcp/8080"
}
将API的地址改为 /ip4/0.0.0.0/tcp/5001 这样会监听所有网口, 如果你的服务器有公网IP, 这样会有安全问题, 可以将这个IP设为内网网口地址.
将Gateway的地址改为内网地址或公网地址, 如果IPFS处于内网, 外网可以通过NAT访问, 这个可以配成内网地址.

另一处是 API.HTTPHeaders, 避免从当前电脑访问IPFS的webui时, 出现cross site 错误.

"API": {
    "HTTPHeaders": {}
},
在HTTPHeaders里增加两项, 可以参考 Gateway.HTTPHeaders

"Access-Control-Allow-Methods": [
  "GET","PUT","POST"
],
"Access-Control-Allow-Origin": [
  "*"
]
修改完配置, 重启IPFS后就可以访问 http://IP:5001/webui/ 可以图形化的查看当前节点状态, 存储的块数量和大小, 连接的节点明细, 以及查看当前的配置. 这个界面甚至提供了一些演示用的文件浏览.

API 服务,默认在 5001 端口,可以通过 http://服务ip:5001/webui 进行访问

测试图片

文件操作

# 列出文件
ipfs files ls

# 创建目录
ipfs files mkdir

# 删除文件
ipfs files rm

# 拷贝文件
ipfs files cp [File Hash] /[Dest Dir]

# 移动文件
ipfs files mv [File Hash] /[Dest Dir]

# 状态
ipfs files stat

# 读取
ipfs files read

参考资料

[IPFS 官网] https://docs.ipfs.tech/install/