前言
本文在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/