搭建IPFS 私有网络
Contents
本例为建立包含三个节点的 IPFS 私有网络,节点分别为:
- Server a:
root@45.32.28.71 - Server b:
root@207.148.109.110 - 本机 mac
在节点上安装 Go
-
Linux 上安装
# 安装 Go 二进制文件 cd ~ wget https://dl.google.com/go/go1.11.2.linux-amd64.tar.gz tar -C /usr/local -xzf go1.11.2.linux-amd64.tar.gz //解压到得到的 go 目录,放 # 配置环境变量 cd /usr/local vim .bashrc添加如下内容:
export GOPATH=~/hejtao/go_projects
export GOROOT=/usr/local/go
export GOBIN=$GOROOT/bin
export PATH=$PATH:$GOBIN# 检查 Go 安装是否成功 source .bashrc go version -
Mac 上安装
- 同上
- 使用
brew安装
生成 IPFS 节点
-
在三台机器上执行
go get -u -d github.com/ipfs/go-ipfs cd $GOPATH/src/github.com/ipfs/go-ipfs make install如果出现
Command 'make' not found, but can be installed with ...sudo apt install make sudo apt install make-guile apt update apt upgrade apt install make make install如果出现
/usr/local/go/pkg/tool/linux_amd64/link: running gcc failed: exec: "gcc": ...apt install gcc gcc -v make install ipfs init -
记下每个节点的 ID,本例中
- Server a 的 ID:
QmQ9RjTGVDjhZ2kRVx9tjL4CciiKdNrQzknSyUnCMmB3m2 - Server b 的 ID:
QmRyxoe9JpkDZuMK4G7PkXUy7nGv8VdM98d6Vr2wxFSa3V - Mac 的 ID:
QmWKKVUy9XqWEGhrikJW8ugHuFzKJJGP5DCGFyvzUJFjzL
- Server a 的 ID:
创建共享密钥
-
先在任意一台机器上创建密钥。本例先在 mac 上创建
go get -u github.com/Kubuxu/go-ipfs-swarm-key-gen/ipfs-swarm-key-gen ipfs-swarm-key-gen > ~/.ipfs/swarm.key -
拷贝密钥到剩余节点
-
手动拷贝
# 打开swarm.key, 拷贝内容 vim ~/.ipfs/swarm.key -
使用
scp命令scp ~/.ipfs/swarm.key root@45.32.28.71:~/.ipfs/ scp ~/.ipfs/swarm.key root@207.148.109.110:~/.ipfs/
-
添加启动节点
-
删除默认启动节点
ipfs init后的默认启动节点是连接 IPFS 公网的节点,建立私有网络需要在每一个节点上删掉默认启动节点。ipfs bootstrap rm --all -
将网络中任意其他节点作为启动节点
例如将 server a 作为 mac 的启动节点
ipfs bootstrap add/ip4/45.32.28.71/tcp/4001/ipfs/QmQ9RjTGVDjhZ2kRVx9tjL4CciiKdNrQzknSyUnCMmB3m2
启动私有网络
给三个节点添加了启动节点后,便建立起了含有三个节点的 IPFS 私有网络。
-
启动网络
ipfs daemon -
查看节点
- 查看节点所包含的启动节点
ipfs bootstrap list - 查看节点连接了哪些其他节点
ipfs swarm peers
- 查看节点所包含的启动节点
-
上传文件
给 mac 节点上传 pdf 文件,在 mac 上执行
ipfs add ~/files/Go语言编程.pdf返回的文件 ID 为
QmRDqZoSMCLMP2GH66MKKnduqgTqKBfqNeysPugp9xadUi -
下载文件
在 server a或b 上执行
ipfs get QmRDqZoSMCLMP2GH66MKKnduqgTqKBfqNeysPugp9xadUi