风险提示:理性看待区块链,提高风险意识!
简单的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币是什么东西?
推荐专栏
web3首席知识博主
一位相信价值投资的币圈KOL。稳定盈利的缠论野生交易员 #BTC行情分析师 #价值投资 #链上数据分析
爱Web 3,爱生活,爱科技,爱炒币的老韭菜
热门币种
更多
币种
价格
24H涨跌幅
BTC比特币
¥265,355.45
37,179.73 USDT
+0.28%
ETH以太坊
¥14,454.12
2,025.21 USDT
0%
USDT泰达币
¥7.20
1.01 USDT
-0.01%
BNB币安币
¥1,632.04
228.67 USDT
+1.39%
XRP瑞波币
¥4.32
0.60460 USDT
+0.32%
USDC
¥7.14
1.00 USDT
+0.03%
SOLSolana
¥400.19
56.07 USDT
+1.22%
OKBOK币
¥399.79
56.02 USDT
-0.38%
ADA艾达币
¥2.69
0.37630 USDT
-1.08%
DOGE狗狗币
¥0.55520
0.07780 USDT
-1.3%
热搜币种
更多
币种
价格
24H涨跌幅
Terra Classic
¥0.00
9.596E-5 USDT
-17.98%
Gala
¥0.18
0.025764 USDT
-6.2%
dYdX
¥22.73
3.2131 USDT
-0.69%
比特股
¥0.05
0.006581 USDT
+0.23%
PancakeSwap
¥15.71
2.221 USDT
-1.71%
Filecoin
¥31.66
4.4751 USDT
-0.49%
FTX Token
¥29.64
4.1896 USDT
+13.24%
Conflux
¥1.09
0.154 USDT
-2.28%
Yield Guild Games
¥2.57
0.363 USDT
-0.33%
Shiba Inu
¥0.00
8.18E-6 USDT
-2.04%
比特币
¥263,089.54
37191.32 USDT
+0.27%
比原链
¥0.07
0.009976 USDT
-4.95%
最新快讯
更多
CFTC向Coinbase用户发出传票要求提供交易活动的信息
2023-11-28 19:47:05
汇款公司Kalyssi旗下钱包已集成AlchemyPay法币出入金解决方案
2023-11-28 19:26:47
PlanB:比特币可能不会再低于3.5万美元
2023-11-28 19:23:01
摩根大通和Apollo计划推出代币化“企业主网”
2023-11-28 19:14:28
汇丰、恒生、渣打、富邦华一四家外资银行入围首批“数字人民币”业务试点名单
2023-11-28 19:06:57
OKX上线MATIC链上赚币产品
2023-11-28 19:06:21
摩根大通和Apollo计划建立代币化“企业主网”
2023-11-28 19:03:57
下载币界网APP