作者簡介:戴嘉樂( 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賬戶,享受更多權益功能:
3.1.2 驗證、啟動Ngrok
./ngrok help
複製程式碼
出現如下資訊,表示安裝成功:
./ngrok http 80
複製程式碼
出現如下資訊,表示啟動ngrok成功:
開啟瀏覽器,鍵入http://127.0.0.1:4040 ,可以監控資源訪問情況:
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資源的訪問:localhost:8080/ipfs/QmdzsNmv...Tow
我們看到了分別來自本地ipfs和手來自機的GET Response,資源訪問成功。
當然,有朋友說,反向代理層能否自定義自己的域名字首,其實,Ngrok是為我們提供了這樣的服務的,但是需要購買付費服務:
3.1.5 使用Ngrok對IPFS資源進行監控
- 我們來監控剛才對IPFS資源訪問的詳細記錄和報文資料:
我們可以成功監控到兩次資源請求的耗時以及協議報文的詳細資料。
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…