侧边栏壁纸
博主头像
Excalibur博主等级

真实自有万钧之力。

  • 累计撰写 26 篇文章
  • 累计创建 14 个标签
  • 累计收到 2 条评论

在本地VMware的Ubuntu,腾讯云CVM以及阿里云的ECS中搭建IPFS私有网络

Excalibur
2020-09-02 / 0 评论 / 0 点赞 / 38 阅读 / 2,113 字
温馨提示:
本文最后更新于 2022-04-07,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

0️⃣ 前言

  • 连接腾讯云CVM,以及阿里云ECS可以用FinalShell或者Xshell,用Xshell的教程在这里保姆级教程——Xshell连接虚拟机中的Ubuntu并通过Xftp传输文件,连接本地Ubuntu和云端服务器步骤是一样的,只是ip输入的是公网ip。

  • 在连接完毕后就可以进行后面的操作。

  • 查看三个节点机器的IP地址:

    1. VMware中Ubuntu18.04的IP,即运行

      	ifconfig
      

      得到

      在这里插入图片描述

      这里的192.168.3.105便是。

    2. 腾讯云CVM

      在这里插入图片描述

      需要用到的就是这里的公网ip:129.211.103.82

    3. 阿里云ECS

      在这里插入图片描述

      需要用到的就是这里的公网ip:47.96.189.80

1️⃣ 安装IPFS

具体请看这篇文章:一文完全解决——Ubuntu20.04下源码构建安装IPFS环境
在最后运行:

ipfs init

注意一下输出信息:
在这里插入图片描述
也就是这里生成的.ipfs文件在什么位置,不记得可以再运行一遍ipfs init即可,这个位置后面要用到。

2️⃣ 生成共享Key

  • 因为我们要组建的是私有网络,所有节点需要使用相同的私有key来加入网络中,我们使用go-ipfs-swarm-key-gen工具来生成共享key。我准备把本地的VMware的Ubuntu作为主运行节点,所以在这台Ubuntu上运行如下命令:
#编译工具
go get github.com/Kubuxu/go-ipfs-swarm-key-gen/ipfs-swarm-key-gen
cd $GOPATH
cd src/github.com/Kubuxu/go-ipfs-swarm-key-gen/ipfs-swarm-key-gen/
go build
# 生成key
./ipfs-swarm-key-gen > /home/excalibur/.ipfs/swarm.key

然后分别运行:

  • 对腾讯云服务器:
# 将本地生成的key拷贝到腾讯云服务器上的相同目录下
scp /home/excalibur/.ipfs/swarm.key 192.168.3.105:/home/ubuntu/.ipfs/
  • 对阿里云服务器:
# 将本地生成的key拷贝到阿里云服务器上的相同目录下
scp /home/excalibur/.ipfs/swarm.key 47.96.189.80:/root/.ipfs/
  • 这里有三点需要注意:
    1. /home/excalibur/.ipfs/swarm.key这里面的/home/excalibur/.ipfs/是我的ipfs配置文件夹,你应该根据自己的位置修改,也就是之前提到的那个目录。
    2. 47.96.189.80:/root/.ipfs/,这里面前面的ip地址要根据你服务器的修改,并且后面的/root/.ipfs/也要根据你服务器上的ipfs文件夹修改,可以运行ipfs init进行查看。
    3. 如果遇到密码输入正确,然而出现Permissioned denied的情况,就输入su进入管理员模式,重新运行上面两个scp命令。

3️⃣ 移除默认的boostrap节点

  • 因为要运行在私有网络上,不进入公网,必须删除其他启动节点信息。在三个节点上分别运行如下命令:
ipfs bootstrap rm --all

4️⃣ 添加启动boostrap节点信息

  • 这里以本地Ubuntu为启动节点,首先在本地节点运行如下命令:
ipfs id

得到:

在这里插入图片描述

我们需要这里的hash值:QmTADgGT4MaCd3aTpD4vweGLQdWhr8oH8sue43DDioWBXA,然后再加上之前的本地节点的ip地址:192.168.3.105,就得到了所有需要的bootstrap信息,然后分别在两台云服务器上运行如下命令:

ipfs bootstrap add /ip4/192.168.3.105/tcp/4001/ipfs/QmTADgGT4MaCd3aTpD4vweGLQdWhr8oH8sue43DDioWBXA

即可将本地节点作为它们的启动节点,自动加入ipfs网络。

5️⃣ 查看启动状态

  • 分别在三个节点上运行:
ipfs daemon
  • 然后在任意节点上运行:
ipfs swarm peers

将看到其他网络内节点的运行信息,我这里是在本地Ubuntu上运行的命令,可以看到腾讯云服务器的节点信息,但是阿里云不在😅。
原因在于ECS的安全组设置:打开阿里云服务器设置,首先网络与安全组,然后安全组配置,然后配置规则手动添加三个端口,分别是4001,5001,以及8080,最后ip地址可以是本地Ubuntu地址,或者直接设置成0.0.0.0/0
在这里插入图片描述

在这里插入图片描述

  • 也可以运行:
ipfs stats bitswap

可以看到
在这里插入图片描述
这里的partners字段为1,说明当前网络有2个节点。

6️⃣ 上传下载测试

  • 在本地节点上传一个文件:
echo helloworld > hello.txt
ipfs add hello.txt 

得到:

在这里插入图片描述

  • 可以在云服务器节点查看下载这个文件:
ipfs cat QmUU2HcUBVSXkfWPUc3WUSeCMrWWeEJTuAgR9uyWBhh9Nf
ipfs get QmUU2HcUBVSXkfWPUc3WUSeCMrWWeEJTuAgR9uyWBhh9Nf

在这里插入图片描述

可见,就很纳爱斯!😁😁😁

0

评论区