AngusRepo 是什么:一个制品仓库,涵盖 28 种常见格式,客户端拉取和发布时只改地址

简介: AngusRepo 是一个制品仓库。28 种常见格式可以托管、代理或聚合成一个地址。mvn、npm、docker 仍用原来的命令,改的是仓库地址。制品留在你这次安装里。

AngusRepo 是一个制品仓库,涵盖 28 种常见格式,客户端拉取和发布时只改地址。你自己的包放进 Hosted。公共上游放进代理,第一次拉过之后缓存在这里。同一格式的 Hosted 和代理可以放进仓库组,客户端拉包只配这一个地址。mvn、npm、docker 以及表里其余客户端仍用原来的命令。制品留在你这次安装的磁盘上,可以留在内网。

解决的主要问题

  • Maven、镜像、Python 和 npm 各搭一套仓库,拼在一起还要分别安装、升级和管权限。Nexus、Harbor、pypiserver、Verdaccio 各留一份安装和一套账号。这些格式放进同一个制品仓库,mvn、docker、pip、npm 仍用原来的命令,改的是地址。
  • 构建机拉一次依赖要等很久,换一台机器又要重新下。公共包需要在这里留下缓存,后面的机器走同一个地址。
  • 内部的包靠文件传来传去,每个项目的配置里堆着一长串仓库地址。拉取和发布只改地址。
  • 某个包已经知道有问题,流水线还是能把它拉下来。入库时要能按这条已知问题拦住。

注意: 它不代替这些客户端,也不扫描源代码。仓库里能看的是已经进来的制品有没有已知漏洞和许可证问题。代码安全、密钥和跨仓库的发布门禁在安全产品里做,连接填在「系统 → 安全集成」。仓库组自己不存放文件。发布仍然指向 Hosted,不要把仓库组地址写成发布地址。

主要功能

AngusRepo 功能架构

登录后打开的是「概览」,用来看仓库的存储用量、上传下载,以及安全风险概况。

概览。标题是「概览」,副文案是查看存储用量、上传下载和安全风险概况。主区域是存储使用情况、上传/下载趋势、最近活动和漏洞统计。顶栏有 Explore 和「中文」。左侧是收起后的图标条。

三种仓库。 创建页打开「仓库类型」时,三项的名字是 Hosted、代理、仓库组。选中之后框里显示 Hosted、Proxy、Group,仓库列表的筛选也是这三个英文。

Hosted 存放你发布的包。代理缓存你填写的上游,例如 Maven Central、Docker Hub 或 npm 的公共源。仓库组按成员顺序合成一个拉取地址,自己不存文件。成员谁先谁后,在详情的「成员」里用「上移」和「下移」调整。创建之后仓库名称不能改。

客户端要同时下载和发布时,下载填仓库组或代理的地址,发布填 Hosted 的地址。两个仓库的格式必须相同,而且这个 Hosted 要在仓库组的成员里。只打开其中一个仓库的「接入」时,页面只给出当前仓库自己的地址。代理和仓库组的接入页不会出现发布步骤。

28 种格式。 创建时先选格式。类型下拉里三种都会出现,表里打叉的,选了之后保存会被拒绝,或者这种格式不提供对应能力。路径形状里的主机和仓库名以接入页复制的那一串为准。

格式 客户端 Hosted 代理 仓库组
Maven mvn、Gradle 可以 可以 可以
Docker docker 可以 可以 可以
npm npm、Yarn、pnpm 可以 可以 可以
PyPI pip、twine 可以 可以 可以
NuGet dotnet、nuget 可以 可以 可以
Helm helm 可以 可以 可以
Go go 可以 可以 可以
APT apt-get 可以 可以 可以
YUM yum、dnf 可以 可以 可以
Raw curl 可以 可以 可以
Alpine apk 可以 可以 可以
Ansible ansible-galaxy 可以 可以 可以
Arch pacman 可以 可以 可以
Cargo cargo 可以 可以 可以
Chef knife、Berkshelf 可以 可以 可以
CocoaPods pod 不可以 可以 不可以
Composer composer 可以 可以 可以
Conan conan 可以 可以 见下
Conda conda 可以 可以 可以
CRAN R 可以 可以 可以
Hugging Face huggingface-cli 不可以 可以 不可以
OCI oras、helm 可以 可以 可以
p2 Eclipse、Tycho 不可以 可以 不可以
Pub dart、flutter 可以 可以 可以
RubyGems gem、Bundler 可以 可以 可以
Swift swift、Xcode 可以 可以 可以
Terraform terraform 可以 可以 可以
Vagrant vagrant 可以 可以 可以

