??? IT技術(shù)的學(xué)習(xí)一般講究理論與實(shí)踐相結(jié)合。很多人的學(xué)習(xí)IPFS的時候,都是先上github看下簡單介紹,然后順著簡單介紹深入看一下詳細(xì)介紹和其背后的論文??戳撕芏辔恼轮笥X得自己對它有了一個輪廓性的了解,下一步可能就想通過實(shí)際操作來驗(yàn)證、加深一下自己的理解。這時最好有一個可以為所欲為的環(huán)境,也就是搭建IPFS私有網(wǎng)絡(luò)。
步驟
1,準(zhǔn)備多臺服務(wù)器,這幾臺服務(wù)器之間網(wǎng)絡(luò)互通(我是搭建各種集群習(xí)慣了,潛意識的準(zhǔn)備了三臺,其實(shí)沒有raft選舉之類的)
2,安裝ipfs??梢灾苯訌膇pfs官網(wǎng)下載tar包,解壓后進(jìn)入go-ipfs文件夾,執(zhí)行install.sh即可。每個節(jié)點(diǎn)都要安裝。
3,在所有節(jié)點(diǎn)執(zhí)行ipfs init來初始化各個節(jié)點(diǎn),初始化之后會在自己的家目錄下多一個隱藏目錄: .ipfs。
4,生成私有網(wǎng)絡(luò)共享密鑰并分發(fā)
????? a,? go get github.com/Kubuxu/go-ipfs-swarm-key-gen/ipfs-swarm-key-gen
??????????? ipfs-swarm-key-gen > ~/.ipfs/swarm.key
????? b,? 將該密鑰拷貝到其他節(jié)點(diǎn)的相應(yīng)位置
?????????? scp ~/.ipfs/swarm.key <destnode>:~/.ipfs/swarm.key
5,更改bootstrap節(jié)點(diǎn)(所有節(jié)點(diǎn))。
????? a, 移除默認(rèn)所有的bootstrap節(jié)點(diǎn)
????????? ipfs bootstrap rm --all
???? b, 指定bootstrap節(jié)點(diǎn)為私有網(wǎng)絡(luò)中的某一節(jié)點(diǎn),例如:?????
????????? ipfs bootstrap add /ip4/192.168.0.1/tcp/4001/ipfs/QmSoLV4Bbm51jM9C4gDYZQ9Cy3U6aXMJDAbzgu2fzaDs64
6,驗(yàn)證。
????? a, 在各個節(jié)點(diǎn),輸入ipfs daemon,啟動daemon程序,啟動成功后會顯示:Daemon is ready。
????? b, 在任意一個節(jié)點(diǎn),執(zhí)行ipfs swarm peers會顯示當(dāng)前網(wǎng)絡(luò)中只有私有節(jié)點(diǎn)。類似如下內(nèi)容:

7,雙保險。(選做)
????? 如果還是不放心,可以將環(huán)境變量LIBP2P_FORCE_PNET設(shè)置為1,這個參數(shù)會強(qiáng)制IPFS使用私有網(wǎng)絡(luò),如果沒有配置私有網(wǎng)絡(luò),那么ipfs daemon會啟動失敗。
要點(diǎn)解析
??? 搭建私有網(wǎng)絡(luò)的要點(diǎn)就是設(shè)置共享密鑰和設(shè)置bootstrap節(jié)點(diǎn)。共享密鑰界定了私有網(wǎng)絡(luò),而bootstrap節(jié)點(diǎn)定義了初始節(jié)點(diǎn),根據(jù)DHT的原理,一個節(jié)點(diǎn)第一次加入到集群當(dāng)中時候,他的哈希路由表是空的,需要指定bootstrap節(jié)點(diǎn)供其問詢。通過指定私有網(wǎng)絡(luò)的節(jié)點(diǎn),將集群限定到私有網(wǎng)絡(luò)中,防止路由表污染。
???