【戴嘉樂】(入門)基於IPFS和Ngrok構建自維護資源閘道器

圓方圓區塊鏈發表於2018-11-17

作者簡介:戴嘉樂( Mr.Maple ) | 前百度高階研發工程師 | IPFS應用實踐者&佈道師| 個人網站:www.daijiale.cn 聯絡方式:微訊號:daijiale6239。

一、應用背景

由於一些特殊原因,ipfs.io閘道器在天朝無法訪問,之前在外做宣講的時候,也被很多朋友問到ipfs.io是否一直會被禁的問題,紛紛表示擔憂,這邊通過一個簡單的Demo,讓大家可以搭建屬於自己的協議閘道器,通過這種方式,我們跑在IPFS上的資源將不在受限,並且每個人都可以獨立出自己的節點服務並分享給其他人、應用程式訪問使用。

二、技術介紹

2.1 IPFS

對IPFS這項技術不熟悉的同學,可以參考我之前一次演講分享的內容:【IPFS】戴嘉樂:詳解IPFS的本質、技術架構以及應用。

2.2 Ngrok

Ngrok是一個反向代理,通過在公共的端點和本地執行的 Web 伺服器之間建立一個安全的通道,比較輕量級,不需要去在本地構建一個類似Nginx或者Tomcat這樣的伺服器,即可完成IP動態對映和內網穿透,對建立IPFS這樣的資源閘道器來說,最為方便,而且,通過Ngrok ,我們可以直觀的捕獲和分析所有通道上的流量,便於後期資源上的分析和重放,還有便於開發者除錯的協議資訊展現等功能。

官網:https://ngrok.com/
教程:https://ngrok.com/docs
下載:https://ngrok.com/download
複製程式碼

三、應用實踐

博主採用的是Mac OS 10.13.3 + go-ipfs v0.4.13 + Ngrok v2.2.8。

3.1 環境搭建

####3.1.1 Ngrok安裝

從 download page下載你所需的系統版本。

如果是linux or mac系統,建議移動到系統使用者目錄下安裝,以便更好使用terminal來操作ngrok:

$ mv ngrok.zip ../user/
複製程式碼

$ unzip /path/to/ngrok.zip

這裡可以註冊Ngrok,通過Dashboard,繫結Ngrok賬戶,享受更多權益功能:

【戴嘉樂】(入門)基於IPFS和Ngrok構建自維護資源閘道器

3.1.2 驗證、啟動Ngrok

./ngrok help
複製程式碼

出現如下資訊,表示安裝成功:

【戴嘉樂】(入門)基於IPFS和Ngrok構建自維護資源閘道器

./ngrok http 80
複製程式碼

出現如下資訊,表示啟動ngrok成功:

【戴嘉樂】(入門)基於IPFS和Ngrok構建自維護資源閘道器

開啟瀏覽器,鍵入http://127.0.0.1:4040 ,可以監控資源訪問情況:

【戴嘉樂】(入門)基於IPFS和Ngrok構建自維護資源閘道器

3.1.3 IPFS部署

部署方式可以參考我之前的文章:利用ipfs構建自己的去中心化分散式wiki系統

3.1.4 Ngrok繫結IPFS資源

  • 啟動本地IPFS節點
  • 運用IPFS上傳一張圖片,並得到IPFS指紋:QmdzsNmv...Tow
  • 啟動ngrok,繫結在IPFS的預設埠:127.0.0.1/tcp/8080,

    ./ngrok http 8080

  • 如下圖所示,Ngrok幫我們動態對映了:29e22496.ngrok.io -> localhost:8080
  • 我們用手機微信對http://29e22496.ngrok.io/ipfs/QmdzsNmv...Tow 進行訪問

【戴嘉樂】(入門)基於IPFS和Ngrok構建自維護資源閘道器

  • 我們再在瀏覽器發起一個對本地ipfs資源的訪問:localhost:8080/ipfs/QmdzsNmv...Tow

【戴嘉樂】(入門)基於IPFS和Ngrok構建自維護資源閘道器

我們看到了分別來自本地ipfs和手來自機的GET Response,資源訪問成功。

當然,有朋友說,反向代理層能否自定義自己的域名字首,其實,Ngrok是為我們提供了這樣的服務的,但是需要購買付費服務:

【戴嘉樂】(入門)基於IPFS和Ngrok構建自維護資源閘道器

3.1.5 使用Ngrok對IPFS資源進行監控

【戴嘉樂】(入門)基於IPFS和Ngrok構建自維護資源閘道器

  • 我們來監控剛才對IPFS資源訪問的詳細記錄和報文資料:

【戴嘉樂】(入門)基於IPFS和Ngrok構建自維護資源閘道器

我們可以成功監控到兩次資源請求的耗時以及協議報文的詳細資料。

3.1.6 通過Ngrok API 自動化運維IPFS節點

然而,有朋友又會抱怨了:以上的所有操作都是需要人工手動來建立和部署的,能否實現遠端自動化的運維服務。

答案是:沒有什麼是程式設計師解決不了,“懶”是我們永遠追求的境界。

通過 Ngrok API 文件,我們可以通過RPC遠端呼叫來控制節點,並整合到業務程式程式碼裡,實現自動化運維和控制。

一些常用的操作如下:

方法名 請求形式 API 備註
Start tunnel POST /api/tunnels
Stop tunnel DELETE /api/tunnels/:name
Delete Captured Requests DELETE /api/requests/http

有興趣的朋友可以在自己的業務或者App中進行整合。

四、未完待續

我們通過Ngrok為IPFS節點配置HTTP Tunnels,充分利用了其NAT穿越的特性,成功搭建了屬於自己的資源閘道器,為他人提供IPFS節點服務。但是這僅僅是一個雛形,缺陷還很多,隨後會再寫一篇文章《【應用】(進階)基於IPFS和Ngrok構建自維護資源閘道器》,來講解對資源閘道器的種種優化,例如:

  • 視訊等大檔案本地快取優化
  • ipns動態解析目錄
  • 自動化控制資源的分享許可權
  • ...

五、參考文獻


相關文章和視訊推薦

【戴嘉樂】(進階)基於IPFS和Ngrok構建自維護資源閘道器

圓方圓學院彙集大批區塊鏈名師,打造精品的區塊鏈技術課程。 在各大平臺都長期有優質免費公開課,歡迎報名收看。 公開課地址:ke.qq.com/course/3451…

相關文章