#cargo-registry #registry #cargo #private #local-filesystem #suitable #registries

app quartermaster

一个非常适合私有仓库的简单替代注册表

2 个版本

0.2.1 2024年2月11日
0.2.0 2024年1月20日

#432开发工具

GPL-3.0 许可证

64KB
1.5K SLoC

Quartermaster

t Crates.io

一个非常适合私有仓库的简单 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