IPFS:搭建IPFS网络,多服务器
1.准备机器
准备几台虚拟机,不分主从,我用的是centos7,我这里准备了两台服务器。
2.下载与安装
这里需要各个节点都进行安装
我这里使用的是0.4版本的最后一个小版本。官网一般进不去,推荐github。
下载地址:https://github.com/ipfs/go-ipfs/releases/download/v0.4.23/go-ipfs_v0.4.23_linux-arm64.tar.gz
更多版本:https://github.com/ipfs/go-ipfs/releases
# 解压 tar -zvxf go-ipfs_v0.4.23_linux-amd64.tar.gz #安装 cd go-ipfs ./install.sh #测试 ipfs help
3.初始化节点
3.1.初始化
各个节点都需要初始化
# 初始化
ipfs init
3.2.记录下节点的id
huawei:QmTWfC********************LMMK4xKwArLL
aliyun:QmcgkDiP********************cCEdZZeh8QKr
3.3.修改存储容量:
修改~/.ipfs/config中"StorageMax"字段即可(目前默认为10GB)
3.4.修改访问路径:
ipfs的api和gateway默认访问路径为127.0.0.1.如需要其他机器访问,需要修改~/.ipfs/config中api和gateway字段,将127.0.0.1替换为0.0.0.0
3.5.http corps问题
非本地访问会产生跨域问题,需要在设置中注明。
ipfs config --json API.HTTPHeaders.Access-Control-Allow-Origin '["*"]' ipfs config --json API.HTTPHeaders.Access-Control-Allow-Methods '["PUT", "GET", "POST"]' ipfs config --json API.HTTPHeaders.Access-Control-Allow-Credentials '["true"]'
注意: 开发环境设置中“*”意为允许所有域名访问,生产环境下应该将跨域设置为指定域名或关闭跨域
3.6查看节点ID
如果忘记了id,可以通过ipfs id命令查看
4.创建共享密钥
# 下载密钥工具 git clone https://github.com/Kubuxu/go-ipfs-swarm-key-gen.git # 编译go-ipfs-swarm-key-gen,当前目录会成一个ipfs-swarm-key-gen的可执行二进制文件 go build -o ipfs-swarm-key-gen go-ipfs-swarm-key-gen/ipfs-swarm-key-gen/main.go # 生成密钥 ./ipfs-swarm-key-gen > ~/.ipfs/swarm.key
# 分发密钥
scp ~/.ipfs/swarm.key root@*.*.*.*:~/.ipfs/
注意:*.*.*.* 为你的ip,这里密钥只生成一次,每个服务器使用同一个密钥
5.添加启动节点
5.1.启动
每个节点都需要执行,启动
# 删除默认启动节点(删除公网节点) ipfs bootstrap rm all # 各节点分别将其他节点添加到bootstrap列表 ipfs bootstrap add /ip4/被添加节点的ip地址/tcp/4001/ipfs/被添加节点的ID值 # 启动节点 nohup ipfs daemon >> ./log/ipfs.log 2>&1 &
5.2.测试
1.huawei添加文件
ipfs add a.txt
2.aliyun获取文件
ipfs get QmeomffUNfmQy76CQGy9NdmqEnnHU9soCexBnGU3ezPHVH
3.浏览器访问:ip:port/ipfs/Qmxxxxxxx,两台服务器均能访问
6.设置ipfs服务
cd /lib/systemd/system/ vim ipfs.service ### 插入以下内容 [Unit] Description=IPFS [Service] ExecStart=/usr/local/bin/ipfs daemon Restart=always User=root Group=root [Install] WantedBy=multi-user.target # 启动 service ipfs start
7.安装可视化管理页面WEBUI
# 下载源码 git clone https://github.com/ipfs-shipyard/webui # 安装 cd webui npm install # 运行 npm start
注意:在安装过程中可能遇到错误:make: g++ : Command not found,执行 yum -y install gcc+ gcc-c++ 即可
如果页面显示 Failed to connect to the API. 需要在页面下方的API ADDRESS处配置API地址:/ip4/*.*.*.*/tcp/5001 , *.*.*.*为你的ip
运行效果:
8.API
所有命令行支持的命令都有对应的Restful api实现,官方文档:
https://docs.ipfs.io/reference/api/http/
中文参考:
https://blog.csdn.net/weixin_43132569/article/details/82628570
9.SDK
GO语言:
https://github.com/ipfs/go-ipfs-api
Java:
https://github.com/ipfs-shipyard/java-ipfs-http-client
需要配置仓库地址
<repositories> <repository> <id>jitpack.io</id> <url>https://jitpack.io</url> </repository> </repositories> <dependencies> <dependency> <groupId>com.github.ipfs</groupId> <artifactId>java-ipfs-http-client</artifactId> <version>$LATEST_VERSION</version> </dependency> </dependencies>
参考:https://blog.csdn.net/u012140251/article/details/103436712