自建 Docker Registry 镜像加速与会员管理系统,为 fnOS/NAS 场景设计。支持将 Docker 镜像同步到本地目录或 WebDAV 存储,以 Registry v2 兼容接口提供拉取服务,含用户专属加速链接、套餐流量控制、限速和后台管理。
- Registry v2 拉取兼容
- 测试链接
/test+ 用户专属链接/<后缀> - Docker Hub / registry-v2 / mirror-only 多上游
docker pull→docker save同步 mirror-only 源- 直接粘贴完整
docker pull命令同步 - 本地目录与 WebDAV 存储(如 123 云盘)
- 镜像版本管理——增删改、AI 补充说明、自定义图标
- 同步任务实时速度显示
- 用户注册/登录、套餐购买、订单审核
- 免费/赠送/套餐流量分桶,赠送用完再扣套餐计时
- 测试链接和用户专属链接独立限速
- 邮箱验证码、站内消息
- 后台备份/恢复
- 深色模式,手机端适配
- fnOS FPK 一键安装
| 层 | 技术 |
|---|---|
| 后端 | Python 3 标准库 |
| 前端 | Vue 3 SPA |
| 数据库 | JSON 文件 |
| 存储 | 本地目录 / WebDAV |
| 打包 | fnOS FPK |
backend/server.py # 后端
frontend/index.html # Vue SPA
frontend/vue.min.js # Vue 运行时
fpk/cmd/ # fnOS 生命周期脚本
fpk/config/ # 运行权限
fpk/manifest # 包元信息
ui/ # 图标素材
将 FPK 上传飞牛 fnOS 后台安装。默认端口 8088,需 root 权限(访问 Docker daemon)。
com.cjm2004.mirror-1.0.0.fpk
| 项 | 值 |
|---|---|
| 用户名 | admin |
| 密码 | admin123 |
建议首次登录后立即修改密码。
- 进入管理面板
- 添加目标源(本地目录或 WebDAV)
- 添加上游源(Docker Hub / registry-v2 / mirror-only)
- 在「上游同步」中同步镜像到目标源
- 在「镜像管理」查看、编辑版本
- 在「设置」配置域名、限速、邮箱、支付等
镜像名:library/mysql
tag:latest
非官方镜像必须完整命名空间:
镜像名:halohub/halo ✅
镜像名:halo ❌
镜像名:library/halo ❌
镜像名和 tag 多行一一对应:
library/mysql
halohub/halo
library/nginx
latest
2.25.4
1.25
docker pull docker.jiaxin.site/halohub/halo:2.25.4系统自动解析 registry、镜像名、tag 并在 NAS 本机执行。
开通套餐后在控制台开启专属加速源,获得专属链接:
https://your-nas.example.com/user01
Docker pull 不能带 https://:
# 正确
docker pull your-nas.example.com/user01/library/mysql:latest
# 错误
docker pull https://your-nas.example.com/user01/library/mysql:latestsudo nano /etc/docker/daemon.json{
"registry-mirrors": ["https://your-nas.example.com/user01"]
}sudo systemctl restart docker推荐目录结构:
halohub/halo/2.25.4/image.tar
library/mysql/latest/manifest.json
library/nginx/1.25/manifest.v2.json
扫描器识别版本目录中包含以下标记文件时生成镜像记录:
image.tar
manifest.json
manifest.v2.json
meta.json
docker pull 提示 permission denied
sudo usermod -aG docker <用户名>
# 重新登录生效docker pull 返回 NOT_FOUND
检查镜像名、tag、是否使用了 /test 或用户专属后缀。
docker pull 不能带 https:// Docker 镜像引用不含协议头。
halo 镜像同步失败
必须用 halohub/halo,不是 library/halo 或 halo。
WebDAV 大文件上传失败 检查服务商文件大小限制、网络、目标目录权限。
# 构建 app.tgz
tar -czf app.tgz backend frontend ui com.cjm2004.mirror.Application
# 构建 FPK
tar -czf com.cjm2004.mirror-版本号.fpk manifest ICON.PNG ICON_256.PNG app.tgz cmd config wizard- 需要 root 权限访问 Docker daemon
- mirror-only 上游依赖 NAS 本机 Docker
- JSON 数据库存储在应用数据目录
- WebDAV 性能取决于服务商和网络
- 非官方镜像必须完整命名空间