0️⃣ 前言
-
连接腾讯云CVM,以及阿里云ECS可以用FinalShell或者Xshell,用Xshell的教程在这里保姆级教程——Xshell连接虚拟机中的Ubuntu并通过Xftp传输文件,连接本地Ubuntu和云端服务器步骤是一样的,只是ip输入的是公网ip。
-
在连接完毕后就可以进行后面的操作。
-
查看三个节点机器的IP地址:
-
VMware中Ubuntu18.04的IP,即运行
ifconfig
得到
这里的
192.168.3.105
便是。 -
腾讯云CVM
需要用到的就是这里的公网ip:
129.211.103.82
。 -
阿里云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/
- 这里有三点需要注意:
/home/excalibur/.ipfs/swarm.key
这里面的/home/excalibur/.ipfs/
是我的ipfs
配置文件夹,你应该根据自己的位置修改,也就是之前提到的那个目录。47.96.189.80:/root/.ipfs/
,这里面前面的ip
地址要根据你服务器的修改,并且后面的/root/.ipfs/
也要根据你服务器上的ipfs
文件夹修改,可以运行ipfs init
进行查看。- 如果遇到密码输入正确,然而出现
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
可见,就很纳爱斯!😁😁😁
评论区