CocoaPods 只做代理,不接收 pod repo push,也不能做成仓库组。Hugging Face 和 p2 创建时类型必须选代理,没有发布步骤。Conan 2 是创建时的默认值,三种类型都可以。Conan 1 要单独建仓,创建后不能改,而且不能做成仓库组。CRAN 的 Hosted 和仓库组只接受源码包 {Package}_{Version}.tar.gz,二进制包要直接访问代理仓库。Go 的拉取用 GOPROXY,放进 Hosted 要走上传接口。Cargo 只用 sparse 索引。Composer 只支持 Composer 2。Arch 这一期不签名。

Docker 和 OCI 的路径形状是 /v2/<仓库>/。docker pull 和 oras pull 使用 <HOST>/<仓库>/名字:标签。/v2/ 只出现在 Registry API 里,写进镜像名会找不到仓库。OCI 的仓库组成员可以是 OCI,也可以是已经存在的 Docker 仓库。Docker 成员只返回已有 manifest,不会做格式转换。PyPI 安装走 simple/,发布走 legacy/。Ansible 的路径多一段 /api/v3/。

配置文件和命令里的密码、token、password 填「我的 → 访问令牌」里生成的令牌。用户名仍是登录名。填登录密码会得到 401 invalid_token。流水线如果只访问一个仓库,可以用该仓库的 Deploy Token。Deploy Token 的前缀是 repod_,它不能用来连 MCP。

上传和制品。 侧栏「上传」把文件放进已经建好的 Hosted。侧栏「制品」按仓库查看已经进来的文件。网页上传适合单次放入。日常发布仍走上面的客户端命令。

拦住不能下载的包。 「安全」看已经进仓库的制品有没有已知漏洞和许可证问题。一条发现可以标记修复、抑制或接受风险。扫描策略决定何时检查、检查什么。打开「未通过时拒绝下载」之后,达到阈值的制品不能被下载。关掉时,阈值只用来标记,不拦截。下载被拒绝时,到「漏洞」里处理这条,或调整该仓库策略的阈值。新上传的包可以按策略自动检查。

清理。 策略按时间、数量、大小或名称找出可以删掉的旧制品。按时间填保留时长。按数量填保留的最新版本数。按大小填最大容量。按模式填名称正则,例如 .*-SNAPSHOT$。执行计划可以是手动、每天、每周或每月。

点播放先看到「预览结果」:待删除项目、扫描了多少候选、预计回收的空间,以及将要移除的制品。没有命中时显示「没有待删除的制品」。预览是当时的参考。真正删除以点「执行清理」那一刻的仓库为准。确认框写着此操作将永久删除选定的制品,无法恢复。删掉的文件不能从控制台找回,仓库本身还在。

「试运行」打开后,执行只统计预计结果,不删除文件。试运行也要求策略是启用的。策略最多 100 条。仓库要参与清理,配置里的「启用清理」需开着。下拉里若显示「未开启自动清理」,先到该仓库「配置 → 高级选项」打开它。删除策略只删规则,不删已经留在仓库里的制品。

其余页面。 「分析」看用量趋势。「趋势」看热门制品和热门仓库。「消息」是站内通知,「活动」是操作记录。「成员」管邀请和仓库访问。「系统」里有存储、监控、Webhooks,以及这套环境能看到的 MCP 接入和安全集成。公开仓库可以未登录打开 /explore,顶栏的 Explore 进的就是这个只读门户。

