2 个版本
0.2.1 | 2024年2月11日 |
---|---|
0.2.0 | 2024年1月20日 |
#432 在 开发工具
64KB
1.5K SLoC
Quartermaster
一个非常适合私有仓库的简单 Cargo 替代注册表。
为什么?
如果你厌倦了为私有包使用 git 依赖,现在只想托管自己的 cargo 注册表,那么 Quartermaster 就是为你准备的。
功能
- 本地文件系统或基于 S3 的后端存储 - 无需数据库
- 非常简单的基于令牌的认证
非功能
如果你需要任何这些功能,你可能最好看看替代方案。
- Web UI
- 支持 Rust 1.74 之前的版本
- Git 索引协议(仅支持稀疏索引)
限制
Quartermaster 仍处于早期开发阶段,以下是一些计划实现但尚未完成的功能。欢迎和感激贡献!
- 无 HTTPS/SSL:目前,Quartermaster 仅支持 HTTP。 不要 将 Quartermaster 暴露给公网。 请 使用正确配置的反向代理处理 SSL 终止,例如 NGINX,或使用 VPN,例如 https://www.wireguard.com/ 或 https://openvpn.net/,或者两者都使用!
- 细粒度认证:目前,有效的令牌对仓库拥有完全的读写访问权限。
- 用户/所有者端点:目前,令牌是全球性的,所有包都属于无人拥有。各种
owner
端点尚未实现。 - 更多种类的强大认证方法(例如 OpenID)。我目前还没有需求。
- 跨平台支持:虽然从理论上讲,没有阻止 Quartermaster 在其他平台(如 Windows、MacOS 或 BSD)上运行,但我只在其上进行了测试,配置的默认值反映了这一点。
- CLI 管理工具:除了 Web UI,我计划添加 CLI 工具来执行无法通过 Cargo API 执行的注册表维护任务(例如完全删除包、管理认证)
安装
Docker
如果您希望以容器方式运行 Quartermaster,可以在 DockerHub 上找到镜像。使用 Docker 时配置的首选方法是环境变量,但仍然支持配置文件。
docker pull palladinium/quartermaster
Cargo
您可以使用 cargo 本身编译 Quartermaster。
cargo install --frozen quartermaster
配置
Quartermaster 使用优秀的 config crate 来支持通过 toml
配置文件或环境变量进行配置,或两者的组合。匹配的环境变量名称通过使用双下划线作为分隔符来构造,例如配置选项 foo.bar_baz.boz
可以通过环境变量 QUARTERMASTER__FOO__BAR_BAZ__BOZ
等效设置。可以通过逗号分隔单个值来定义值数组。环境变量将覆盖配置文件中设置的值。
默认情况下,Quartermaster 期望以系统服务运行,并将读取 /etc/quartermaster/config.toml
,但可以通过设置环境变量 QUARTERMASTER_CONFIG_FILE
来覆盖此行为。
在使用配置文件设置秘密值(如身份验证令牌和 S3 凭据)时请小心。配置文件应具有限制性权限,以避免将秘密暴露给系统上的其他用户。
有关单个选项的更多文档,请参阅示例配置。
许可
本项目及其所有贡献均采用 GPL 通用公共许可证 v3 许可。
依赖关系
~25MB
~464K SLoC