在美國伺服器上部署 IPFS 節點用於伺服器租用靜態網站

你可以透過一台公共的 美國伺服器,快速完成去中心化靜態網站的伺服器租用。首先,開通一台美國伺服器並安裝 Kubo。接著,將你的网站文件上傳以獲取內容識別碼(CID)。然後,分別在本機與遠端對內容進行固定(pin)。最後,透過 DNSLink 將你的自訂網域名稱映射到該內容。
為什麼要選擇美國伺服器?位於美國的資料中心伺服器提供公共 IP 位址,你可以繞過本地受限的 NAT 環境,並享受高頻寬,在北美地區更快完成節點發現。
現在,讓我們開始部署 IPFS 節點軟體並上線你的網站。
關鍵要點
美國伺服器提供公共 IP 位址,可實現快速節點連線。
將內容雜湊轉換為 CIDv1,以確保相容現代 Web 瀏覽器。
同時在本機與遠端固定你的網站檔案,避免檔案被意外刪除。
透過簡單的 DNSLink 記錄,將自訂網域名稱映射到內容雜湊。
準備美國伺服器基礎架構
伺服器規格與系統環境
在準備部署 IPFS 節點基礎架構時,建議選擇現代的 64 位元 Linux 發行版,例如 Ubuntu 22.04 LTS。你的伺服器需要具備足夠資源,以支援節點路由並維持快速內容傳遞。
你可以參考下方建議的硬體基線配置:
硬體元件 | 建議最低規格 |
|---|---|
CPU | 2 核心 |
RAM(記憶體) | 6 GiB |
儲存空間 | 約 12 MB 基礎安裝(總空間會隨共享資料規模而成長) |
💡 提示: 請定期監控儲存空間的成長情況。隨著你固定更多靜態網站資源並快取網路資料,所需空間也會隨之增加。
防火牆與連接埠配置
將你的伺服器部署在美國公共基礎設施上,可以解決常見的點對點網路難題。家用網路通常使用網路位址轉換(NAT),NAT 會限制入站流量,並透過路由規則隱藏你的裝置。美國伺服器提供公共 IPv4 位址,這種直接連線方式可以繞過受限的本地 NAT 環境,讓北美地區的其他節點能即時發現你的內容。
你必須在防火牆中開放特定通訊連接埠。可在終端機中執行這些標準的 ufw 指令來調整網路安全策略:
# Allow IPFS Swarm traffic for peer discovery
sudo ufw allow 4001/tcp
sudo ufw allow 4001/udp
# Allow Web Gateway access for public HTTP requests
sudo ufw allow 8080/tcp
# Enable firewall rules
sudo ufw enable
請保持 5001 連接埠不對公共網際網路開放。5001 連接埠用於 API 控制,你必須將該 API 的存取限制在本機,以防止未經授權地控制你的伺服器節點。
部署 IPFS 節點並配置守護行程
在 Linux 上安裝 Kubo
Kubo 是 IPFS 的官方命令列實作。你可以透過簡單的終端機指令,直接在 Linux 伺服器上下載並安裝 Kubo:
# Download the latest Kubo archive
wget https://dist.ipfs.tech/kubo/v0.26.0/kubo_v0.26.0_linux-amd64.tar.gz
# Extract the archive file
tar -xvzf kubo_v0.26.0_linux-amd64.tar.gz
# Run the installation script
cd kubo
sudo bash install.sh
在終端機中執行 ipfs --version 指令,即可驗證安裝是否成功。
初始化節點與 Swarm 連接埠
在建立網路連線前,你必須先初始化節點儲存庫。執行以下標準初始化指令:
ipfs init --profile server
server 設定檔會將你的節點最佳化為資料中心環境使用,並停用本地網路掃描,以提升安全性。
⚡ 注意: 新啟動的 IPFS 守護行程需要一段預熱時間。在最初的幾分鐘內,你的節點會主動發現網路中的其他節點並建立路由表,以最佳化傳輸速度。
至此,你已在最佳化的節點路由設定下完成 IPFS 節點部署。
配置 Systemd 與閘道
要順利完成靜態網頁的伺服器租用,你必須允許跨來源請求。請在閘道上配置跨來源資源共用(CORS)標頭:
ipfs config --json API.HTTPHeaders.Access-Control-Allow-Origin '["*"]'
ipfs config --json Gateway.HTTPHeaders.Access-Control-Allow-Origin '["*"]'
接下來,使用 systemd 讓你的節點在背景持續執行:
建立 service 單元檔: 使用你習慣的文字編輯器開啟
/etc/systemd/system/ipfs.service:sudo nano /etc/systemd/system/ipfs.service配置單元參數: 新增以下服務設定,並將
your-user-name替換為你實際的 Linux 使用者名稱:[Unit] Description=IPFS Daemon After=syslog.target network.target remote-fs.target nss-lookup.target [Service] Type=simple ExecStart=/usr/local/bin/ipfs daemon --enable-namesys-pubsub User=your-user-name Restart=always [Install] WantedBy=multi-user.target設定開機自動啟動並立即啟動: 重新載入 systemd 設定檔,開啟開機自動啟動功能,並立刻啟動守護行程:
sudo systemctl daemon-reload sudo systemctl enable ipfs sudo systemctl start ipfs
現在,你已成功將 IPFS 節點服務以穩定的背景行程方式執行。
部署並固定靜態 Web 內容
將網站檔案新增到 IPFS
你需要使用命令列工具,將靜態網站目錄上傳到 IPFS 網路:
命令列範例:
ipfs add -r <directory_name>(例如:ipfs add -r testdir)作用: 遞迴上傳指定目錄中的所有檔案。
產生根 CID 輸出: 為每個檔案產生唯一內容識別碼,並最終輸出整個目錄的根雜湊值(例如:
QmPCwGkDRjW8B2SHoS3P9Cc4hKDjtdgytrfHQhg8n1BdGE testdir)。
💡 提示: 在正式進行網站伺服器租用前,請務必將根雜湊轉換為 CIDv1 格式。
特性 | CIDv0 | CIDv1 |
|---|---|---|
預設多進位編碼 | Base58(隱含) | Base32 |
大小寫敏感度 | 區分大小寫 | 不區分大小寫 |
子網域閘道相容性 | 不相容(瀏覽器會強制將子網域轉為小寫) | 相容(符合 RFC1035/RFC1123 網域標準) |
網站託管與安全性 | 在以路徑為基礎的閘道上缺乏獨立的來源隔離 | 提供瀏覽器來源隔離、安全防護與對相對路徑的良好支援 |
CIDv0 雜湊在現代瀏覽器中容易出問題,因為瀏覽器網址列會自動將主機名稱轉為小寫。CIDv1 採用不區分大小寫的 Base32 編碼,讓每個網站都擁有獨立的安全來源。這種隔離機制可以保護你的本機瀏覽器儲存空間,並能順暢處理相對路徑。
本機與遠端固定策略
IPFS 節點會自動執行垃圾回收以釋放磁碟空間。在這個自動清理過程中,節點會刪除未固定(unpinned)的本機快取 CID,而已固定的 CID 則會持續保留在磁碟上。
自動垃圾回收取決於幾個關鍵伺服器設定:
資料清理: 刪除未固定的快取檔案,以節省儲存空間。
GCPeriod:控制清理作業的執行頻率(預設每 1 小時執行一次)。StorageGCWatermark:當磁碟使用率達到設定門檻時觸發清理(預設 90% 容量)。
本機固定可以確保你的內容持續在線,但伺服器故障仍可能導致網站中斷。你可以串接第三方遠端固定服務(如 Pinata),以實現多節點備援。
使用以下步驟配置遠端固定服務:
將遠端固定服務新增至 Kubo: 執行
ipfs pin remote service add <nickname> <endpoint> <accessToken>,其中 nickname 為自訂別名,endpoint 為服務供應商的 API 位址,accessToken 為你的金鑰權杖。遠端固定內容: 使用
ipfs pin remote add --service=<nickname> --name=<optional-name> <CID>將根 CID 推送到遠端服務。監控固定狀態: 透過
ipfs pin remote ls --service=<nickname>檢視已完成或佇列中的固定請求。
透過 CI/CD 自動化部署
每次更新網站程式碼都手動部署,既耗時又容易出錯。你可以透過 GitHub Actions 或 ipfs-deploy 等工具建立自動化 CI/CD 流程。
將流程配置為:自動建置網站資源、將最新目錄上傳到美國伺服器、更新遠端固定服務,並在每次程式碼提交後自動輸出最新的 CIDv1 字串。
透過 DNSLink 映射自訂網域
為 IPFS 配置 DNS 記錄
DNSLink 可以將複雜的 IPFS 內容識別碼映射為可讀的網域名稱。如此一來,你在更新網站內容時,無需變更主站連結,只要在網域註冊商後台更新 TXT 記錄即可。
要配置 DNSLink,請為子網域 _dnslink.yourdomain.com 建立 TXT 記錄,並將其值設為 dnslink=/ipfs/<CID>。
你還需要將主網域指向公共 IPFS 閘道。可以將 CNAME 記錄指向 gateway.ipfs.io,或將 A 記錄指向你美國伺服器的 IP 位址。
更新 DNS 設定後,可透過終端機工具驗證 TXT 記錄是否已生效:
查詢指令:
dig +short TXT _dnslink.yourdomain.com預期結果: 輸出中包含 IPFS 路徑,例如:
"dnslink=/ipfs/bafybeiay2koog2jnndn5gr2raytxh7evobry5lo2w4s7nhugc7xipy6aze"
整合閘道並測試解析
你的美國伺服器需要配置反向代理,以處理安全的 Web 流量。NGINX 會將進入的 Web 請求轉送到本機 IPFS 閘道連接埠。安全通訊端層(SSL)加密可以保護訪客,並提升網站可信度。你可以使用 Let’s Encrypt 與 Certbot 免費申請 SSL 憑證。
依照以下順序啟用自訂網域閘道的 HTTPS:
在主機系統(如 Ubuntu)上安裝 Certbot 及其 NGINX 外掛。
執行
sudo certbot --nginx -d ipfs.my-domain-name.com,啟動憑證簽發流程。在互動式 CLI 中完成提示操作,讓 Certbot 自動更新 NGINX 設定並強制啟用 HTTPS 重新導向。
現在,在任意瀏覽器中進行測試。將你的自訂網域輸入瀏覽器網址列,你位於美國的本機 IPFS 節點會立即從網路擷取內容。你的去中心化靜態網站現已上線,並可安全地向大眾開放存取!
你已成功將本機伺服器管理與公共 DNS 記錄結合起來,實現去中心化網站的伺服器租用。
你可以透過以下簡單的日常檢查來維護整套部署:
在節點預熱完成後,追蹤你的節點數量,確保連線穩定。
管理磁碟使用上限,避免意外觸發垃圾回收導致空間不足。
定期檢查各遠端服務供應商上的固定狀態,以維持備援。
注意公共閘道會根據你的 DNS TTL,將更新後的 DNSLink 記錄作為 max-age 快取時間,並附帶 Last-Modified 時間戳進行快取。
當你為 IPFS 節點伺服器租用新版本網站後,請透過公共閘道測試自訂網域解析情況,以驗證全球存取效能!
常見問題(FAQ)
如何檢查 IPFS 節點是否運作正常?
在終端機中執行 ipfs stats bw 可檢視頻寬使用情況。你也可以透過以下簡單指令檢查目前活躍的網路節點連線:
ipfs swarm peers
⚡ 注意: 較高的節點數通常代表你在全球 IPFS 網路中的連線性更佳。
為什麼伺服器租用靜態網站時要優先使用 CIDv1 而不是 CIDv0?
現代瀏覽器會強制將網域名稱轉為小寫。CIDv1 採用不區分大小寫的 Base32 編碼,可避免連結失效,同時保留相對路徑,並為託管的應用程式提供獨立的瀏覽器安全來源。
當伺服器磁碟空間耗盡時會發生什麼事?
當儲存空間接近容量上限時,節點會觸發自動垃圾回收,安全地刪除未固定的快取檔案。
| 內容狀態 | 垃圾回收行為 | | : | : | | 未固定檔案 | 自動刪除 | | 已固定檔案 | 永久保留 |
能否在 IPFS 節點上進行動態網站的伺服器租用?
不能。IPFS 原生僅提供靜態資源,例如 HTML、CSS、前端 JavaScript 與圖片。不過,你仍可透過在前端整合外部公共 API 或 Web3 智慧合約,為應用程式增加動態功能。
