- 虚拟机ipfs1:192.168.22.136
- 虚拟机ipfs2:192.168.22.137
- 本机:192.68.40.145
跟着以下命令一步一步执行,注意不要复制$符号
- 安装go环境及其配置环境变量
#下载go $ cd /home $ wget https://golang.google.cn/dl/go1.17.1.linux-amd64.tar.gz $ tar -zxvf go1.17.1.linux-amd64.tar.gz -C /usr/local #配置go环境变量 $ vim /etc/profile # golang env 文件末尾追加以下内容 export GOROOT=/usr/local/go export GOPATH=/data/gopath export PATH=$PATH:$GOROOT/bin:$GOPATH/bin $ source /etc/profile # 创建工作目录: $ mkdir -p /data/gopath && cd /data/gopath $ mkdir -p src pkg bin
- 安装ipfs、初始化
# 下载 $ cd /home $ wget https://download.fastgit.org/ipfs/go-ipfs/releases/download/v0.9.1/go-ipfs_v0.9.1_linux-amd64.tar.gz # 解压缩 $ tar xvfz go-ipfs_v0.9.1_linux-amd64.tar.gz # 安装 $ cd go-ipfs/ $ ./install.sh #指定IPFS存储位置 $ export IPFS_PATH="/root/.ipfs/" #初始化,默认会在/root/目录下生成一个隐藏目录`.ipfs`, #作为ipfs的local存储。可用`ls -a` 查看 $ ipfs init
- 生成共享的key(该key是实现节点间互通的一个凭证),并加到节点的 ~/.ipfs/文件夹内。
#下载key生成工具 $ git clone https://hub.fastgit.org/Kubuxu/go-ipfs-swarm-key-gen.git #编译 $ go build -o ipfs-swarm-key-gen go-ipfs-swarm-key-gen/ipfs-swarm-key-gen/main.go #生成swarm.key $ ./ipfs-swarm-key-gen > swarm.key #给136节点增加该key,同时,137节点、本地节点也需要增加。 $ cp swarm.key ~/.ipfs/ #给137节点也加上 $ scp root@192.168.22.137:~/.ipfs/swarm.key ~/.ipfs
- 添加网络节点(ipfs1节点需要添加ipfs2跟本地节点)
#移除所有默认节点 $ ipfs bootstrap rm all #查看节点id, $ ipfs id #在136上添加137 $ ipfs bootstrap add /ip4/192.168.22.137/4001/ipfs/上一步查询到的137节点ID #比如137节点的ID是qazxswedc,那执行ipfs bootstrap add /ip4/192.168.22.137/tcp/4001/ipfs/qazxswedc #在137上添加136 $ ipfs bootstrap add /ip4/192.168.22.136/4001/ipfs/上一步查询到的136节点ID
- 启动IPFS服务,测试网络连通性,查看IPFS连接了节点数。
#正常运行,关闭窗口停止 $ ipfs daemon #后台运行,关闭不停止 $ nohup ipfs daemon #查看节点数 $ ipfs stats bitswap #`partners`就是连接到的节点数量,因为我们现在只有两个节点,所以`partners`是`1`。三、本地节点安装IPFS
- 下载安装包:微新搜索公从号"IT学习小镇"回复"ipfs"获取安装包
- 安装初始化:
#1、在解压文件下,进入cmd命令行 #2、初始化,会告知.ipfs仓库位置。 ipfs init #3、从远程节点下拉取swarm.key复制到本地.ipfs仓库中。 #4、添加各自网络节点 #5、添加config配置 $ ipfs config --json API.HTTPHeaders.Access-Control-Allow-Origin '["*"]' $ ipfs config --json API.HTTPHeaders.Access-Control-Allow-Methods "["PUT", "GET", "POST"]" $ ipfs config --json API.HTTPHeaders.Access-Control-Allow-Credentials "["true"]" #6、启动服务 ipfs daemon
- 测试查看:检查远程节点和本地节点是否启动了ipfs服务(是否执行ipfs daemon),本地执行ipfs stats bitswap。如partners为2,则整体操作成功。
- 本地节点上传文件,远程获取该文件
#1、本地执行ipfs add a.txt #2、复制上传成功的hash值 #3、在远程执行ipfs cat hash值查看文件
- 远程节点上传文件,本地获取该文件
#1、远程创建文件并执行ipfs add 1.txt #2、复制hash值 #3、本地cat查看五、总结
要想做到节点间连通,前提条件。
(1)仓库拥有同一个swarm.key
(2)添加各自的网络节点
(3)IPFS服务处于启动状态



