风险提示:理性看待区块链,提高风险意识!
简单的IPFS私有网络搭建教程
首页 > 币界资讯 > 区块链知识 2020-10-12 14:55:11
币界网报道:

本文是一个简单的IPFS私有网络搭建教程,根据本文你可以搭建起一个简单的IPFS网络demo,可以在不同的节点获取同样的文件。

其实我没必要写这个教程的,GitHub上的示例写得清清楚楚,但是在Google搜索相关资料的时候中文页面全部都是挖矿(恰饭)相关,而实际应用的文章寥寥无几╮(╯_╰)╭ 。

环境:共计两个节点,分别为主节点子节点

系统均为Ubuntu server 16.04。

安装

下载IPFS程序:

wget https://1.i-book.in/ipfs/QmcB55KNpU1E8uvqFtFa9QTFWPTHnfSmC1N7Hg6c5qYYX9 -O go-ipfs_v0.4.22_linux-amd64.tar.gzCopy

解压缩:

tar xvfz go-ipfs_v0.4.22_linux-amd64.tar.gzCopy

安装:

cd go-ipfs/
sudo ./install.shCopy

需要指定IPFS的存储位置,如果不需要就跳过,直接初始化。

export IPFS_PATH="绝对路径"Copy

初始化:

ipfs initCopy

如果输出以下代码就是初始化成功了:

generating 2048-bit RSA keypair...done
peer identity: QmTvSJEh3xarHMUj6uamQwnnvbYXH4vjttAehKjBvixxJHto get started, enter:

        ipfs cat /ipfs/QmS4ustL54uo8FzR9455qaxZwuMiUhyvMcX9Ba8nUH4uVv/readmeCopy

该步骤需要在所有节点上重复操作。

生成共享key

安装golang-go:

sudo apt-get install golang-goCopy

编译工具:

go get github.com/Kubuxu/go-ipfs-swarm-key-gencd $GOPATHcd go/src/github.com/Kubuxu/go-ipfs-swarm-key-gen/ipfs-swarm-key-gen/go buildCopy

生成key:

./ipfs-swarm-key-gen > ~/.ipfs/swarm.keyCopy

该步骤仅在主节点操作。

将生成的swarm.key文件传输到所有需要加入私有网络的子节点 ~/.ipfs/文件夹内。

配置IPFS

移除默认的IPFS节点:

ipfs bootstrap rm allCopy

查看节点ID:

ipfs idCopy

系统会输出以下内容,记住ID部分:

{        "ID": "QmTvTNFh3xarHMUj6uamQwnnvbZYE1vjttAeCjgBvixxJH",        "PublicKey": "CAASpgIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDEPn7J/DSijRAT/QD8rTVjF8nCgEnv0jTQYWeDbC9dEVmTM8WUoh2vK0s3qSvpfxNAHkvgcp5kJwVbm0kZEwcbUVzcrXKfdTgEcSJ0CDptaWQEH40wIUOkhwyhIZAMeZL0Q0S9k8Rt0iVk3ILpapcW9hKu1/7Ms5lntdpVmrxOhM1LZZ7lUjXkORyN+qu/uNMi0/KeH2I37cwv9PWbxYuak7o1mlI+sIChD32uO8DlL3zX1VoWHmftMCuysOCGhosrO64pMAGY9jUqf85X9cFaetg1yukV8yslSsRY/8phqNNAlhCf2TdbDRAZbHp8jQjrU3THwOALN+6kU04WuhfNAgMBAAE=",        "Addresses": null,        "AgentVersion": "go-ipfs/0.4.22/",        "ProtocolVersion": "ipfs/0.1.0"}Copy

主节点服务器上添加子节点

ipfs bootstrap add /ip4/Your-Node-IP/tcp/4001/ipfs/QmTvTNFh3xarHMUj6uamQwnnvbZYE1vjttAeCjgBvixxJHCopy

子节点服务器上添加主节点

ipfs bootstrap add /ip4/Your-Node-IP/tcp/4001/ipfs/QmYNYDp5PEi64dgTYRdci3XhtmQEnZVBQTATinWw6fq3AcCopy

测试IFPS网络

所有的节点都添加完毕后使用命令ipfs daemon启动IPFS,显示如下输出说明启动成功,配置文件没有问题:

Initializing daemon...go-ipfs version: 0.4.22-Repo version: 7System version: amd64/linuxGolang version: go1.12.7Swarm is limited to private network of peers with the swarm keySwarm key fingerprint: 6ac2fea09ce0c68a2630b1f51f614dfbSwarm listening on /ip4/Your-Node-IP/tcp/4001Swarm listening on /ip4/127.0.0.1/tcp/4001Swarm listening on /ip4/172.17.0.1/tcp/4001Swarm listening on /p2p-circuitSwarm announcing /ip4/Your-Node-IP/tcp/4001Swarm announcing /ip4/127.0.0.1/tcp/4001Swarm announcing /ip4/172.17.0.1/tcp/4001API server listening on /ip4/127.0.0.1/tcp/5001WebUI: http://127.0.0.1:5001/webuiGateway (readonly) server listening on /ip4/127.0.0.1/tcp/8080Daemon is readyCopy

