首页>>新闻资讯>>云计算

Windows搭建IPFS私有网络

2024-08-15 09:10:56 25

最近有一个在Windows环境下搭建IPFS私有网络的需求,虽然网上有很多教程经验贴,但对于新手来说,要么不是特别详细,要么是基于Linux环境下搭建。因此,本文参考相关教程,并在Windows下进行摸索,最终完整地记录了在Windows环境下如何利用Docker搭建IPFS私有网络。

搭建环境

Windows 10 教育版 20H2Docker 20.10.0

生成私有密钥

搭建IPFS私有网络,首先需要使所有节点共享一个密钥swarm.key。

密钥生成工具下载地址:

https://github.com/Kubuxu/go-ipfs-swarm-key-gen​github.com/Kubuxu/go-ipfs-swarm-key-gen

1)解压

2)编译

go build执行成功后,将会生成main.exe

3)生成swarm.key

执行成功后,得到swarm.key

swarm.key的内容如下

/key/swarm/psk/1.0.0/ /base16/ 315f44eb464bea24c5bf8ad492a6f99f1b86d5c6b0f824ea5069bc89d8c0d46f

启动节点

1)寻找镜像

docker search ipfs

2)拉取镜像

docker pull ipfs/go-ipfs

目录设置

# ipfs挂载目录 E:\Projects\zhangxin-thesis\ipfs # node1目录 E:\Projects\zhangxin-thesis\ipfs\node1 # node2目录 E:\Projects\zhangxin-thesis\ipfs\node2

将前面生成的私有swarm.key放在ipfs的挂载目录下

3)启动节点

# 启动节点1 docker run -d --name ipfs_node_1 -e IPFS_SWARM_KEY_FILE=E:/Projects/zhangxin-thesis/ipfs/swarm.key -v E:/Projects/zhangxin-thesis/ipfs/node1/staging:/export -v E:/Projects/zhangxin-thesis/ipfs/node1/data:/data/ipfs -p 4011:4001 -p 4011:4001/udp -p 127.0.0.1:8001:8080 -p 127.0.0.1:5011:5001 ipfs/go-ipfs:latest # 启动节点2 docker run -d --name ipfs_node_2 -e IPFS_SWARM_KEY_FILE=E:/Projects/zhangxin-thesis/ipfs/swarm.key -v E:/Projects/zhangxin-thesis/ipfs/node2/staging:/export -v E:/Projects/zhangxin-thesis/ipfs/node2/data:/data/ipfs -p 4012:4001 -p 4012:4001/udp -p 127.0.0.1:8002:8080 -p 127.0.0.1:5012:5001 ipfs/go-ipfs:latest # 注: # 本文为同一台宿主机部署2个容器 # 因此在端口映射时 # 节点2不能与节点1映射到相同的宿主机端口

将swarm.key复制到node1目录下的data文件夹内,node2同理

4)删除引导节点

# 清除节点1的默认的bootstrap节点 docker exec ipfs_node_1 ipfs bootstrap rm all # 清除节点2的默认的bootstrap节点 docker exec ipfs_node_2 ipfs bootstrap rm all

5)查看节点IP

# 查看节点1的ip docker exec ipfs_node_1 ipfs id # 查看节点2的ip docker exec ipfs_node_2 ipfs id # 得到地址分别问 # 节点1: # /ip4/172.17.0.2/tcp/4001/p2p/12D3KooWB7rbtLGLT4UGdLEvSY3vyaRfsdASXEoZnJn3iaaeQz3q # 节点2: # /ip4/172.17.0.3/tcp/4001/p2p/12D3KooWHtQ5i2v8e6Tot2aQBTqT9M1z48t53WAiLLqqBDLDkzSw

6)添加节点

# 将节点2的地址添加至节点1 docker exec ipfs_node_1 ipfs bootstrap add /ip4/172.17.0.3/tcp/4001/p2p/12D3KooWGWm8rLw45SRfNwvH93eLaZunax3yrAcmmte7w6bE5fqY # 将节点1的地址添加至节点2 docker exec ipfs_node_2 ipfs bootstrap add /ip4/172.17.0.2/tcp/4001/p2p/12D3KooWB7rbtLGLT4UGdLEvSY3vyaRfsdASXEoZnJn3iaaeQz3q # 注: # 如果是3个(节点1、节点2、节点3),节点1需要添加节点2和节点3的ip,以此类推

7)允许跨域

# 节点1允许跨域 docker exec ipfs_node_1 ipfs config --json API.HTTPHeaders.Access-Control-Allow-Origin [\"*\"] docker exec ipfs_node_1 ipfs config --json API.HTTPHeaders.Access-Control-Allow-Methods [\"PUT\", \"GET\", \"POST\"] # 节点2允许跨域 docker exec ipfs_node_2 ipfs config --json API.HTTPHeaders.Access-Control-Allow-Origin [\"*\"] docker exec ipfs_node_2 ipfs config --json API.HTTPHeaders.Access-Control-Allow-Methods [\"PUT\", \"GET\", \"POST\"]

8)重启容器

# 重启节点1 docker restart ipfs_node_1 # 重启节点2 docker restart ipfs_node_2

测试

1)添加文件

# 向节点1上传文件 docker exec ipfs_node_1 ipfs add /data/ipfs/swarm.key # 注: # 容器内的路径:/data/ipfs/swarm.key # 对应 # 宿主机的绝对路径:E:/Projects/zhangxin-thesis/ipfs/node1/data/swarm.key

2)查看文件

# 节点2查看文件 docker exec ipfs_node_2 ipfs cat QmZGuZEmKBdcEsR7yiEevpS69nLKXYzmgjeoqiGrcT4RX3

3)下载文件

# 节点2下载文件 docker exec ipfs_node_2 ipfs get QmZGuZEmKBdcEsR7yiEevpS69nLKXYzmgjeoqiGrcT4RX3 -o /data/ipfs/test.key # 注: # -o表示输出目录,即保存至/data/ipfs/test.key # /data/ipfs/test.key # 对应 # 宿主机的绝对路径:E:/Projects/zhangxin-thesis/ipfs/node2/data/test.key

4)查看文件列表

# 查看节点1的文件列表 docker exec ipfs_node_1 ipfs pin ls # 注: # recursive表示文件夹,indirect表示文件

遇到的问题

1)ipfs内置的webui存在问题(两种情况均未解决)

能打开,但是看不到具体数据,页面提示①修改跨域设置;②提交修改后的端口
直接打不开

2)跨域问题(不知是否解决)

ipfs跨域问题403 - 一念430 - 博客园​www.cnblogs.com/yinian/p/9836853.html

3)ipfs的api调用,显示405错误(已解决)

解决方法:将get方法修改成post方法即可

参考链接

IPFS私有网络搭建总结 - GISer-Li - 博客园​www.cnblogs.com/HandyLi/archive/2004/01/13/11864639.html
基于 Docker 安装 IPFS​www.voidcn.com/article/p-rfttlbmx-bsa.html
利用 Docker 搭建 IPFS 私有网络​www.cnblogs.com/sitoi/p/11819533.html
登链社区:IPFS搭建私有网络与使用3 赞同 · 0 评论文章

相关标签:

发表评论:

评论记录:

未查询到任何数据!