多節點ipfs安裝

王一洋發表於2019-03-15

星際檔案系統IPFS(Inter-Planetary File System)是一個面向全球的、點對點的分散式版本檔案系統,目標是為了補充(甚至是取代)目前統治網際網路的超文字傳輸協議(HTTP),將所有具有相同檔案系統的計算裝置連線在一起。原理用基於內容的地址替代基於域名的地址,也就是使用者尋找的不是某個地址而是儲存在某個地方的內容,不需要驗證傳送者的身份,而只需要驗證內容的雜湊,通過這樣可以讓網頁的速度更快、更安全、更健壯、更持久。

git原始碼地址:https://github.com/ipfs/go-ipfs

安裝包下載地址:https://github.com/ipfs/go-ipfs/releases

本文以最新的版本0.4.19為例進行。

需要先安裝golang環境,可參考前面的文章。版本建議在go1.11.5以上。

1、下載原始碼包

wget https://github.com/ipfs/go-ipfs/releases/download/v0.4.19/go-ipfs_v0.4.19_linux-amd64.tar.gz

2、解壓到自定義目錄

tar -zxvf  go-ipfs_v0.4.19_linux-amd64.tar.gz

3、進入go-ipfs目錄,執行

sudo sh install.sh

4、安裝成功後,執行命令:

$ ipfs --version

ipfs version 0.4.19

5、初始化ipfs,在使用者目錄下生成 ~/.ipfs 目錄

$ipfs init
$ls ~/.ipfs
api  blocks  config  datastore  datastore_spec  keystore  repo.lock  swarm.key  version

6、編輯配置檔案config,找到address節點:

 "Addresses": {
    "API": "/ip4/172.19.101.62/tcp/5001",
    "Announce": [],
    "Gateway": "/ip4/172.19.101.62/tcp/8080",
    "NoAnnounce": [],
    "Swarm": [
      "/ip4/0.0.0.0/tcp/4001",
      "/ip6/::/tcp/4001"
    ]
  }

將API、Gateway修改為自己的IP地址,如本機ip為:172.19.101.62

7、當我們在前端通過js介面操作ipfs時,會遇到跨域資源訪問問題,可以在終端執行以下配置來解決:

ipfs config --json API.HTTPHeaders.Access-Control-Allow-Methods '["PUT","GET", "POST", "OPTIONS"]'
ipfs config --json API.HTTPHeaders.Access-Control-Allow-Origin '["*"]'
ipfs config --json API.HTTPHeaders.Access-Control-Allow-Credentials '["true"]'
ipfs config --json API.HTTPHeaders.Access-Control-Allow-Headers '["Authorization"]'
ipfs config --json API.HTTPHeaders.Access-Control-Expose-Headers '["Location"]'

8、退出編輯,執行命令 

$ipfs daemon

$nohup ipfs daemon &  //後臺啟動執行

9、啟動就觀察日誌如果正常,在瀏覽器中輸入:

http://172.19.101.62:5001/webui

即可檢視到ipfs web頁面。

10、在另外的節點機器上執行以上相同的操作後,代表單節點各自完成。

11、ipfs初始化時,已經在配置檔案中加入了初始引導節點,這些節點需要在private網路中去除。執行命令:

$ ipfs bootstrap rm all

12、選擇其中一臺作為引導節點,在全部節點上執行:

ipfs bootstrap add /ip4/172.19.101.62/tcp/4001/ipfs/QmPB31AAmt5x5nEnwmHUC2A922c44hqd6kWVmQqWajwgBi

以上地址可以通過命令獲取:ipfs id

13、重新啟動各節點,先啟動62這臺機器,完成多節點部署。

14、驗證。生成一個檔案1.txt,內容為hello world!,執行命令:

$ ipfs add 1.txt
added QmQ1WrxowZGjsrsGr7cGPtyB1PLU8238SJcV6uLJeQc2Kf 1.txt

15、生成一串hash便是檔案在網路中的地址,通過命令檢視:

$ ipfs cat QmQ1WrxowZGjsrsGr7cGPtyB1PLU8238SJcV6uLJeQc2Kf
hello world!

16、在多個節點上進行相同驗證。

至此,部署完成。

相關文章