网络已经启动了,现在测试网络的连通性,使用ipfs stats bitswap命令查看IPFS现在连接了多少节点:

bitswap status        provides buffer: 0 / 256        blocks received: 0        blocks sent: 1        data received: 0        data sent: 23        dup blocks received: 0        dup data received: 0        wantlist [0 keys]        partners [1]Copy

其中partners就是连接到的节点数量,因为我们现在只有两个节点,所以partners1

测试文本传输

在主节点新建一个文本文件:

echo "hello saltyleo" >> test.txtCopy

将其添加到ipfs网络:

ipfs add test.txtCopy

输出以下字符就说明文件已经上传上去了:

added QmPxEMHme51cx6DNDeqisT78xp1zdVHfH4utPUyfZWNAwk test.txt15 B / 15 B [=========================================================]100.00%Copy

查看文件:

ipfs cat QmPxEMHme51cx6DNDeqisT78xp1zdVHfH4utPUyfZWNAwkCopy

在子节点重复上面的操作,输出都是hello saltyleo说明私有网络已经联通。

后记

网关部分我就不写了,反正GitHub上都有示例,只要iptables、nginx、域名都设置好就行了。IPFS的访问速度问题,我猜测是GFW对这类P2P流量进行了清洗,导致国内节点可用性并不高,所以文件传输速度慢。这个是天朝上国的特色,没有任何办法能解决。(肉身翻墙走起)

ipfs add的时候,文件小于1KB的简直是光速传播,大于1KB就会比较慢,这是因为小于1KB的会直接在DHT网络内广播,广播到达的时候文本就已经到达了,大于1KB的需要先接收广播>找节点>找文件>传输,所以会比较慢。

关于这个协议还是有不少不足的,比如节点复制,没有一个简单的命令,而是需要繁琐配置才可以实现。还有当成为公网节点的时候流量会使用的非常快,平均一天十几个GB,还好我的节点是按宽带计费的,要不然流量费可烧不起。还有这个文件播种的速度实在是太过于感人,太慢了!!!

上一篇: 如何创建并部署一个区块链项目?
下一篇: IPFS币是什么东西?
推荐专栏
Boss Wallet Web3 Econom Pass
专注币圈最新资讯
通俗浅显地聊透Web3大事小情
读懂区块链生态与未来,尽在币界网!
热门币种
更多
币种
美元价格
24H涨跌幅
BTC比特币
60,963.61 USDT
¥435,103.38
-2.72%
ETH以太坊
3,368.69 USDT
¥24,042.67
-0.3%
BNB币安币
570.68 USDT
¥4,073.00
-0.28%
USDT泰达币
1.02 USDT
¥7.25
-0.19%
SOL
135.96 USDT
¥970.36
+7.66%
USDC
1.00 USDT
¥7.15
-0.01%
TON
7.59 USDT
¥54.14
+4.55%
XRP瑞波币
0.47720 USDT
¥3.41
+0.48%
DOGE狗狗币
0.12210 USDT
¥0.87140
+2.43%
ADA艾达币
0.39050 USDT
¥2.79
+3.88%
热搜币种
更多
币种
美元价格
24H涨跌幅
比特币
61025.05 USDT
¥443,340.89
-1.5%
Solana
137.42 USDT
¥998.34
-0.75%
Filecoin
4.3458 USDT
¥31.57
-2.12%
Curve
0.2957 USDT
¥2.15
-6.81%
柚子
0.5733 USDT
¥4.16
-0.16%
Terra Classic
8.17E-5 USDT
¥0.00
-1.38%
Shiba Inu
1.721E-5 USDT
¥0.00
-3.8%
Conflux
0.1558 USDT
¥1.13
-1.52%
狗狗币
0.1222 USDT
¥0.89
-3.86%
dYdX
1.3769 USDT
¥10.00
-1.17%
Arweave
25.922 USDT
¥188.32
-9.75%
以太坊
3383 USDT
¥24,577.16
-0.39%
最新快讯
更多
币界网午报|6月27日午间重要动态一览
2024-06-27 12:00:26
已有超89%的BLAST空投被领取,领取地址超25万
2024-06-27 11:54:22
新SwellrswETH池已上线Penpie
2024-06-27 11:34:46
Custodia要求上诉法院指示地区法院撤销对Custodia主账户的拒绝
2024-06-27 11:26:52
Custodia寻求法官撤回授权美联储拒绝其主账户申请的决定
2024-06-27 11:26:52
XT即将上线新一期鲨鱼鳍理财
2024-06-27 11:26:33
WEEX唯客将于7月1日开启第二期Launchpool,投入WXT瓜分37,000ZK
2024-06-27 11:25:57
下载币界网APP