· · Comparisons  · 12 分鐘閱讀

Filebase 替代方案:更簡單的 IPFS Pinning,無需 S3 複雜性

比較 IPFS Ninja 與 Filebase:若你想用簡單 REST API 釘選檔案、省去 S3 協議負擔,這就是開發者選擇切換的原因。

比較 IPFS Ninja 與 Filebase:若你想用簡單 REST API 釘選檔案、省去 S3 協議負擔,這就是開發者選擇切換的原因。

快速比較:Filebase vs IPFS Ninja

功能FilebaseIPFS Ninja
API 風格S3 相容(XML/multipart)簡單 REST/JSON
免費方案5 GB 儲存空間1 GB、500 個檔案
付費入門$19.99/mo(Performance)$5/mo(Bodhi)
專屬閘道器有(Nirvana 方案最多 10 個)
圖片最佳化有(/image/{cid}
上傳驗證AWS 風格簽署X-Api-Key 或簽署 token
釘選現有 CID透過 S3 PUT 至 bucketPOST /pin
瀏覽器端上傳需要 pre-signed URL 配置內建簽署上傳 token

結論:如果你本來就要接 AWS SDK 客戶端,Filebase 自然合適。若你只想用一行 curl 把檔案傳到 IPFS,IPFS Ninja 在簡潔度上完勝。

IPFS Ninja dashboard upload interface

30 秒內將檔案上傳至 IPFS

以下是 IPFS Ninja 的上傳流程,無需 SDK、無需 XML、無需建立 bucket:

curl -X POST https://api.ipfs.ninja/upload/new \
  -H "X-Api-Key: bws_a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4" \
  -H "Content-Type: application/json" \
  -d '{
    "content": "Hello from IPFS Ninja!",
    "description": "My first file"
  }'

回應:

{
  "cid": "bafkreib4mrow...",
  "sizeMB": 0.00002,
  "uris": {
    "ipfs": "ipfs://bafkreib4mrow...",
    "url": "https://ipfs.ninja/ipfs/bafkreib4mrow..."
  }
}

完成。該 CID 已被釘選、可透過 IPFS 存取,並立即可透過公開閘道器取得。

以下是等效的 Filebase 流程:

  1. 建立帳號並在 Filebase 控制台建立 bucket。
  2. 產生 access key 與 secret key 金鑰對。
  3. 以 endpoint https://s3.filebase.com、region us-east-1 及你的憑證設定 S3 客戶端。
  4. 呼叫 putObject 並帶入檔案內容。
  5. 輪詢物件的 metadata 以取得 IPFS CID(Filebase 釘選後會以 x-amz-meta-cid header 形式出現)。

這流程沒有問題,只是對多數 REST 原生專案來說,環節太多了。


開發者在 Filebase 上遭遇 S3 阻力的原因

Filebase 的 S3 相容性在以下情況確實有用:

  • 你已有透過 S3 通訊的現有基礎設施(Lambda 函數、Terraform 模組、備份代理)。
  • 你儲存大型 blob,並希望使用你已熟悉的 multipart 上傳語意。
  • 你的團隊熟悉 AWS,且 S3 SDK 已是既有依賴項。

但許多將 IPFS 整合進 Web 應用程式、dApp 或 CI pipeline 的開發者並非來自這個背景,他們常遭遇:

XML 錯誤回應。 S3 回傳 XML。你的 JavaScript fetch 呼叫收到 <?xml version="1.0" ...><Error><Code>InvalidAccessKeyId</Code>,你還得加上 XML 解析器才能除錯。

憑證管理。 S3 風格的驗證(access key + secret + HMAC-SHA256 請求簽署)在瀏覽器或 edge function 中從頭實作並不簡單。Pre-signed URL 有幫助,但在伺服器端產生需要額外一次往返。

CID 取得是事後才想到的。 CID 是 S3 物件上的 metadata,而非主要回應。你必須解析回應 header 或呼叫獨立的 metadata endpoint。

沒有原生簽署上傳 token。 若你希望使用者從瀏覽器直接上傳而不暴露伺服器憑證,Filebase 要求你自己建立 pre-signed URL 產生 endpoint。

IPFS Ninja 的簽署上傳 token 原生支援此模式:在伺服器端產生一次限時 token,嵌入前端,讓使用者直接 POST 至 api.ipfs.ninja,直到 token 過期或你主動撤銷。


定價並排比較

方案FilebaseIPFS Ninja
免費5 GB,僅限公開閘道器500 個檔案、1 GB、1 個專屬閘道器
入門付費~$19.99/mo(Performance)$5/mo(Bodhi:50K 個檔案、10 GB)
中階方案$29/mo(Nirvana:500K 個檔案、100 GB)
專屬閘道器有(Bodhi:5 個,Nirvana:10 個)

對中小型專案而言,從免費升至第一個付費方案,IPFS Ninja 是 $5/mo,Filebase 約為 $20/mo。如果你在做 side project 或新創 MVP,這個差距很重要。


閘道器功能比較

兩個服務都提供專屬 IPFS 閘道器(以 HTTPS 提供你釘選內容的子網域)。差異在於:

