FerroRepo
Rust-native 通用制品仓库
何时收回成本?
回收周期取决于成本项目和替换范围
该产品的回收周期取决于您当前的 AWS 支出、替换范围和运行环境。请使用账单模拟器识别匹配的成本项目并获取粗略节省估算。
一个 Rust-native 通用制品仓库,以单个自包含二进制文件运行,并支持 Sonatype Nexus Repository 3 和 JFrog Artifactory 的 wire protocol,因此现有 Maven、npm、pip、cargo、docker 和 helm 客户端无需修改即可使用。无需 JVM,也无需运维外部数据库(嵌入式 SQLite + 本地卷或对象存储),启动时间远低于一秒。
经典 Nexus 或 Artifactory 部署在提供单个制品前,就需要 JVM、数 GB heap 和外部数据库;FerroRepo 的单二进制模式用一个加固二进制文件替代这些组件,并以自包含 AMI 交付。v0.1.0 完整接入 18 种包协议中的 12 种,并带有 in-tree 一致性测试 — Maven、npm、OCI / Docker Registry v2、PyPI(PEP 503 系列)、Cargo(sparse index)、Go module proxy、Raw/Generic、NuGet v3、RubyGems、Helm(classic + OCI)、APT 和 YUM/DNF — 另外提供 Nexus REST v1 和 Artifactory 兼容的管理接口。存储采用分层(hot/warm/cold)并带内容寻址去重,支持可插拔的 S3 / GCS / Azure / MinIO blob 后端。默认启用认证:允许匿名读取,但所有写入和管理操作都需要已认证主体。
面临挑战
传统的制品仓库如 Sonatype Nexus Repository 3 和 JFrog Artifactory 在服务单个制品之前,就需要 JVM、数 GB 的堆内存以及外部数据库才能运行。它们启动缓慢且带来了切实的运维开销。团队需要一个更轻量、更易于运行的仓库,同时保持现有的 Maven、npm、pip、cargo、docker 和 helm 工具链不变。
工作原理
- 1
启动单个自包含二进制文件
FerroRepo 作为单个进程运行,无需 JVM 和外部数据库,将元数据持久化到嵌入式 SQLite,并将 blob 持久化到本地卷或对象存储。它在小型实例上启动时间远低于 1 秒,并作为一个加固的、自包含的 AMI 交付。
- 2
现有客户端无需修改即可指向它
FerroRepo 支持 Nexus Repository 3 和 Artifactory 的在线(on-the-wire)HTTP 协议,因此 Maven、npm、pip、cargo、docker、helm 和 apt/yum 客户端无需修改配置即可直接指向它。v0.1.0 已完全接入 18 种协议中的 12 种,并附带内置(in-tree)的一致性测试。
- 3
分层存储并对 blob 进行重复数据删除
存储采用分层设计(热/温/冷),并通过内容寻址进行 blob 重复数据删除。利用 object_store,blob 后端可在 S3 / GCS / Azure / MinIO 之间进行插拔替换。默认开启身份验证 —— 允许匿名读取,但所有写入和管理操作都需要具有正确权限范围的已验证主体。
产品亮点
Nexus 3 + Artifactory wire-compatible — 现有构建工具(Maven / npm / pip / cargo / docker / helm)无需修改即可使用。
单一二进制文件,无需 JVM 和外部 DB;亚秒级启动,支持 SQLite + 可插拔 S3 / GCS / Azure / MinIO blob 存储。
18 种协议中已有 12 种接入并带一致性测试;默认启用 auth(匿名读,认证写)。
包含内容
- 基于 Amazon Linux 2023 的自包含 AMI(Graviton / arm64,运行在 t4g、c7g、m7g 和 r7g 类实例上)
- 无需 JVM 和外部数据库的单二进制文件服务器(嵌入式 SQLite 存储元数据,本地卷或对象存储存放 blob,启动时间低于 1 秒)
- 完全接入了 18 种协议中的 12 种(Maven、npm、OCI / Docker Registry v2、PyPI (PEP 503 家族)、Cargo 稀疏索引(sparse index)、Go 模块代理(module proxy)、Raw/Generic、NuGet v3、RubyGems 紧凑索引(Compact Index)、Helm classic + OCI、APT、YUM/DNF),外加兼容 Nexus REST v1 和 Artifactory 的管理界面
- 分层的热/温/冷存储,带内容寻址的 blob 重复数据删除
- 通过 object_store 可插拔替换的 S3 / GCS / Azure / MinIO blob 后端
- 默认开启身份验证(允许匿名读取;所有写入和管理操作均需身份验证;支持内置用户或 OIDC 联合身份验证;在首次启动时为每个实例生成唯一的随机管理员密码)
- 来自 abyo software 的支持([email protected],一个工作日内首次响应;通过 Private Offer 提供的 Enterprise 级别包含 24/7 SLA,且针对 Critical 严重级问题提供 1 小时响应)
适用场景
希望将 Nexus 或 Artifactory 替换为无需 JVM 和外部数据库即可运行的单二进制文件的团队
需要一个能够让现有的 Maven、npm、pip、cargo、docker 和 helm 客户端保持配置不变即可运行的、网络协议兼容(wire-compatible)的制品仓库
适用于 CI/CD 管道的快速启动、低开销单节点包注册表
运行一个适合公共镜像的存储库,允许匿名读取,同时通过身份验证保护写入
常见问题
支持哪些包生态系统?
v0.1.0 已完全接入 18 种协议中的 12 种,并附带 in-tree 一致性测试:Maven、npm、OCI / Docker Registry v2、PyPI(PEP 503 系列)、Cargo(sparse index)、Go module proxy、Raw/Generic、NuGet v3、RubyGems(Compact Index)、Helm(classic + OCI)、APT 和 YUM/DNF。其余 6 种(Conan、Conda、CRAN、Hex、CocoaPods、Bazel)已声明在规划范围内,目前返回 501。老实说,这些未实现的协议目前还无法工作。
真的不需要 JVM,也不需要外部数据库吗?
是的。FerroRepo 作为无 JVM 的单进程运行,将元数据持久化到嵌入式 SQLite 数据库中,并将 blob 持久化到本地卷或对象存储中。无需运行任何外部数据库。传统的 Nexus 或 Artifactory 在提供单个制品之前需要 JVM、数 GB 的堆内存以及外部数据库,而 FerroRepo 用一个经过加固的单二进制文件取而代之,在小型实例上启动时间远低于 1 秒。
存储是如何组织的?
存储采用热/温/冷分层,并通过内容寻址进行 blob 重复数据删除。blob 后端可以通过 object_store 插拔切换 S3 / GCS / Azure / MinIO,而元数据则保存在嵌入式 SQLite 中。
身份验证是如何工作的?
身份验证默认开启,采用默认安全的策略。允许匿名读取,而所有写入和管理操作都需要具有正确范围的已认证主体。支持内置用户或与外部 OIDC 发行商联合,并在首次启动时生成实例唯一的随机管理员密码 — 绝不使用默认或共享密码。
它可以跨多个节点扩展吗?
目前不行。支持的拓扑是单节点(单二进制),使用 SQLite 元数据以及 S3 上的 blob 层。水平扩展的多节点 / Postgres 元数据拓扑已在路线图中,目前尚不支持。老实说,目前不提供多节点配置。
为什么更便宜
假设在 us-east-1 为 50 名开发者运行内部 artifact 仓库, 保存 3 TB Maven / npm / Docker 制品。
- m5.xlarge 按需
- $175 / 月
- RDS PostgreSQL (db.t3.medium)
- $150 / 月
- S3 存储 (3 TB)
- $70 / 月
- 月度合计
- $395 / 月
- FerroRepo 实例 (t3.medium + 软件费)
- $80 / 月
- S3 存储 (2 TB, 去重后)
- $47 / 月
- 月度合计
- $127 / 月
按开发者数量选择 FerroRepo 实例
| 团队规模 | 推荐实例 | FerroRepo 实例费用 | 月度合计对比 Nexus 3 |
|---|---|---|---|
| ~10 名开发者 | t3.small | $40 / 月 | $55 / 月 (Nexus $300, −82%) |
| ~50 名开发者 | t3.medium | $80 / 月 | $127 / 月 (Nexus $395, −68%) |
| ~500 名开发者 | m5.large | $120 / 月 | $350 / 月 (Nexus $700, −50%) |
仅供参考。自托管 Nexus 3 采用典型的 m5.xlarge + RDS PostgreSQL (db.t3.medium) + S3 卸载架构。与付费的 JFrog Artifactory 相比, 仅许可证费用就达 $3k–$10k/月, 因此此处以 Nexus 3 OSS 作为基线。FerroRepo 是无 JVM 和外部 DB 的单一二进制, blob 卸载到 S3 并按内容哈希去重。
计费模式
按小时收取软件费用 + EC2(t4g / c7g / m7g / r7g 级,Arm)。按实例类型计量。