查看: 1|回复: 0

可以下线 Nexus 了:纯开源制品仓库 kkRepo v0.9.0 发布,新增 Alpine、Hugging Face Models 与全局搜索

[复制链接]

9

主题

6

回帖

39

积分

新手上路

积分
39
发表于 4 天前 | 显示全部楼层 |阅读模式
上次在 V2EX 跟大家分享了 kkRepo v0.8.0 ,这次 v0.9.0 也正式发布了。

这一版不只是继续增加仓库格式,还补上了全局制品搜索、版本更新提醒、代理重定向白名单,以及一批界面和稳定性改进。

项目地址:https://github.com/klboke/kkRepo

v0.9.0 Release:https://github.com/klboke/kkRepo/releases/tag/v0.9.0

kkRepo 是什么?

kkRepo 是一款社区驱动、完全开源的自托管制品仓库,目标是解决 Sonatype Nexus Community Edition 在格式支持、容量限制、迁移和高可用部署等方面的痛点。

项目围绕 Nexus 的客户端协议、权限模型和 /repository/<repo>/... URL 布局实现兼容,并提供存量仓库、制品、用户、角色和权限迁移能力,尽量让原有客户端配置与 CI 流程保持不变。

目前已经支持 20+ 种仓库格式,包括:

Maven 、npm 、PyPI 、Go 、Helm 、Cargo/Rust 、Dart/Pub 、Composer/PHP 、Terraform 、Swift Package Registry 、Ansible Galaxy 、Conda 、APT/Debian 、Conan 2 、Alpine/APK 、Hugging Face Models 、Docker/OCI 、NuGet 、RubyGems 、Yum 和 Raw 。

不同格式按协议能力支持 hosted 、proxy 或 group 仓库。

v0.9.0 主要更新

1. 新增 Alpine / APK 仓库

本次新增 Alpine/APK 的 hosted 、proxy 和 group 三种仓库类型:

Hosted 支持 APK v2 软件包发布和签名索引生成

Proxy 支持上游索引透传,以及验签后重新签名

Group 支持按成员顺序统一解析多个 Alpine 仓库

支持 Browse 、Search 、Cleanup 和安全扫描

使用真实 apk 客户端验证 update、search、fetch、add 和 upgrade

支持从经过验证的 Nexus 3.94 数据结构迁移

2. 新增 Hugging Face Models 代理仓库

现在可以把 kkRepo 作为团队内部的 Hugging Face Models 代理:

支持通过 HF_ENDPOINT 接入

支持 hf download、huggingface_hub 和 snapshot_download

支持 Transformers 与 Diffusers 下载模型

服务端桥接 Git LFS 与 Xet 存储

按 commit 固定并缓存模型文件,避免 mutable revision 带来的不确定性

支持多副本协调、Browse 、Search 、Cleanup 和安全扫描

当前版本聚焦 Models proxy ,不包含 hosted/group 、Datasets 、Spaces 和推理 API 。

3. 新增带权限校验的全局制品搜索

Browse 和 Admin 现在都可以跨仓库搜索制品:

搜索前校验仓库权限和 Content Selector

无权限的仓库与制品不会出现在结果中

使用稳定的 keyset pagination

针对大规模 MySQL 数据做了自适应查询优化

修复了 MySQL FULLTEXT 无法匹配短词坐标的问题

这项功能解决了仓库数量较多时,需要先进入某个仓库才能查找制品的问题。

4. 其他改进

新增基于 GitHub Release 的版本更新提醒

Proxy 仓库可以配置可信的重定向目标域名,同时保留全局 SSRF 防护

统一节点本地 TTL 缓存抽象,继续保持多副本下缓存可丢失、可重建

优化 Browse 仓库详情、OIDC/LDAP 、账号、登录、顶部导航和欢迎页

修复 URL 中经过百分号编码的 + 被错误解析为空格的问题

修复长代理地址写入审计字段时可能导致 MySQL 请求失败的问题

现有核心能力

除仓库格式外,kkRepo 目前还支持:

Nexus 存量仓库、制品、用户、角色和权限迁移

Local 、LDAP 、OIDC 认证与细粒度权限管理

CycloneDX SBOM 、漏洞扫描、策略、豁免和下载阻断

面向全部仓库格式的 Cleanup Policy

Prometheus 指标和 Grafana 面板

MySQL 或 PostgreSQL 元数据存储

OSS 、S3 和 File blob storage

JVM 与 GraalVM Native 两种运行时

多副本高可用部署

按仓库配置 HTTP 或 SOCKS5 出站代理

Native 版本通常约 1 秒启动就绪,内存占用低于 200 MB 。

快速体验

机器上安装好 Docker 与 Docker Compose 后,执行:

curl -fsSL https://raw.githubusercontent.com/klboke/kkrepo/main/scripts/quickstart.sh | bash

启动 Native 版本:

curl -fsSL https://raw.githubusercontent.com/klboke/kkrepo/main/scripts/quickstart.sh | KKREPO_RUNTIME=native bash

启动后访问:

管理控制台:http://127.0.0.1:19090/admin/

用户侧浏览器:http://127.0.0.1:19090/browse/

健康检查:http://127.0.0.1:19091/actuator/health

首次进入页面时,在 UI 中创建 Local/admin 管理员密码。

Quickstart 默认使用 File blob storage ,适合本地试用;生产环境建议使用独立的 MySQL/PostgreSQL 和 OSS/S3 。

容器镜像:

ghcr.io/klboke/kkrepo:0.9.0
ghcr.io/klboke/kkrepo:0.9.0-native
ghcr.io/klboke/kkrepo-scanner:0.9.0

均提供 Linux AMD64 和 ARM64 镜像。

从 v0.8.0 升级

v0.8.0 的 MySQL 和 PostgreSQL 部署可以通过 Flyway V46–V48 原地升级。

升级前请同时备份关系数据库和 blob store ,并等待数据库迁移完成后再恢复流量。新 schema 应用后,不要继续混合运行 v0.8.0 与 v0.9.0 实例。

组件数据量较大的部署,建议在低 I/O 时段执行 V47 索引迁移。

项目目前仍处于 1.0 之前,生产升级前请先阅读完整 Release Notes 。

如果你正在使用 Nexus ,也欢迎拿真实仓库和客户端测试 kkRepo 。遇到兼容性问题或缺少的仓库格式,可以直接在 GitHub 提 Issue 。

如果项目对你有帮助,也欢迎 Star 、反馈和参与贡献。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖
返回顶部