Filebase 在付費方案提供專屬閘道器,提供你 bucket 內容並整合其 S3 命名空間。

IPFS Ninja 閘道器位於 https://{slug}.gw.ipfs.ninja,支援:

  • 存取模式:限制(需要 token)、開放(公開)或資料夾(目錄列表)。
  • IP 白名單:將閘道器鎖定至已知的伺服器 IP。
  • Origin 限制:限制特定 HTTP origin,適用於僅瀏覽器的 CORS 情境。
  • 圖片最佳化/image/{cid} endpoint 讓你即時調整尺寸、裁切及轉換格式,無需另接圖片 CDN。

若你的使用情境是向 Web 前端提供資源,CORS origin 限制與內建圖片最佳化 endpoint 可省去一個額外的服務整合。


釘選現有 CID

已有來自其他節點或服務的 CID?兩個平台都允許你在不重新上傳的情況下釘選它。在 IPFS Ninja 上:

curl -X POST https://api.ipfs.ninja/pin \
  -H "X-Api-Key: bws_a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4" \
  -H "Content-Type: application/json" \
  -d '{
    "cid": "bafkreib4mrow...",
    "description": "Pinned from external source"
  }'

在 Filebase 上,你透過 PUT 至 bucket 並以 CID 作為自訂 metadata header 來釘選,接著 Filebase 抓取並釘選內容。對 IPFS 原生思維而非 S3 原生思維的開發者而言,IPFS Ninja 以 CID 為優先的工作流程更直接。

請參閱 what is IPFS pinning,深入了解釘選的重要性以及內容未釘選時會發生什麼事。


瀏覽器端上傳而不洩漏憑證

這是一個常見的架構問題:如何讓瀏覽器上傳至 IPFS,而不將 API 金鑰暴露給客戶端?

Filebase 做法:在伺服器端產生 pre-signed S3 PUT URL,回傳給客戶端,客戶端直接 PUT。這是標準的 S3 pre-sign 模式,運作良好,但你需要自行實作伺服器端簽署 endpoint。

IPFS Ninja 做法:呼叫 /token/upload/new(或透過儀表板產生)建立簽署上傳 token。將該 token 嵌入前端,客戶端使用 Authorization: Signed {token}api.ipfs.ninja 發送請求。Token 可設定在固定時間後過期,或隨時從儀表板撤銷。

// Frontend code — token was fetched from your server
const token = 'your-signed-upload-token';

const response = await fetch('https://api.ipfs.ninja/upload/new', {
  method: 'POST',
  headers: {
    'Authorization': `Signed ${token}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    content: btoa(fileContentAsArrayBuffer), // base64 for binary
    description: 'User uploaded file',
  }),
});

const { cid, uris } = await response.json();
console.log('Pinned at:', uris.url);

若需上傳模式的詳細說明,請參閱 how to upload files to IPFS


何時仍應選擇 Filebase

這篇文章的目的是客觀分析,而非片面推銷。

選擇 Filebase 的情況:

  • 你的程式碼庫已使用 AWS SDK v3 或 Boto3,且希望零額外依賴項。
  • 你正在從 S3 遷移至 IPFS,希望替換 endpoint 而非重寫上傳邏輯。
  • 你儲存非常大的檔案,需要可靠的 S3 語意 multipart 上傳(不過 IPFS Ninja 也有 large upload API)。
  • 你的團隊有深厚的 AWS 專業知識,相較於 REST header,對 S3 驗證更為熟悉。

選擇 IPFS Ninja 的情況:

  • 你希望一個 POST /upload/new 就能立即取得 CID,無需中間步驟。
  • 你在建立前端優先的應用程式,需要客戶端安全上傳 token,而不想自建 pre-sign 基礎設施。
  • 你希望圖片最佳化與存取控制閘道器一體整合,無需另加服務。
  • 你對價格敏感,$5/mo 的入門價格對你的專案階段很重要。

總結

Filebase 對已深耕 AWS 生態系的團隊而言是可靠的產品,S3 相容性在這個背景下確實是優勢。但對於只想透過簡潔 REST API 將檔案釘選至 IPFS、並立即取得 CID 的開發者來說,S3 層增加的只是不必要的繁瑣手續。

IPFS Ninja 保持 API 介面精簡:上傳、釘選、取得。閘道器、圖片最佳化與上傳 token 功能在需要時隨時可用,無需預先配置。

若要更全面了解 IPFS Ninja 與其他服務的比較,請參閱 best IPFS pinning services


準備好開始釘選了嗎? 建立免費帳號 — 500 個檔案、1 GB 儲存空間,無需信用卡。


關於本文:本文由 AI 助理依據 IPFS.NINJA 的內容生成工作流程起草,經 Nacho Coll 審閱並核准。所有程式碼範例均已針對 IPFS.NINJA 正式 API 驗證。若發現任何錯誤,請至 https://github.com/ipfs-ninja/feedback 提出 issue。了解更多關於我們如何在內容中使用 AI 以及IPFS.NINJA 背後的團隊成員

返回部落格