你知道嗎?只需要一個網域與設定2筆DNS紀錄就能夠將網站架設在IPFS區塊鏈上,星際檔案系統(InterPlanetary File System,縮寫為IPFS)是一個旨在實現檔案的分散式儲存、共享和持久化的網路傳輸協定。它是一種內容可定址的對等超媒體分發協定。在IPFS網路中的節點構成一個分散式檔案系統。
相較於傳統中心化的伺服器,IPFS將伺服器的資料分散在鏈上,資料得以永久保存。IPFS也不再依賴主幹網路,下載更快,更安全與開放。

From https://blog.ipfs.io/2022-06-09-practical-explainer-ipfs-gateways-1/
上傳網站到IPFS
除了IPFS官方的工具能夠上傳檔案到鏈上,也可以透過Pinata在瀏覽器操作,註冊登入後就能夠上傳檔案或資料夾。靜態網站上傳時候就點選資料夾,上傳後會產生一個CID,這就是我們要用的。CID使用QmQrXZ4iXdEKQMiQT6GRg2Wy3vxb9exR25sYdaqoHwWWuR為範例。

Pinata Dashboard
選擇IPFS Public Gateway
我們會需要一個IPFS Gateway來瀏覽我們的網站,Gateway會透過反向代理來讀取IPFS上的檔案。

From https://docs.ipfs.io/concepts/ipfs-gateway/
我們可以透過Public Gateway清單來看看哪一個比較快,我建議使用Cloudflare的Gateway,全球節點多速度也快。也可以順便解決SSL憑證的問題。

IPFS Public Gateway List
Cloudflare提供兩個Public Gateway:cloudflare-ipfs.com、**cf-ipfs.com。**那要怎麼使用呢?其實很簡單,只需要將上面的CID填入網址上就可以。
Cloudflare兩個網域差別在於cf-ipfs.com會跳轉到一個前面包含hash的網域,讓網頁服務在root,避免網頁前端因為有subpath而產生錯誤。也可以嘗試看看使用列表中的其他Gateway瀏覽你的網站。更多Cloudflare IPFS相關資料可以參考這裡。
設定DNS TXT紀錄
目前已經可以將網站上傳並瀏覽了,但是每次更新網站,都必須重新上傳整包,CID也不一樣了,如果手上有個網域,就可以上個TXT紀錄產生永久路徑。
以下圖為例我們希望使用**www.twcanhelp.me**作為網站的網域,我們要設定以下DNS配置,以下以Cloudflare畫面為例。選擇新增TXT,名稱填入你想用網域,內容填上CID。
類型:TXT
名稱:_dnslink.
內容:dnslink=/ipfs/

設定完只要到https://cloudflare-ipfs.com/ipns/www.twcanhelp.me就能夠瀏覽。注意網址的差別ipfs後面帶CID,ipns後面帶DOMAIN。
除了在TXT放CID外,也可以放別人的DOMAIN,就可以把別人的網站Fork過來。我們知道ipfs.io官網就有上IPFS,那我們就可以設定TXT到ipfs.io。https://cloudflare-ipfs.com/ipns/ipfs.twcanhelp.me就可以連到IPFS官網。

類型:TXT
名稱:_dnslink.
內容:dnslink=/ipns/
設定DNS CNAME紀錄
這時候你會發現雖然用cloudflare-ipfs.com可以瀏覽網站,但www.twcanhelp.me卻沒辦法瀏覽,因為我們還沒設定CNAME目標,目標要設為Public Gateway。DNS設定如下:
類型:CNAME
名稱:
目標:cloudflare-ipfs.com

設定完網站就能正常瀏覽了,這時候你會發現,Cloudflare會限制這個CNAME不能過proxy。

結論
透過IPFS我們就完全不需要架設靜態網站的伺服器,只需要將網站上傳後設定DNS就能夠使用。此外,需要設定TXT紀錄才能在Public Gateway的網址上使用Domain。若要使用自己的網域,還需要額外設定CNAME指到Public Gateway。除了Public Gateway外,還有付費的Private Gateway可以選擇,下一篇再做介紹。