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

做者簡介:戴嘉樂( Mr.Maple ) | 前百度高級研發工程師 | IPFS應用實踐者&佈道師|
我的網站: https://www.daijiale.cn
聯繫方式:微信號:daijiale6239。

1、應用背景

因爲一些特殊緣由,ipfs.io網關在天朝沒法訪問,以前在外作宣講的時候,也被不少朋友問到ipfs.io是否一直會被禁的問題,紛紛表示擔心,這邊經過一個簡單的Demo,讓你們能夠搭建屬於本身的協議網關,經過這種方式,咱們跑在IPFS上的資源將不在受限,而且每一個人均可以獨立出本身的節點服務並分享給其餘人、應用程序訪問使用。html

2、技術介紹

2.1 IPFS

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

2.2 Ngrok

Ngrok是一個反向代理,經過在公共的端點和本地運行的 Web 服務器之間創建一個安全的通道,比較輕量級,不須要去在本地構建一個相似Nginx或者Tomcat這樣的服務器,便可完成IP動態映射和內網穿透,對創建IPFS這樣的資源網關來講,最爲方便,並且,經過Ngrok ,咱們能夠直觀的捕獲和分析全部通道上的流量,便於後期資源上的分析和重放,還有便於開發者調試的協議信息展示等功能。程序員

官網:https://ngrok.com/
教程:https://ngrok.com/docs
下載:https://ngrok.com/download

3、應用實踐

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

3.1 環境搭建

3.1.1 Ngrok安裝

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

若是是linux or mac系統,建議移動到系統用戶目錄下安裝,以便更好使用terminal來操做ngrok:瀏覽器

$ mv ngrok.zip ../user/

$ unzip /path/to/ngrok.zip緩存

這裏能夠註冊Ngrok,經過Dashboard,綁定Ngrok帳戶,享受更多權益功能:安全

![](pic1)

3.1.2 驗證、啓動Ngrok

./ngrok help

出現以下信息,表示安裝成功:服務器

![](pic2)

./ngrok http 80

出現以下信息,表示啓動ngrok成功:微信

![](pic3)

打開瀏覽器,鍵入http://127.0.0.1:4040 ,能夠監控資源訪問狀況:

![](pic4)

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... 進行訪問

![](pic5)

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

![](pic6)

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

固然,有朋友說,反向代理層可否自定義本身的域名前綴,其實,Ngrok是爲咱們提供了這樣的服務的,可是須要購買付費服務:

![](pic7)

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

![](pic8)

  • 咱們來監控剛纔對IPFS資源訪問的詳細記錄和報文數據:

![](pic9)

咱們能夠成功監控到兩次資源請求的耗時以及協議報文的詳細數據。

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中進行集成。

4、未完待續

咱們經過Ngrok爲IPFS節點配置HTTP Tunnels,充分利用了其NAT穿越的特性,成功搭建了屬於本身的資源網關,爲他人提供IPFS節點服務。可是這僅僅是一個雛形,缺陷還不少,隨後會再寫一篇文章《【應用】(進階)基於IPFS和Ngrok構建自維護資源網關》,來說解對資源網關的種種優化,例如:

  • 視頻等大文件本地緩存優化
  • ipns動態解析目錄
  • 自動化控制資源的分享權限
  • ...

5、參考文獻


相關文章和視頻推薦

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

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

相關文章
相關標籤/搜索