什麼是 IPFS?#
IPFS,是點對點的超媒體協議,它讓網絡更快、更安全、更開放。說簡單一點,它就是一個去中心化互聯網。說技術一點,它是一個基於分佈式哈希表 DHT 進行內容尋址的,基於 git 模型版本管理的,基於默克爾對象關聯的,基於點對點技術的,基於全球化命名空間 IPNS 的,基於各種技術的,一種分佈式文件系統。
用人話說,你可以把它看成一個共享網盤,你可以嘗試下載IPFS - Desktop(適用於有圖形界面的系統)或kubo - ipfs(適用於 CLI)。然後啟動 IPFS,你的設備將成為 IPFS 網絡中的一個節點
使用 IPFS 能做什麼?#
當你連接到 IPFS 網絡後,IPFS 會自動將你的設備作為一個本地 IPFS 節點並且尋找其他 IPFS 節點,你將能夠幫助其他用戶建立連接、提供文件。同時你也可以將你的文件上傳到你的 IPFS 節點,等待分發,讓網絡上的其他用戶可以訪問你的文件。在 IPFS 網絡中,訪問文件通過 IPFS 網關,如:https://ipfs.io/ipfs/
+ CID(文件哈希)
實現訪問。比如: https://ipfs.crossbell.io/ipfs/bafybeifbn36zmdb37ov6id3toy6bve47264hjk2yob6rm4bhw7ooawncf4
(這裡使用 ipfs.crossbell.io
這個 CrossBell 托管的 IPFS 網關來規避 GFW 封禁)
這項技術真的有這麼理想嗎?#
這項技術確實很理想,但是實際應用下來會遇到以下問題
-
通過本地 IPFS 節點上傳的文件遲遲無法通過 IPFS 網關 + CID 實現訪問
-
發現的節點太少
-
可能會大量佔用你的帶寬
這些問題大部分原因都是因為這個網絡太過於龐大,而單個 IPFS 節點的權重很低,儘管 IPFS 的分發一般在幾小時內可以完成。但對於個人來說,我們應當尋找一些服務商幫我們完成這些需求,它們往往在 IPFS 網絡中的權重更大,進行文件更新的效率也很高,同時也提供一些擴展服務,比如自動化 Git 部署。而這篇文章使用的則是Fleek
關於 Fleek#
你可以簡單理解為它權重很大,有很多的 IPFS 節點,經由 Fleek 上傳到 IPFS 網絡上的文件可以在幾秒內完成廣播,並且支持連接 Git 存儲庫部署項目和綁定你的域名
Fleek 是否值得信賴?#
本人僅接觸此服務 2 天。觀察到 Fleek 在成功部署網站後提供了三類訪問方式
-
xxx-xxx.fleek.app
:這個域名使用了 Cloudflare CDN,實測解析 IP 的數量為 2,不建議使用
:這種方法是原生的 IPFS 訪問方式。通過 IPFS 網關 + CID 來訪問。但由於 CID 為哈希值,當你的网站改動後你的 CID 會發生變化
- 綁定自定義域名來訪問,這將會使用亞馬遜的 CDN 並且自動映射 CID,實測解析 IP 數量超過 30,並且速度很快
Warning
注意,任何使用 HTTP 協議的類 ipfs 技術都需要一個中心化伺服器代理訪問 IPFS 網絡。只有當訪問者連接上 IPFS 網絡後才會使用去中心化的連接方式)
- 儘管顯示了 IPFS 的文件瀏覽界面,但實際上這個頁面是由 HTTP 請求到亞馬遜 CDN 反代 IPFS 網絡實現的,實際上仍為中心化網絡
- 當你的設備已經連上 IPFS 網絡後,所有流量將使用 P2P(去中心化),所以你看到的訪問地址實際上是本機地址
梳理一下思路,我們可以用 Fleek 做到什麼#
讓 Fleek 連接你的 Git 存儲庫,通過構建命令構建靜態網站,並發布到 IPFS,同時兼容 HTTP 訪問
正式開始#
-
前往 fleek.xyz,通過 MetaMask 登錄
-
連接你的 Git 存儲庫,輸入構建命令等相關信息
-
部署網站
-
綁定域名
-
最終訪問
效果圖:
拓展一下,我們還可以通過 IPFS 技術做什麼?(😭目前已棄用)#
-
創建一個巨大的圖床,已經投入使用,參見: https://pic.onani.cn (原理:請求 https://ipfs-pic.onani.cn ,獲取圖片列表,隨機選擇使用 JS 展示)
-
無需再自托管任何圖片,已經投入使用,本博客所有圖片都使用 IPFS 存儲
-
理論上,你可以將任何佔用存儲的服務上傳到 IPFS,實現存算分離