kkRepo v0.9.0 加上 Alpine/APK 和 Hugging Face 代理,替掉 Nexus CE 前先看这几处差异
- 项目地址:https://github.com/klboke/kkRepo
- Release:https://github.com/klboke/kkRepo/releases/tag/v0.9.0
kkRepo 是一款社区驱动、完全开源的自托管制品仓库,目标是解决 Sonatype Nexus Community Edition 在格式支持、容量限制、迁移和高可用部署上的问题。它围绕 Nexus 的客户端协议和 /repository//... URL 布局做兼容,并提供存量仓库、用户、角色和权限的迁移能力,原有客户端配置与 CI 流程尽量不用改。
支持的仓库格式
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,共 20+ 种,每种都支持 hosted / proxy / group 三种仓库类型。
v0.9.0 新增的两类仓库和一个搜索
Alpine/APK:hosted / proxy / group 三种类型齐备。Hosted 支持 APK v2 软件包发布和签名索引生成;Proxy 支持上游索引透传,也支持验签后重新签名;Group 按成员顺序统一解析多个 Alpine 仓库。Browse / Search / Cleanup 和安全扫描都覆盖,用真实 apk 客户端验证过 update/search/fetch/add/upgrade,并支持从 Nexus 3.94 的数据结构迁移。
Hugging Face Models 代理:通过 HF_ENDPOINT 接入,支持 hf download、huggingface_hub、snapshot_download,也能给 Transformers 与 Diffusers 下载模型。服务端桥接 Git LFS 与 Xet 存储,按 commit 固定并缓存模型文件,避免 mutable revision 带来的不确定性。多副本协调、Browse / Search / Cleanup 和安全扫描同样支持。
带权限校验的全局制品搜索:跨仓库搜索制品,结果按权限过滤。
其它已有能力
- Nexus 存量仓库、制品、用户、角色、权限迁移
- Local、LDAP、OIDC 认证与细粒度权限
- CycloneDX SBOM、漏洞扫描、策略、豁免和下载阻断
- 面向全部仓库格式的 Cleanup Policy
- Prometheus 指标和 Grafana 面板
- MySQL 或 PostgreSQL 元数据存储
- OSS / S3 / File blob storage
- JVM 与 GraalVM Native 两种运行时(启动约 1 秒,内存 <200MB)
- 多副本高可用部署
- 按仓库配置 HTTP 或 SOCKS5 出站代理
快速开始
Quickstart 默认用 File blob storage,适合本地试用;生产环境建议换成独立 MySQL/PostgreSQL 加 OSS/S3。
容器镜像:
ghcr.io/klboke/kkrepo:0.9.0ghcr.io/klboke/kkrepo:0.9.0-nativeghcr.io/klboke/kkrepo-scanner:0.9.0
curl -fsSL https://raw.githubusercontent.com/klboke/kkrepo/main/scripts/quickstart.sh | bash
可选环境变量:KKREPO_DATABASE_TYPE=postgresql、KKREPO_RUNTIME=native。
控制台 http://127.0.0.1:19090/admin/ ;浏览 http://127.0.0.1:19090/browse/ ;健康检查 http://127.0.0.1:19091/actuator/health 。
v0.8.0 的 MySQL 和 PostgreSQL 部署可以通过 Flyway V46–V48 平滑升级。
和 Nexus CE 的差异
Nexus CE 面向个人和小团队,官方限制最多 40000 个组件、每天 10 万请求,超限后新建组件会被暂停。开源版适合单实例或基础 K8s 部署,官方 HA 属于 Pro 功能。版本边界也比较碎:3.70.x 是最后支持 OrientDB 的版本,3.71.0 新装默认 H2 但仍是内嵌,CE 到 3.77.0+ 才支持免费的外部 PostgreSQL,3.88.0 才把搜索完全从 Elasticsearch 移到 SQL。跑着老 OrientDB / Elasticsearch / 本地数据目录的部署,升级窗口大,恢复依赖备份和手工修复。
kkRepo 没有 CE 式的许可用量限制,容量取决于所选关系库、OSS/S3、副本数和部署规格,默认就是面向多副本部署设计的。元数据落在 MySQL/PostgreSQL,不背 OrientDB、H2、Elasticsearch 这几个历史包袱。
迁移与选型注意
从 Nexus 迁移时,已有仓库、制品、用户、角色、权限可以整体搬过来;Alpine 支持从 Nexus 3.94 的数据结构迁移。默认 File blob storage 只适合本地跑通流程,生产务必先准备好独立数据库和对象存储,再考虑副本数与出站代理配置。对制品体量大、需要多副本 HA 或有外部 PostgreSQL 需求、又不想被 CE 用量和版本边界卡住的团队,kkRepo 是直接对位的选项;只是单机、组件量远低于 40000 的场景,Nexus CE 现有的运维脚本和习惯也还能继续用,迁移的动力主要看容量、HA 和格式覆盖。
需要留意的是,部分仓库格式的迁移并不是自动全量识别,得在迁移时显式选择对应类型。