免費架站!用 IPFS 建設可疑的一頁式網站
說到架站,你想到的可能是購買網域 (Domains)、伺服器並安裝 Wordpress 來寫文章的奇幻旅程。如果不想承擔伺服器營運成本、頻寬和複雜的資安風險,也可以用免費的部落格服務供應商 BSP (Blogger, 痞客邦) 來建設屬於自己的家。
除此之外還有其他方法嗎?當然有!
如果你的目標是製作靜態的一頁式網站(One Page Web) ,可以用 IPFS 星際檔案系統來架站試試看!
網頁的製作
網站的編輯與 html 的撰寫,可以採用 FrontPage、SeaMonkey 這類網頁設計軟體來進行。如果你跟 html 和 css 語法很熟,也可以直接用記事本編寫。相關過程不多贅述,以下僅示範用 IPFS 架站的過程。翠維尼
本文示範的網站目錄、index.html 和圖片資料夾結構如下。
update.sh #自動上傳腳本
web #網站資料夾
--index.html #網站主體,首頁
--img #圖片資料夾
----pic_1.jpg #圖片
----pic_2.jpg #圖片
網頁圖片可採兩種方式進行連結:直接 CID 與 web 路徑。
「直接 CID」簡單來說就是預先將圖片上傳至 IPFS,並將 CID 直接應用在網頁中;而且「web 路徑」則是讓它自己抓網站圖片資料夾路徑。
img src="https://.../Qm...d2iK?filename=pic_1.jpg"
img src="./img/pic_1.jpg"
產生專屬的 IPNS 網址
由於 IPFS 檔案 CID 會在使用者修改內容後跟著改變,而本文示範的網站會以資料夾 web 作為入口、index.html 為主體進行分配,因此建議先為 web 資料夾建立專屬的 IPNS 地址/金鑰,方便後續網站改版。
$ ipfs key gen ipfs-web #產生專屬的 ipns
k51qz...g5xri
$ ipfs key list #查詢現有的key
ipfs-web
myfooo
自動更新 IPNS 與資料夾 CID 的腳本
將產生的 Key 編入 update.sh 腳本,讓它在上傳檔案時能自動更新 IPNS 與 CID 連結。
update.sh
ipfs add -Qr ./web | ipfs name publish --key=k51qz...g5xri
執行
$ ./update.sh
Published to k51qz...g5xri: /ipfs/Qm...jz1jY #成功
完成後即可用 ipfs.io/ipns/k51qz...g5xri 進行瀏覽了。之後網站改版,只要執行 ./update.sh 即可自動更新。
自訂網址 (Domains)
當然,你也可以參考使用老牌的 no-ip.com 免費網址、免費 DNS 服務 freedns.afraid 、Google Domains 甚至以太坊域名服務 (Ethereum Name Service) 來將一長串的 IPNS 轉址成比較不可疑的一頁式網站。由於相關的設定有點複雜,之後將會再寫一篇 IPFS/IPNS 網址與 ENS 以太坊網域轉址的教學。
本文測試站:https://stellarmiut.eth.link
結語
由於 IPFS 先天限制的關係,有時初次探索 (File Discovery) 立即就能找到檔案;有時很慢,放了兩天都還沒有反應。對於這個問題,你可以用免費的第三方 IPFS 上傳網站來加快檔案探索的速度,並參考這篇教學來加快與維持 IPFS 檔案的反應速度。
其他指令
ipfs name publish Qm...jz1jY #web資料夾
$ ipfs add -Qr --only-hash #不上傳,僅顯示 CID
ipfs key list
ipfs key export <name>
ipfs key import <name> <key>
延伸閱讀
用以太坊域名 (ENS) 發佈 IPFS 網站 - IPFS 官方教學
Blogger 購買網域後的轉址與 Analytics、Console SEO 設定教學