一个以 Rust 实现的 Artifactory/Nexus 开源替代品,用于管理依赖制品。对需要自托管制品库的团队有参考价值,但整体是成熟方案的重新实现。
你的软件包。你的服务器。你的自由。
官网 · 文档 · 在线演示 · MIT 许可
一个功能完备、企业级的 artifact registry,几分钟即可完成自托管部署。它可以直接替代 JFrog Artifactory 和 Sonatype Nexus,并且不设置任何功能门槛——安全扫描、SSO、复制、全部 45+ 种软件包格式——所有功能都包含在开源版本中。
没有 open-core。没有“企业版”。没有突如其来的账单。
45+ 种软件包格式——原生协议支持。它不是一个给 blob 贴上格式标签的通用存储。你的 package manager(pip install、npm install、docker pull、cargo add、helm install、go get、buf push 等)可以通过各自的原生协议直接与 Artifact Keeper 通信。
代理仓库与虚拟仓库——Proxy repo 会在首次请求时,从公共 registry(npmjs.com、PyPI、Maven Central、Docker Hub)拉取并缓存 artifact。Virtual repo 则将多个本地 repo 和 proxy repo 聚合到同一个 URL 下,并支持配置解析顺序。你的构建工具只需指向一个 endpoint;Artifact Keeper 会优先解析私有软件包,找不到时再回退到公共 registry。
安全与合规——所有容器镜像均基于经 DISA STIG 批准的 Red Hat UBI 9 基础镜像构建,以非 root 用户运行,并尽可能缩小攻击面。通过 Trivy 自动检测漏洞,使用 OWASP Dependency-Track 分析 SBOM,并借助 OpenSCAP 进行合规审计。Policy engine 支持质量门禁、严重级别阈值、隔离工作流,以及下载前强制扫描。
Artifact 签名——支持 GPG 和 PGP 签名及密钥管理。上传时为 artifact 签名,下载时验证签名。你可以导入现有签名密钥,也可以通过 API 生成新密钥。
WASM 插件系统——通过 WebAssembly 编写自定义格式处理器来扩展系统。无须 fork 后端,就能加入对自有软件包格式的支持。Fork 示例插件即可开始开发。
Peer 复制——基于 mesh 的 artifact 分发机制,支持基于 label 的同步策略、响应式订阅,以及 peer 之间的 P2P 传输。你可以将缓存部署到更靠近 build agent 的位置。
SSO 与多种认证方式——支持 OpenID Connect、LDAP、SAML 2.0、JWT 和 API token。RBAC 支持按 repo 分配权限。
可观测性——提供 Prometheus metrics(30+ 个 ak_* gauge、counter 和 histogram)、可选择启用的 OpenTelemetry 分布式 tracing(通过 OTLP 导出至 Jaeger、Tempo 或 Datadog)、Kubernetes 原生健康探针(/livez、/readyz、/healthz),以及数据库连接池监控。
Artifactory 迁移——内置迁移工具,可从 JFrog Artifactory 迁移 repo、artifact、用户和权限。只需一条命令。
全文搜索——由 OpenSearch 提供支持,可跨所有 repo、软件包和 artifact metadata 进行搜索。
无论身在何处,都能管理你的 registry。监控构建、浏览 repo、触发安全扫描和管理用户——这一切都可以通过采用自适应布局的原生移动应用完成。
提供完整的管理界面,用于管理 repo、软件包、安全策略、用户、SSO 配置、复制拓扑和运维分析。
git clone https://github.com/artifact-keeper/artifact-keeper.git
cd artifact-keeper
docker compose up -d
# Visit http://localhost:9080
git clone https://github.com/artifact-keeper/artifact-keeper-iac.git
cd artifact-keeper-iac
helm install ak helm/ \
--namespace artifact-keeper \
--create-namespace
如需使用外部 PostgreSQL、TLS、自动扩缩容和监控进行生产环境配置,请参阅 Helm 部署指南。
docker pull ghcr.io/artifact-keeper/artifact-keeper-backend:latest
docker pull ghcr.io/artifact-keeper/artifact-keeper-web:latest
完整部署指南:Docker · Helm · AWS
Artifact Keeper 支持三种 repo 类型——采用与 JFrog Artifactory 和 Sonatype Nexus 相同的模型:
# npm: proxy to npmjs.com
npm install react --registry http://localhost:8080/api/v1/npm/npm-proxy/
# pip: proxy to pypi.org
pip install flask --index-url http://localhost:8080/api/v1/pypi/pypi-proxy/simple/
# Docker: proxy to Docker Hub
docker pull localhost:8080/api/v1/docker/docker-proxy/library/nginx:latest
# Go: proxy to proxy.golang.org
GOPROXY=http://localhost:8080/api/v1/go/go-proxy go get github.com/gin-gonic/gin
graph TB
subgraph Clients["Clients"]
CLI["CLI & Package Managers<br/><sub>pip · npm · docker · cargo<br/>helm · go · maven · buf · ...</sub>"]
WebApp["Web Dashboard<br/><sub>Next.js 15 · Desktop Browser</sub>"]
iOS["iPhone · iPad · Mac<br/><sub>SwiftUI · Swift 6</sub>"]
Android["Android Phone · Tablet<br/><sub>Jetpack Compose · Kotlin</sub>"]
end
subgraph Upstream["Public Registries (Proxy Upstream)"]
NPMjs["npmjs.com"]
PyPIorg["pypi.org"]
DockerHub["Docker Hub"]
MavenCentral["Maven Central"]
end
subgraph Core["Artifact Keeper Backend"]
API["REST & gRPC Gateway<br/><sub>Rust · Axum · Tonic</sub>"]
Handlers["45+ Format Handlers<br/><sub>Local · Proxy · Virtual repos</sub>"]
WASM["WASM Plugin Runtime<br/><sub>Wasmtime · WIT</sub>"]
Auth["Auth Engine<br/><sub>OIDC · LDAP · SAML · JWT</sub>"]
Policy["Policy Engine<br/><sub>Quality gates · Signing · Quarantine</sub>"]
end
subgraph Data["Data Layer"]
PG[("PostgreSQL 16<br/><sub>Metadata & config</sub>")]
Storage[("Storage<br/><sub>S3 / GCS / Filesystem</sub>")]
Search[("OpenSearch<br/><sub>Full-text search</sub>")]
end
subgraph Security["Security & Compliance"]
Trivy["Trivy<br/><sub>Vulnerability scanning</sub>"]
DTrack["Dependency-Track<br/><sub>SBOM analysis</sub>"]
OpenSCAP["OpenSCAP<br/><sub>Compliance auditing</sub>"]
end
subgraph Observe["Observability"]
Prom["Prometheus<br/><sub>30+ ak_* metrics</sub>"]
OTel["OpenTelemetry<br/><sub>OTLP traces · Jaeger · Tempo</sub>"]
Grafana["Grafana<br/><sub>Dashboards & Alerts</sub>"]
end
subgraph Edge["Peer Replication"]
Peer1["Peer Node"]
Peer2["Peer Node"]
Peer3["Peer Node"]
end
subgraph Infra["Infrastructure (IaC)"]
Helm["Helm Chart"]
TF["Terraform<br/><sub>EKS · RDS · S3 · VPC</sub>"]
ArgoCD["ArgoCD<br/><sub>GitOps</sub>"]
end
CLI -->|"Native protocols"| API
WebApp --> API
iOS --> API
Android --> API
API --> Handlers
API --> Auth
Handlers --> WASM
Handlers --> Policy
Handlers -->|"Proxy cache"| Upstream
API --> PG
Handlers --> Storage
API --> Search
Policy --> Trivy
Policy --> DTrack
Policy --> OpenSCAP
Prom -->|"Scrapes /metrics"| API
OTel -->|"OTLP gRPC"| API
Grafana --> Prom
API <-->|"Mesh Replication"| Peer1
API <-->|"Mesh Replication"| Peer2
API <-->|"Mesh Replication"| Peer3
Peer1 <-->|"P2P"| Peer2
Peer2 <-->|"P2P"| Peer3
Peer1 <-->|"P2P"| Peer3
Helm -.->|deploys| Core
ArgoCD -.->|watches| Helm
TF -.->|provisions| PG
TF -.->|provisions| Storage
style Core fill:#1a1a2e,stroke:#e94560,color:#fff
style Data fill:#16213e,stroke:#0f3460,color:#fff
style Security fill:#1a1a2e,stroke:#e94560,color:#fff
style Observe fill:#16213e,stroke:#22c55e,color:#fff
style Edge fill:#0f3460,stroke:#533483,color:#fff
style Clients fill:#16213e,stroke:#0f3460,color:#fff
style Infra fill:#0f3460,stroke:#22c55e,color:#fff
style Upstream fill:#16213e,stroke:#0f3460,color:#fff
style API fill:#e94560,stroke:#e94560,color:#fff
style Handlers fill:#e94560,stroke:#e94560,color:#fff
style WASM fill:#533483,stroke:#533483,color:#fff
style Auth fill:#e94560,stroke:#e94560,color:#fff
style Policy fill:#e94560,stroke:#e94560,color:#fff
style PG fill:#0f3460,stroke:#0f3460,color:#fff
style Storage fill:#0f3460,stroke:#0f3460,color:#fff
style Search fill:#0f3460,stroke:#0f3460,color:#fff
style Trivy fill:#533483,stroke:#533483,color:#fff
style DTrack fill:#533483,stroke:#533483,color:#fff
style OpenSCAP fill:#533483,stroke:#533483,color:#fff
style Prom fill:#22c55e,stroke:#22c55e,color:#fff
style OTel fill:#22c55e,stroke:#22c55e,color:#fff
style Grafana fill:#22c55e,s
graph LR
subgraph DEV["Development"]
D1["Docker Compose<br/><sub>Single machine</sub>"]
D2["Helm (dev values)<br/><sub>Local K8s cluster</sub>"]
end
subgraph STG["Staging"]
S1["Helm + ArgoCD<br/><sub>Auto-sync</sub>"]
S2["In-cluster PostgreSQL<br/><sub>HPA · PDB · NetworkPolicy</sub>"]
end
subgraph PROD["Production"]
P1["Helm + ArgoCD<br/><sub>Manual sync</sub>"]
P2["EKS + RDS + S3<br/><sub>Terraform provisioned</sub>"]
P3["Prometheus + Grafana<br/><sub>12-panel dashboard · 7 alerts</sub>"]
end
DEV --> STG --> PROD
style DEV fill:#22c55e,color:#fff
style STG fill:#eab308,color:#fff
style PROD fill:#ef4444,color:#fff
欢迎贡献。你可以挑选一个 issue、发起 PR,或者参与 discussion。后端使用 Rust,前端使用 TypeScript/React,移动应用则分别使用原生 Swift 和 Kotlin。
Email:support@artifactkeeper.com
Issues:GitHub Issues
安全扫描由 Trivy(Aqua Security)、OWASP Dependency-Track 和 OpenSCAP 提供支持。分布式 tracing 基于 OpenTelemetry。搜索由 OpenSearch 提供支持。系统构建于 PostgreSQL 之上。
MIT。全部功能。无一例外。