首页 手机兼职平台区块链正文

手把手教你建立 IPFS 私有网络

admin 区块链 2020-11-24 10:30:56 7615 0

IPFS

IPFSgo-ipfs

我的环境

因为资源约束,我这儿运用 docker 来建立一个两个节点的 IPFS 私有网络。假如有条件能够直接在多台机器或许多个虚拟机上装置。

开端建立

1、生成 swarm.key

swarm.key 是一个同享密钥,只要具有相同密钥的节点才干相互通讯,组成一个私钥网络。swarm.key 能够运用 东西 生成,东西的装置指令是:

    go get -u github.com/Kubuxu/go-ipfs-swarm-key-gen/ipfs-swarm-key-gen  

装置完结后,生成 swarm.key,指令是:

    ipfs-swarm-key-gen > /Users/sixdays/tmp/ipfs/swarm.key  

其间

  • /Users/sixdays/tmp/ipfs/ 目录是我 ipfs 目录。
  • /Users/sixdays/tmp/ipfs/node1 是我 ipfs 节点 1 目录。
  • /Users/sixdays/tmp/ipfs/node2 是我 ipfs 节点 2 目录。

2、发动节点

运转节点 1 和节点 2

 // 运转节点 1
docker run -d --name ipfs_node_1 -e IPFS_SWARM_KEY_FILE=/Users/sixdays/tmp/ipfs/swarm.key -v /Users/sixdays/tmp/ipfs/node1/staging:/export -v /Users/sixdays/tmp/ipfs/node1/data:/data/ipfs -p 4001:4001 -p 4001:4001/udp -p 127.0.0.1:8080:8080 -p 127.0.0.1:5001:5001 ipfs/go-ipfs:latest

// 运转节点 2
docker run -d --name ipfs_node_2  -e IPFS_SWARM_KEY_FILE=/Users/sixdays/tmp/ipfs/swarm.key -v /Users/sixdays/tmp/ipfs/node2/staging:/export -v /Users/sixdays/tmp/ipfs/node2/data:/data/ipfs -p 4002:4001 -p 4002:4001/udp -p 127.0.0.1:8081:8080 -p 127.0.0.1:5002:5001 ipfs/go-ipfs:latest

铲除一切缺省发动节点 bootstrap

    docker exec ipfs_node_1 ipfs bootstrap rm all  
    docker exec ipfs_node_2 ipfs bootstrap rm all  

检查节点 id

    docker exec ipfs_node_1 ipfs id  
    docker exec ipfs_node_2 ipfs id  

这儿,我节点 1 的 Id 是 :
12D3KooWEVo8FqH8YUT1noXvca5hgSRWBRcDQomEcFY2zXwA7dbw
节点 1 的 address 是:
/ip4/172.17.0.3/tcp/4001/p2p/12D3KooWEVo8FqH8YUT1noXvca5hgSRWBRcDQomEcFY2zXwA7dbw

节点 2 的 Id 是
12D3KooWRcx6gpbsbvb6YiNsDpJgnmNHFCgCiUmVF42o4zn2W5Pj
节点 2 的 address 是
/ip4/172.17.0.4/tcp/4001/p2p/12D3KooWRcx6gpbsbvb6YiNsDpJgnmNHFCgCiUmVF42o4zn2W5Pj

节点的 address 我用的是 docker 给分配的 ip 地址。

增加节点 id

在节点 1 中增加节点 2 地址

docker exec ipfs_node_1 ipfs bootstrap add  /ip4/172.17.0.4/tcp/4001/p2p/12D3KooWRcx6gpbsbvb6YiNsDpJgnmNHFCgCiUmVF42o4zn2W5Pj

在节点 2 中增加节点 1 地址

docker exec ipfs_node_1 ipfs bootstrap add  /ip4/172.17.0.3/tcp/4001/p2p/12D3KooWEVo8FqH8YUT1noXvca5hgSRWBRcDQomEcFY2zXwA7dbw

至此,咱们 2 个节点的 IPFS 私有网络已建立完结。

用一下

运用指令

    docker exec ipfs_node_1 ipfs -h  

能够看到 IPFS 的根底指令。

增加文件 add

    $ docker exec ipfs_node_1 ipfs add /data/ipfs/swarm.key                                                                                                                    
    added QmRitSEMhFJtNhLYtwGRJvhDrTTT4gQLjuLepZjo9C8a2X swarm.key  

其间 :

  • /data/ipfs/swarm.key 为 ipfs_node_1 容器的目录。

  • QmRitSEMhFJtNhLYtwGRJvhDrTTT4gQLjuLepZjo9C8a2X 为文件 hash

检查文件 cat

    $ docker exec ipfs_node_2 ipfs cat QmRitSEMhFJtNhLYtwGRJvhDrTTT4gQLjuLepZjo9C8a2X   
    /key/swarm/psk/1.0.0/  
    /base16/  
    5b9941085678c502b44cc98e2614dd648cb801115dcb6acee8e83d9bf8cf454c  

能够看到咱们能够在 node2 中检查到 node1 上传的文件内容。

下载文件 get

    $ docker exec ipfs_node_2 ipfs get QmRitSEMhFJtNhLYtwGRJvhDrTTT4gQLjuLepZjo9C8a2X -o /data/ipfs/test.key  
    Saving file(s) to /data/ipfs/test.key  
     95 B / 95 B  100.00% 0s  

其间 -o 表明输出目录,docker 容器中的 /data/ipfs 对应咱们主机目录为 /Users/sixdays/tmp/ipfs/node2/data

检查文件列表 ls

    $ docker exec ipfs_node_2 ipfs pin ls  
    QmQ5vhrL7uv6tuoN9KeVBwd4PwfQkXdVVmDLUZuTNxqgvm indirect  
    QmU5k7ter3RdjZXu3sHghsga1UQtrztnQxmTL22nPnsu3g indirect  
    QmYCvbfNbCwFR45HiNP45rwJgvatpiW38D961L5qAhUM5Y indirect  
    QmejvEPop4D7YUadeGqYWmZxHhLc4JBUCzJJHWMzdcMe2y indirect  
    QmPZ9gcCEpqKTo6aq61g2nXGUhM4iCL3ewB6LDXZCtioEB indirect  
    QmQGiYLVAdSHJQKYFRTJZMG4BXBHqKperaZtyKGmCRLmsF indirect  
    QmQPeNsJPyVWPFDVHb77w8G42Fvo15z4bG2X8D2GhfbSXc recursive  
    QmQy6xmJhrcC5QLboAcGFcAE1tC8CrwDVkrHdEYJkLscrQ indirect  
    QmUNLLsPACCz1vLxQVkXqqLX5R1X345qqfHbsf67hvA3Nn recursive  

recursiveindirect

mp.weixin.qq.com

版权声明

本文仅代表作者观点,不代表网赚之家本站立场。
本文系作者授权发表,未经许可,不得转载。

评论