Rogee b2b813c389
Some checks failed
docker-release / build-and-push (push) Failing after 9m50s
feat: update Dockerfile
2025-11-14 14:35:47 +08:00
2025-11-14 12:11:44 +08:00
2025-11-14 14:18:24 +08:00
2025-11-14 12:11:44 +08:00
2025-11-14 12:11:44 +08:00
2025-11-14 12:11:44 +08:00
2025-11-14 12:11:44 +08:00
2025-11-14 14:18:24 +08:00
2025-11-14 12:11:44 +08:00
2025-11-14 12:11:44 +08:00
2025-11-14 12:11:44 +08:00
2025-11-14 14:35:47 +08:00
2025-11-14 12:11:44 +08:00
2025-11-14 12:11:44 +08:00
2025-11-14 12:11:44 +08:00

any-hub

any-hub 是一个面向个人与小型团队的多仓库代理,主打匿名访问、命令行部署与单一 config.toml 控制平面。当前阶段已交付 Phase 1构建 Host→Hub 路由、磁盘缓存与示例代理。

单仓代理 (Phase 1)

Phase 1 的 HTTP 服务与磁盘缓存能力详见 specs/002-fiber-single-proxy/spec.mdplan.md。目标是:

  • 构建 Fiber HTTP 服务 + Host 驱动(共享 ListenPort)的 Hub Registry使 docker.hub.localnpm.hub.local 等域名在同一端口内路由到独立上游。
  • 实现 StoragePath/<Hub>/<path> 目录下的磁盘缓存,依靠文件 mtime + 上游 HEAD 请求完成动态标签的再验证。
  • 提供 Docker/NPM/PyPI 示例配置、quickstart、测试桩运行 go test ./tests/integration 即可验证代理/缓存流程。

随着 Phase 1 推进,cmd/any-hub 将接入 server/cache/quickstart 章节,便于复用 Phase 0 的配置与日志骨架。

ListenPort 与凭证迁移指南

  1. 全局端口:在配置全局段声明 ListenPort = <port>,所有 Hub 共享该端口;旧的 [[Hub]].Port 字段已弃用,any-hub --check-config 会在检测到遗留字段时直接失败。
  2. Hub 类型:为每个 [[Hub]] 添加 Type = "docker|npm|go|pypi",驱动日志中的 hub_type 字段并预留协议特定行为;非法值会被校验阻断。
  3. 可选凭证:如需突破上游限流,成对提供 Username/Password。CLI 仅在这两个字段同时出现时注入 Basic Auth并在日志中输出掩码形式的 auth_mode=credentialed
  4. 验证命令:使用 any-hub --check-config --config ./config.toml 快速确认迁移是否完成,成功时日志会显示 listen_porthub_type 等字段。

凭证配置示例

[[Hub]]
Name = "secure"
Domain = "secure.hub.local"
Upstream = "https://registry.corp.local"
Type = "npm"
Username = "ci-user"
Password = "s3cr3t"
  • CLI 日志不会打印明文凭证,而是输出 credentials=["secure:credentialed"],可在 any-hub --check-config --config secure.toml 中验证。
  • 建议结合环境变量或密钥管理器生成 config.toml,并通过 chmod 600 或 CI Secret 注入限制可见范围。

快速开始

  1. 复制 configs/config.example.toml 为工作目录下的 config.toml 并调整 [[Hub]] 配置:
    • 在全局段添加/修改 ListenPort,并从每个 Hub 中移除 Port
    • 为 Hub 填写 Type,并按需添加 Username/Password
    • 根据 quickstart 示例设置 DomainUpstreamStoragePath 等字段。
  2. 参考 specs/003-hub-auth-fields/quickstart.md 完成配置校验、凭证验证与日志检查。
  3. 常用命令:
    • any-hub --check-config --config ./config.toml
    • any-hub --config ./config.toml
    • any-hub --version

示例代理

  • configs/docker.sample.tomlconfigs/npm.sample.toml 展示了 Docker/NPM 的最小配置,复制后即可按需调整 Domain、Type、StoragePath 与凭证。
  • 运行 ./scripts/demo-proxy.sh docker(或 npm)即可加载示例配置并启动代理,便于快速验证 Host 路由与缓存命中。
  • 示例操作手册、常见问题参见 specs/003-hub-auth-fields/quickstart.md

CLI 标志

Flag 描述
--config, -c 指定配置文件路径,优先级高于 ANY_HUB_CONFIG
--check-config 仅执行配置校验并退出,退出码区分成功/失败
--version 打印语义化版本信息并立即退出

更多细节可查阅 contracts/cli-flags.md

优先级:--configANY_HUB_CONFIG ⬆ 默认 ./config.toml--version 会短路其他逻辑,--check-config 则在日志中记录 action=check_config 并返回退出码。

配置校验错误示例

$ any-hub --check-config --config broken.toml
Config.ListenPort: 必须在 1-65535
Hub[npm].Type: 不支持的值 "rubygems"

错误消息以 字段路径: 原因 形式展示,可根据 quickstart.md 的“常见错误排查”章节快速定位。

Description
No description provided
Readme 595 KiB
Languages
Go 84.6%
Shell 15.1%
Dockerfile 0.2%
Makefile 0.1%