应用场景

  • 第二条流水线还要再去公网拉一遍刚刚下过的依赖。 建一个 Maven 代理,上游填你现在用的公共源。仓库详情打开「接入」,把地址写进开发机和流水线的 settings.xml 或 Gradle 镜像,密码栏填访问令牌。第一台机器拉过的构件留在代理里,下一台用同一个地址。发布自己的构件时另建 Maven Hosted,mvn deploy 指向它,不要指向代理。

  • 每个构建文件里各写着一串仓库地址,内部包和公共包对不上顺序。 建一个 Maven Hosted 和一个 Maven 代理,放进同一个 Maven 仓库组。拉包只写仓库组的地址,发布只写 Hosted 的地址,并且这个 Hosted 已经是组成员。要优先命中内部包,在「成员」里把它上移到代理前面。npm 和 Docker 各自再建组,格式不能混在一个组里。只打开仓库组的接入页时,看不到发布步骤,这是类型决定的。

  • 已经标过有问题的构件,下一次构建仍能把它拉下来。 在该仓库的扫描策略里打开「未通过时拒绝下载」,阈值按你要拦的级别填写。达到阈值的制品,客户端下载会被拒绝。到「漏洞」里把这条标成修复、抑制或接受风险,或者把阈值改到和策略一致,再让客户端重试。还没扫完的制品不要当成已经通过。

  • 快照和层缓存把磁盘写满,直接删又怕删掉还在用的版本。 按名称或时间建一条清理策略,例如只匹配 .*-SNAPSHOT$。先点播放看「预览结果」:待删除项目、候选数量和预计回收的空间。打开「试运行」时只统计,不删除。确认框写明永久删除、不能从控制台恢复。策略停用,或仓库显示「未开启自动清理」时,不要执行。删除策略本身不会删掉仓库里的制品。

  • 流水线用个人登录密码推包,人和机器分不开。 接入页上用户名是登录名,密码位填「我的 → 访问令牌」。填登录密码会得到 401 invalid_token。这条流水线如果只访问一个仓库,可以用该仓库的 Deploy Token,前缀是 repod_。这个令牌不能用来连 MCP。

核心亮点

  • 命令不换,只改地址。 少做的那一步,是为了私服再学一套发布工具。mvn、npm、docker、pip、helm 仍是原来的命令。开发机和流水线打开同一个仓库的「接入」,复制那一串地址。用户名是登录名,密码位是访问令牌。登录密码填进去得到 401 invalid_token。

  • 第一屏是概览,不是菜单树。 左侧菜单收起后,只剩一列图标。标题是「概览」。能读到的区块是存储使用情况、上传/下载趋势、最近活动、漏洞统计。存储按格式分开,画面上能看到 Maven、Docker、NPM、PyPI、Raw 这些名字。顶栏有 Explore、「中文」和主题开关。容量和次数会变,不在这里当功能说明。

  • 一个组只留一个拉取地址。 仓库组按成员顺序回答拉取,自己不存文件。项目配置里不必再列出 Hosted 和每一个上游。发布仍指向 Hosted。只打开仓库组的接入页,看不到发布步骤,这是类型决定的,不是页面漏了。

  • 删之前先有一份预览。 清理策略的播放按钮先给出待删除名单和预计回收的空间。试运行只统计、不删除。确认框写明永久删除、不能从控制台恢复。策略停用时不能执行。仓库没开「启用清理」时,下拉里是「未开启自动清理」。

  • 达不到阈值的包下不来。 「未通过时拒绝下载」打开后,检查结果达到阈值的制品会被拒绝下载。关掉时只做标记。处置在「漏洞」里完成,不需要到另一份表格里对包名。

  • 三种格式不能按 Hosted 来建。 CocoaPods、Hugging Face、p2 只有代理。选 Hosted 或仓库组后保存会被拒绝。CocoaPods 也不接受 pod repo push。其余二十五种里,Conan 1 单独不能进仓库组。建仓时看清类型,比装完客户端再发现地址不存在要早。

部署方式

本包安装 AngusRepo,并带上门户。浏览器先打开门户,再打开本产品。有 Docker 时走安装向导,默认是 Docker Compose。没有 Docker,走主机 ZIP。安装机不能访问公网,走离线安装。Kubernetes 的 Helm 目前是预览,不要当成生产安装。

生产用 Linux x86_64。试用可以用 macOS。docker compose version 要能打出版本号。macOS 用当前登录用户跑向导,不要加 sudo。Linux 要装到 /opt/angus,先把目录所有者改成当前用户。

80 端口空闲。要 HTTPS 时 443 也空闲。8804 和 8801 是应用自己的端口,反向代理会转发,不必对公网开放。gm.<你的域名> 和 repo.<你的域名> 解析到这台机器。机器要能访问 https://repo.anguskit.com 才能下载安装包。解压目录是 AngusRepo-1.0.0。

