利用 Docker 搭建 IPFS 私有网络
2024-08-29 20:13:02
利用 Docker 搭建 IPFS 私有网络
下载项目
环境
两台 Linux 设备,分别配置他们的ip地址为 192.168.1.244 和 192.168.1.246
步骤
- 修改挂载目录
- 通过 docker 创建 IPFS 容器
- 确保配置 IPFS API 以允许跨源(CORS)请求
- 生成并分发一个共享 key
- 移除默认的 boostrap 节点
- 添加节点创建网络
- 重启服务
- 查看邻居
修改挂载目录
该步骤可跳过,默认挂载目录为 项目目录下的
data
和staging
文件夹
version: "3"
services:
ipfs_host:
container_name: ipfs_host
image: docker.io/ipfs/go-ipfs:latest
restart: always
volumes:
- ./staging:/export # (可不修改)修改 挂载目录 ./staging
- ./data:/data/ipfs # (可不修改)修改 挂载目录 ./data
ports:
- 4001:4001
- 0.0.0.0:8080:8080
- 0.0.0.0:5001:5001
通过 docker 创建 IPFS 容器
192.168.1.244 和 192.168.1.246 节点 创建 IPFS 容器
运行 make 命令
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)请求
运行以下命令:
docker exec ipfs_host ipfs config --json API.HTTPHeaders.Access-Control-Allow-Origin '["*"]'
docker exec ipfs_host ipfs config --json API.HTTPHeaders.Access-Control-Allow-Methods '["PUT", "GET", "POST"]'
生成并分发一个共享 key
192.168.1.244 和 192.168.1.246 节点 配置跨源(CORS)请求
注:每个节点的 key 文件
内容保持一致
- 生成key
go get -u github.com/Kubuxu/go-ipfs-swarm-key-gen/ipfs-swarm-key-gen
./ipfs-swarm-key-gen > swarm.key
- 分发 key 到每个节点
目标路径: 挂载目录的 data
文件夹内
cp swarm.key data/
移除默认的 boostrap 节点
192.168.1.244 和 192.168.1.246 节点 配置跨源(CORS)请求
docker exec ipfs_host ipfs bootstrap rm --all
添加节点创建网络
- 获取 192.168.1.244 节点 信息
docker exec ipfs_host ipfs id
{
"ID": "QmNtnCQiqMezQiwPfRwf7KE8BoM8mBmUYYm3XsXNfh8DL7",
"PublicKey": "CAASpgIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDGwu8A5Xw4okQmkpufHLIjIO5ZhQGnCGzqD/OgcGE5MNfPe6pSurRQTI9AgQWtODJOGWqj7GBe1PgZXHIVkIhVjPIQftpcJJ/D6STJIzH9gGApc7SA8iIh2i9TaTontnvLuDswRj2hce2vWXQhh3DZ8ttv9rrPYfMcuM0tWs7klMQgt3C67prxgTd0esXm5DevtgJeHazimJcjNMBsAc9niKBgV0KFwxZPGouBBFibzF9jTWOC0qk52c33a4LcvKohLWnJbJGJ8mQj1oI9Srmo2SV37UbAVECxRvCDa0HhJkUUzkzpyCFUncZ03Mz0D6VTTCEoFKMBcahHM7ZuCKezAgMBAAE=",
"Addresses": [
"/ip4/127.0.0.1/tcp/4001/ipfs/QmNtnCQiqMezQiwPfRwf7KE8BoM8mBmUYYm3XsXNfh8DL7",
"/ip4/172.19.0.2/tcp/4001/ipfs/QmNtnCQiqMezQiwPfRwf7KE8BoM8mBmUYYm3XsXNfh8DL7",
"/ip6/::1/tcp/4001/ipfs/QmNtnCQiqMezQiwPfRwf7KE8BoM8mBmUYYm3XsXNfh8DL7"
],
"AgentVersion": "go-ipfs/0.4.19/52776a7",
"ProtocolVersion": "ipfs/0.1.0"
}
- 192.168.1.246 节点添加 192.168.1.244
docker exec ipfs_host ipfs bootstrap add /ip4/192.168.1.244/tcp/4001/ipfs/QmNtnCQiqMezQiwPfRwf7KE8BoM8mBmUYYm3XsXNfh8DL7
重启服务
192.168.1.244 和 192.168.1.246 节点 服务重启
docker restart ipfs_host
查看邻居
192.168.1.244 查看邻居
docker exec ipfs_host ipfs swarm peers
/ip4/192.168.1.246/tcp/4001/ipfs/QmVUF31gtrV9H3V1ndDCEGfKLahBNi8E9PT4AHj6m2zpjj
192.168.1.246 查看邻居
docker exec ipfs_host ipfs swarm peers
/ip4/192.168.1.244/tcp/4001/ipfs/QmNtnCQiqMezQiwPfRwf7KE8BoM8mBmUYYm3XsXNfh8DL7
测试
- 在 192.168.1.244 节点 添加文件
docker exec ipfs_host ipfs add /data/ipfs/version
2 B / 2 B 100.00%added QmaHbbushv2gYBUyofdm853cy1HTcNuinqagCfMjMdGmNw version
- 在 192.168.1.246 节点 用哈希值读取该文件
docker exec ipfs_host ipfs cat QmaHbbushv2gYBUyofdm853cy1HTcNuinqagCfMjMdGmNw
7
搭建的私有网络可以正常使用。
附录
查看运行日志
docker logs -f ipfs_host
停止容器
docker stop ipfs_host
删除容器
docker rm ipfs_host
重启容器
docker restart ipfs_host
运行 IPFS 命令
docker exec ipfs_host <ipfs cmd>
最新文章
- wpf 悬浮窗口的实现
- uwp 图片切换动画 使用帧动画
- java mybatis 中sql 模糊查询
- iOS开发常识
- 使用微软Remote Desktop 手机远程控制 windows
- ascii codec can&#39;t decode byte 0xe8 in position 0:ordinal not in range(128) python代码报错
- 【前端】HTML中最适合做按钮的元素
- Ambari与Kerberos 集成
- iOS12系统应用发送邮件中的附件
- 基于TensorFlow的深度学习系列教程 1——Hello World!
- python 执行sql得到字典格式数据
- js异步刷新局部页面
- SpringBoot(十五)-- 修改SpringBoot默认的错误页面
- DevExpress换肤
- Azure Messaging-ServiceBus Messaging消息队列技术系列2-编程SDK入门
- P1(2)线性回归
- Oracle 解决【ORA-01704:字符串文字太长】
- 用Docker下搭建GitLab
- PHP 使用PHPExcel删除Excel单元格指定列
- Hadoop HBase概念学习系列之模式设计(十)
热门文章
- 【luoguP1168】中位数
- 【BigData】Java基础_构造方法的使用
- WGS 全基因组测序数据分析
- 《BLACK HAT PYTHON3》
- An Open-Source Package for Knowledge Embedding- 知识嵌入为人机交互做支撑
- cad.net 在位编辑的原理猜测及找到在位编辑状态的图元
- Union 与 Union All 区别(抄的W3C School的,抄一遍就记住了!)
- 【webrtc】webrtc的rtp重传代码分析
- Java学习:线程池
- C# - Array.Sort()方法