v0.1 已发布 · MIT · 单二进制

你自己的
镜像仓库,
一个二进制就够。

一款 Harbor / Zot 的轻量替代——原生 OCI v2,内嵌 distribution v3, 自带漂亮的 Web UI,开箱支持 Docker Hub / GHCR 镜像加速, 全部塞进一个 Go 二进制。配 SQLite,docker compose up 就能跑。

原生 distribution v3 零配置启动 SQLite + 文件系统
~/projects/myapp — 推送到 stashhub
$ docker login stash-hub.one Username: alice Password: **************** Login Succeeded $ docker push stash-hub.one/alice/api:v1.4.0 The push refers to repository [stash-hub.one/alice/api] eb7f3e74f1f3: Pushed a4f62e1b0a02: Pushed 8c1a4f0d2b9e: Pushed v1.4.0: digest: sha256:9b3a…7c2e size: 1789 $ curl -s $REG/api/v1/repositories/alice/api/tags \ | jq -r '.[].name' v1.4.0 v1.3.2 latest
兼容标准 OCI Distribution v2 distribution v3 Docker · Podman · Skopeo SQLite · S3 · R2 · MinIO
实际数字

不需要给它腾一台
专门的服务器。

stashhub 设计上就是要在你已经有的机器上跑——一台 VPS、一只 Raspberry Pi、一台办公电脑都够。

~30秒
从零到能 push。
compose up 起容器,bootstrap admin 写入日志。
~60MB
常驻内存占用。
一台 Raspberry Pi 4 都富余。
6+
存储后端可选。
filesystem · S3 · R2 · MinIO · B2 · DO Spaces。
MIT
开源协议。
商用、私部署、二次开发都不用谈合同。
为什么选 stashhub

比 Harbor 轻,
比 Zot 全。

写给那些想要自己的私有仓库、却不想为此搭一套 Kubernetes 平台的团队。

单二进制,零配置

一个 Go 二进制,内嵌 distribution v3,内嵌 React 19 前端,SQLite 持久化全部状态。docker compose up,仓库就活了。

OCI 协议原生

没有代理、没有翻译。docker push / pull / login 直连标准 v2 协议,blob 与 manifest 走的就是 distribution 自己的实现。

拉取代理缓存

把它配成 Docker daemon 的 registry-mirror。多上游路由、Manifest TTL、LRU sweeper、tag 白名单淘汰——全部在管理面板可调。

鉴权 · 会话 · 审计

bcrypt + 旋转刷新 JWT,每用户 PAT(可作 docker 密码),实时会话列表,每一次 push / pull / delete 都有审计行落库。

配得上 2026 年的管理后台

用户、存储、GC、保留策略 dry-run、SMTP 测试、镜像加速策略——所有运行期可调项都在 Web UI,再也不用改 yaml 重启。

文件系统起步,对象存储无缝

默认走文件系统驱动;改一段配置就能切到 S3 / R2 / MinIO / B2 / DO Spaces。同二进制、同 UX,不需要重新架构。

拉取代理

别再硬 pull
Docker Hub。
让它先经过你。

在管理后台为每个上游配置一个 path prefix——你 daemon 的拉取就成了局域网命中。Manifest TTL 让浮动 tag 保持新鲜,sweeper 让磁盘保持清爽。

01Route
多上游路由 —— 客户端访问 /v2/[prefix]/…,区分 Docker Hub / GHCR / 私有上游。
02Auth
上游凭据 AES-256-GCM 加密落盘,密钥由 JWT secret 派生。
03Evict
LRU 天数 + 容量上限 + 最少命中 + tag 正则白名单,四维淘汰。
04TTL
Manifest TTL 参考 Artifactory:HEAD 上游对比 digest,不变只刷时间戳。
05Stats
管理面板按上游聚合的实时缓存命中率统计。
client docker pull alpine:3.19 →
stashhub manifest 命中ttl 6h ↓
cache layer 命中sha256:e07f… →
miss 从 registry-1.docker.io 流式回源 ↓
store 回源数据写入 filesystem · S3 · R2 ↓
return 返回 client下次拉取直接命中本地 ✓
自带 Web UI

不是 CLI-only。
不是 2014 年的管理后台。

React 19 + Tailwind 4 + Radix UI 写的现代前端,中英 i18n,暗色 / 亮色,Cupertino 风格设计系统。仓库列表、tag 详情、活动流、管理面板——全部在 Web 里,不再改 yaml 重启。

stashhub 仓库概览界面
实话实说

老老实实的 对比。

我们没打算替代 Harbor 给银行用。我们替代的是那个其实不需要 Harbor 的团队的 Harbor。

能力 stashhub Harbor Zot
单二进制部署是否 · 多服务是
内置 Web UI是 · React 19是— 极简
拉取代理缓存多上游proxy 项目~ 基础
管理后台用户·GC·保留·SMTP企业级无
审计日志用户 + 仓库是无
部署时间~ 30s~ 1h (helm)~ 2min
内存占用~ 60 MB~ 1 GB+~ 80 MB
气质小团队 · 自托管企业 · 银行CLI 优先
// 数据基于 fresh deploy、1 用户、~100 tags 实测;ymmv (your mileage may vary)。
上手

一条 docker compose 的距离。

拉镜像、生成 JWT secret、把 bootstrap admin 密码写进日志。仅此而已。

install — 30 秒
$ docker compose -f docker-compose.prod.yml up -d [+] Running 1/1 ✔ Container stashhub Started $ docker compose logs stashhub | grep "bootstrap admin" level=info bootstrap admin = admin / k3-7gZ-9pX-2vQ level=info → open http://localhost:8080