· Nacho Coll · Comparisons · 12 分鐘閱讀
Filebase 替代方案:更簡單的 IPFS Pinning,無需 S3 複雜性
比較 IPFS Ninja 與 Filebase:若你想用簡單 REST API 釘選檔案、省去 S3 協議負擔,這就是開發者選擇切換的原因。

快速比較:Filebase vs IPFS Ninja
| 功能 | Filebase | IPFS 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 至 bucket | POST /pin |
| 瀏覽器端上傳 | 需要 pre-signed URL 配置 | 內建簽署上傳 token |
結論:如果你本來就要接 AWS SDK 客戶端,Filebase 自然合適。若你只想用一行 curl 把檔案傳到 IPFS,IPFS Ninja 在簡潔度上完勝。

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 流程:
- 建立帳號並在 Filebase 控制台建立 bucket。
- 產生 access key 與 secret key 金鑰對。
- 以 endpoint
https://s3.filebase.com、regionus-east-1及你的憑證設定 S3 客戶端。 - 呼叫
putObject並帶入檔案內容。 - 輪詢物件的 metadata 以取得 IPFS CID(Filebase 釘選後會以
x-amz-meta-cidheader 形式出現)。
這流程沒有問題,只是對多數 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 過期或你主動撤銷。
定價並排比較
| 方案 | Filebase | IPFS 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 背後的團隊成員。

