· · Comparisons  · 12 分钟阅读

Filebase 替代方案:更简单的 IPFS Pinning,无需 S3 复杂配置

对比 IPFS Ninja 与 Filebase:如果你想用简洁的 REST API 完成 pinning,无需 S3 协议开销,这里是开发者选择切换的原因。

对比 IPFS Ninja 与 Filebase:如果你想用简洁的 REST API 完成 pinning,无需 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 或签名令牌
固定已有 CID通过 S3 PUT 到存储桶POST /pin
客户端直传需要预签名 URL 管线内置签名上传令牌

结论:如果你本来就在接入 AWS SDK 客户端,Filebase 能自然融入。如果你想用一条 curl 命令把文件传到 IPFS,IPFS Ninja 在简洁性上更胜一筹。

IPFS Ninja dashboard upload interface

30 秒内将文件上传到 IPFS

以下是 IPFS Ninja 的上传路径。无需 SDK,无需 XML,无需创建存储桶:

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 已被 pin,可通过 IPFS 访问,并立即可经公共网关访问。

以下是 Filebase 的等效流程:

  1. 在 Filebase 控制台创建账户和存储桶。
  2. 生成访问密钥 + 秘密密钥对。
  3. 使用端点 https://s3.filebase.com、区域 us-east-1 及你的凭证配置 S3 客户端。
  4. 调用 putObject 上传文件内容。
  5. 轮询对象元数据以获取 IPFS CID(Filebase pin 后,该 CID 会以 x-amz-meta-cid 响应头的形式出现)。

这没有什么问题——只是对大多数原生 REST 项目来说,涉及的环节比必要的多。


开发者在 Filebase 上遭遇 S3 摩擦的原因

Filebase 的 S3 兼容性在以下场景确实有用:

  • 你已有基础设施与 S3 通信(Lambda 函数、Terraform 模块、备份代理)。
  • 你存储大型文件,并需要你已熟悉的 multipart 上传语义。
  • 团队精通 AWS,S3 SDK 已是现有依赖。

但许多将 IPFS 集成进 Web 应用、dApp 或 CI 流水线的开发者并非来自这个背景。他们会遇到:

XML 错误响应。 S3 返回 XML。你的 JavaScript fetch 调用收到 <?xml version="1.0" ...><Error><Code>InvalidAccessKeyId</Code>,还得引入 XML 解析器才能调试。

凭证管理。 S3 风格鉴权(访问密钥 + 秘密密钥 + HMAC-SHA256 请求签名)在浏览器或边缘函数中从头实现并不简单。预签名 URL 有所帮助,但在服务端生成它们会增加一次往返。

CID 获取是事后操作。 CID 是 S3 对象上的元数据,而非主响应的一部分。你需要解析响应头,或调用独立的元数据端点。

没有原生签名上传令牌。 如果你希望用户从浏览器直接上传而不暴露服务端凭证,Filebase 要求你自行构建预签名 URL 生成端点。

IPFS Ninja 的签名上传令牌原生支持这一模式:在服务端一次性生成一个有时限的令牌,将其嵌入前端,让用户直接向 api.ipfs.ninja 发 POST 请求,直到令牌过期或被吊销。


定价对比

套餐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。如果你在做个人项目或初创 MVP,这个差距很重要。


网关功能对比

两个服务都提供专属 IPFS 网关(通过 HTTPS 提供你 pin 内容的子域名)。区别在于:

Filebase 在付费套餐下提供专属网关,服务你存储桶的内容,并与其 S3 命名空间集成。

IPFS Ninja 网关地址为 https://{slug}.gw.ipfs.ninja,支持:

  • 访问模式:受限(需令牌)、公开(公共)或文件夹(目录列表)。
  • IP 白名单:将网关锁定到已知服务器 IP。
  • 来源限制:限制特定 HTTP 来源,适用于仅浏览器的 CORS 场景。
  • 图片优化/image/{cid} 端点支持实时缩放、裁剪和格式转换,无需额外图片 CDN。

如果你的场景是向 Web 前端提供静态资源,CORS 来源限制和内置图片优化端点可以省去一个独立的服务集成。


固定已有 CID

已经有来自其他节点或服务的 CID?两个平台都支持直接 pin 而无需重新上传。在 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 请求将 CID 作为自定义元数据头写入存储桶,然后 Filebase 会拉取并 pin 该内容。如果你的思维方式是以 IPFS 为核心而非 S3,IPFS Ninja 以 CID 为优先的工作流更为直接。

参阅 what is IPFS pinning,深入了解 pinning 的重要性以及内容未被 pin 时会发生什么。


客户端上传而不泄露凭证

这是一个常见的架构问题:如何让浏览器上传文件到 IPFS,同时不把 API 密钥暴露给客户端?

Filebase 的做法:在服务端生成一个预签名 S3 PUT URL,返回给客户端,客户端直接 PUT。这是标准 S3 预签名模式,可以正常工作,但需要你自行实现服务端签名端点。

IPFS Ninja 的做法:调用 /token/upload/new(或通过控制台生成)创建签名上传令牌。将该令牌嵌入前端,客户端使用 Authorization: Signed {token}api.ipfs.ninja 发 POST 请求。令牌可设置过期时间,也可随时从控制台吊销。

// 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,希望只替换端点而无需重写上传逻辑。
  • 你存储超大文件,需要可靠的 S3 语义 multipart 上传(尽管 IPFS Ninja 也有大文件上传 API)。
  • 团队在 AWS 上经验深厚,觉得 S3 鉴权比 REST 头更熟悉。

选择 IPFS Ninja,如果:

  • 你希望一次 POST /upload/new 就能立即拿到 CID,无需中间步骤。
  • 你在开发前端优先的应用,需要客户端安全的上传令牌,而不想自建预签名基础设施。
  • 你希望图片优化和访问控制网关开箱即用,而不引入额外服务。
  • 你对价格敏感,$5/mo 的入门价对你项目阶段很重要。

总结

Filebase 对于已深度融入 AWS 生态的团队来说是一款扎实的产品,其 S3 兼容性在对应场景下是真实优势。但对于只想通过简洁 REST API 将文件 pin 到 IPFS 并立即拿到 CID 的开发者而言,S3 层只增加了仪式感,却没有带来实质收益。

IPFS Ninja 将 API 接口保持在最小限度:上传、pin、获取。网关、图片优化和上传令牌功能在你需要时可用,不是强制前置条件。

如需更全面地了解 IPFS Ninja 与其他服务的对比,请参阅 best IPFS pinning services


准备好开始 pinning 了吗? 创建免费账户——500 个文件,1 GB 存储,无需信用卡。


关于本文:本文由 AI 助手使用 IPFS.NINJA 的内容生成工作流起草,经 Nacho Coll 审阅并批准。所有代码示例均已在 IPFS.NINJA 线上 API 上验证。如发现任何错误,请在 https://github.com/ipfs-ninja/feedback 提交 issue。了解更多关于我们如何在内容中使用 AI 以及IPFS.NINJA 背后的团队

返回博客