unzip <安装包>.zip
cd AngusRepo-1.0.0
./install.sh

Windows 在 Docker Desktop 里执行 .\install.bat。向导提示是英文。

向导提示 你输入什么 它决定什么
Install mode 回车 Docker Compose。没有 Docker 时改用主机 ZIP
Access 输入 2 自带反向代理和子域名。回车留在按端口访问
反向代理 回车 Caddy。Let's Encrypt 只能配 Caddy
证书 必须输入数字,没有默认 1 已有 PEM,2 自签,3 Let's Encrypt,4 只用 HTTP
数据库 回车 Compose 在本机起 MySQL 8
安装目录 回车 当前解压目录,即 $ANGUS_HOME
根域名 example.com 这种根域 填 repo.example.com 会多拼一层。IP 或 localhost 会停下

管理员密码至少 8 位。不要沿用向导给出的公开默认数据库口令。数据目录只在第一次创建时采用这个口令。之后只改配置文件、不改库里已经存下的口令,应用会连不上。默认字符串不写在这里。

证书选 1、2 或 3,打开 https://gm.<你的域名>/,再打开 https://repo.<你的域名>/。选 4 则两边都是 http://。自签时浏览器会警告。当前安装包在选 Let's Encrypt 时,仍会为七个产品子域申请证书,即使这台机器只装了本产品和门户。那七个名字都要解析到本机,或者改用通配符证书。只走 HTTP 时选 4,不受这条限制。

成功是日志末尾两行:doctor: OK 和 Install finished. 日志在 $ANGUS_HOME/logs/install.log。之后执行 ./bin/angusctl.sh doctor。客户端真正要配的地址,以仓库「接入」页复制的那一串为准,不要用安装向导里的内部端口去猜。

MCP 接入

入口在「系统 → MCP 接入」。经网关的地址是 https://<gateway-host>/repo/mcp。私有化没有产品前缀时,改为 https://<repo-host>/mcp。应用默认端口是 1809,经反向代理访问时不必把这个端口暴露到公网。

令牌是门户用户访问令牌,客户端为 xcan_tp。放进环境变量 ANGUS_REPO_TOKEN。不要写进仓库。以 repod_ 开头的 Deploy Token、别的产品的令牌、以及 OAuth 刷新令牌,都会得到 HTTP 401,响应里没有工具列表。

请求头是 Authorization: Bearer,值用上面的环境变量。只支持 stdio 的宿主用 npx 包 @anguskit/mcp,参数 --product repo。这个进程读的是 ANGUS_TOKEN 和 ANGUS_BASE_URL,和 HTTP 配置里的 ANGUS_REPO_TOKEN 不是同一个名字。ANGUS_BASE_URL 填网关根,不要带 /repo/mcp。

Repo MCP 全部只读。没有晋级、发布、删除、执行清理或签发令牌,也不会走 /maven、/npm、/v2 这些协议路径。助手可以查坐标、依赖、漏洞计数和清理预览。真正拉包、推镜像仍用各语言客户端。未设置 ANGUS_MCP_ENABLED 时端点是打开的。关掉之后进程没有 /mcp,控制台和协议路径不受影响。写开关固定关闭,不要假设存在执行清理的工具。

系统管理员或持有全部只读权限的账号,应看到恰好 8 个以 repo_ 开头的工具。只有制品查看权限时,通常能看到查找、定位、依赖和制品安全这 4 个,没有仓库、评分和清理预览。指定一条已经存在的 Maven 坐标,调用 repo_locate_version。返回的 id 是十进制字符串。多条主文件时出现 ambiguous 和候选,而不是任选一条。每个账号每分钟最多 30 次合法 tools/call。

SDK 接入

官方 REST SDK 版本 1.0.0。Java 构件 angus-repo-sdk,包名 cloud.xcan.angus.sdk.repo。npm 是 @anguskit/angus-repo-sdk。PyPI 是 angus-repo-sdk。Go 模块是 github.com/anguskit/angus-sdk-repo。没有官方 NuGet 包。这里的 NuGet 包是调用接口的 SDK,和上面那种 NuGet 制品格式不是同一个东西。

