利用 Docker 搭建 IPFS 私有网络
利用 Docker 搭建 IPFS 私有网络
下载项目
环境
两台 Linux 设备,分别配置他们的 ip 地址为 192.168.1.244 和 192.168.1.246
步骤
- 修改挂载目录
- 通过 docker 创建 IPFS 容器
- 确保配置 IPFS API 以允许跨源(CORS)请求
- 生成并分发一个共享 key
- 移除默认的 boostrap 节点
- 添加节点创建网络
- 重启服务
- 查看邻居
修改挂载目录
该步骤可跳过,默认挂载目录为 项目目录下的
data
和staging
文件夹
1 | version: "3" |
通过 docker 创建 IPFS 容器
192.168.1.244 和 192.168.1.246 节点 创建 IPFS 容器
运行 make 命令
1 | make up |
登陆网页:http://192.168.1.244:5001/webui
登陆网页:http://192.168.1.246:5001/webui
创建容器到正常访问页面所要等待时间大约 3-5
分钟
确保配置 IPFS API 以允许跨源(CORS)请求
192.168.1.244 和 192.168.1.246 节点 配置跨源(CORS)请求
运行以下命令:
1 | docker exec ipfs_host ipfs config --json API.HTTPHeaders.Access-Control-Allow-Origin '["*"]' |
生成并分发一个共享 key
192.168.1.244 和 192.168.1.246 节点 配置跨源(CORS)请求
注:每个节点的 key 文件
内容保持一致
- 生成 key
1 | go get -u github.com/Kubuxu/go-ipfs-swarm-key-gen/ipfs-swarm-key-gen |
- 分发 key 到每个节点
目标路径: 挂载目录的 data
文件夹内
1 | cp swarm.key data/ |
移除默认的 boostrap 节点
192.168.1.244 和 192.168.1.246 节点 配置跨源(CORS)请求
1 | docker exec ipfs_host ipfs bootstrap rm --all |
添加节点创建网络
- 获取 192.168.1.244 节点 信息
1 | docker exec ipfs_host ipfs id |
1 | { |
- 192.168.1.246 节点添加 192.168.1.244
1 | docker exec ipfs_host ipfs bootstrap add /ip4/192.168.1.244/tcp/4001/ipfs/QmNtnCQiqMezQiwPfRwf7KE8BoM8mBmUYYm3XsXNfh8DL7 |
重启服务
192.168.1.244 和 192.168.1.246 节点 服务重启
1 | docker restart ipfs_host |
查看邻居
192.168.1.244 查看邻居
1 | docker exec ipfs_host ipfs swarm peers |
1 | /ip4/192.168.1.246/tcp/4001/ipfs/QmVUF31gtrV9H3V1ndDCEGfKLahBNi8E9PT4AHj6m2zpjj |
192.168.1.246 查看邻居
1 | docker exec ipfs_host ipfs swarm peers |
1 | /ip4/192.168.1.244/tcp/4001/ipfs/QmNtnCQiqMezQiwPfRwf7KE8BoM8mBmUYYm3XsXNfh8DL7 |
测试
- 在 192.168.1.244 节点 添加文件
1 | docker exec ipfs_host ipfs add /data/ipfs/version |
1 | 2 B / 2 B 100.00%added QmaHbbushv2gYBUyofdm853cy1HTcNuinqagCfMjMdGmNw version |
- 在 192.168.1.246 节点 用哈希值读取该文件
1 | docker exec ipfs_host ipfs cat QmaHbbushv2gYBUyofdm853cy1HTcNuinqagCfMjMdGmNw |
1 | 7 |
搭建的私有网络可以正常使用。
附录
查看运行日志
1 | docker logs -f ipfs_host |
停止容器
1 | docker stop ipfs_host |
删除容器
1 | docker rm ipfs_host |
重启容器
1 | docker restart ipfs_host |
运行 IPFS 命令
1 | docker exec ipfs_host <ipfs cmd> |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Sitoi!
评论