Contents

搭建IPFS 私有网络

本例为建立包含三个节点的 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

创建共享密钥

  • 先在任意一台机器上创建密钥。本例先在 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