认证头是 Authorization: Bearer <access_token>。网关 Base URL 是 https://bj-c1-prod-apis.anguskit.com/repo。路径前缀 /api/v1/**。冒烟请求是 GET /api/v1/repositories/stats。列仓库是 GET /api/v1/repositories。字段以 API 参考里的 OpenAPI 为准。/innerapi 不在官方 SDK 里。

发布和拉取不用这个 SDK。Maven、npm、Docker、pip 等仍走协议路径。SDK 管的是仓库和制品的 REST。

FAQ

拉包要换成新命令吗?
不用。命令保持原样,地址改成该仓库「接入」页上的那一串。密码位填访问令牌,不是登录密码。

仓库组地址能不能用来发布?
不能。仓库组只回答拉取,自己不存文件。发布指向同格式的 Hosted,并且这个 Hosted 要在组成员里。

CocoaPods、Hugging Face、p2 为什么建不了 Hosted?
这三种只有代理。选 Hosted 或仓库组后保存会被拒绝。它们也没有发布步骤。

清理会不会一点就删?
不会。播放按钮先给预览名单。试运行只统计。点「执行清理」之后,删除的文件不能从控制台恢复。

MCP 能不能帮我 docker push?
不能。MCP 只读元数据,不走 /v2 或其他协议路径。推拉仍用原来的客户端。repod_ 开头的 Deploy Token 连不上 MCP。

从哪登录?
先开 gm.<你的域名>,再开 repo.<你的域名>。公开仓库的只读浏览是顶栏 Explore,对应 /explore。

参考文章

相关文章
|
6天前
|
JavaScript API iOS开发
DeepSeek Harness下载、安装、配置一篇搞定(2026整理,送常用插件)
DeepSeek Harness(DSH)是DeepSeek于2026年开源的MIT协议AI Agent框架,支持插件化组装模型、工具、沙箱与UI,兼容主流大模型。本文提供免Node.js的桌面端安装包(Win/macOS),含详细图文教程及热门插件推荐。
3040 27
|
1天前
|
云安全 人工智能 安全
|
6天前
|
Linux 开发工具 iOS开发
Codex保姆级教程(下载+安装+登录+使用,含所有版本,2026最新)
Codex是OpenAI推出的开源AI编程智能体,本地运行,可理解整个代码库,支持自然语言指令改代码、执行命令、跑测试、修Bug,兼容Win/macOS/Linux。(239字)
|
7天前
|
iOS开发 Docker MacOS
【2026实测】Docker Desktop下载、安装、汉化、配置教程(附官网安装包)
Docker Desktop 是 Docker 官方推出的桌面容器管理工具,集成引擎、CLI、图形界面与 Kubernetes,支持 Win/macOS/Linux。2026 最新版 4.88.1 强化 ARM 原生运行、镜像加速及资源可视化,附中文汉化与国内镜像配置指南。
1336 5
|
云安全 安全 网络安全
|
7天前
|
安全 算法 定位技术
《高性价比人生指南》完整原版:普通人用最少的资源,过好这一生的底层逻辑~How To Live Better
📖《高性价比人生指南》是一份基于实证、拒绝焦虑的生存手册,倡导以“人生时薪”为视角,重新计算时间、金钱与精力的成本与收益。它不承诺逆袭,只教人算清账:省下的钱若耗掉时间便亏;买体验比买物品更值;睡眠是最高杠杆的健康投资;关系贵在情绪价值而非表面热络;学习重在改变行为而非自我安慰。核心理念:用低成本、高回报的微小行动,换取长期的选择权——不是成为谁,而是掌控自己人生的主动权。
|
20天前
|
人工智能 API 开发工具
DeepSeek Harness 神插件:白嫖 13 家大厂模型
`dsh-our-free-model` 是 DeepSeek Harness 神级插件:零配置、零API Key、零账号,聚合13家大厂免费模型(含DeepSeek V4.1 Flash、Kimi K3等),支持本地网关、用量看板与自动降级,真正实现“白嫖即用”。
3466 53
|
12天前
|
人工智能 JSON Linux
【保姆级】ComfyUI部署教程(下载+安装+配置+工作流,2026最新)
ComfyUI 是一款开源节点式AI生成工具,支持图像、视频、音频及3D内容创作。通过拖拽连线组合模型加载、提示词、采样等节点,构建可复用、易修改的工作流,兼容SD1.5、SDXL、Flux、Qwen Image等主流模型。

热门文章

最新文章