一站式容器镜像与文件传输管理平台,支持 Harbor 私有仓库管理、SFTP 文件传输和 ModelScope 模型下载。
- 多仓库管理: 配置多个 Harbor 仓库,支持验证、删除操作
- 公网镜像同步: 从 Docker Hub 等公网源同步镜像到 Harbor,支持多架构镜像
- 本地镜像导入: 上传 tar 包自动导入到 Harbor,支持 OCI/Docker 格式
- 项目创建: 直接在界面创建 Harbor 项目,支持私有/公开可见性
- 智能工具选择: 自动检测 skopeo,优先使用 skopeo 提升传输效率
- 配置管理: 保存多个 SFTP 服务器配置,支持密码和密钥认证
- 多文件上传: 支持多文件、文件夹批量上传,最大支持 30GB 单文件
- 断点续传: 自动跳过已存在的文件,支持任务中断后恢复
- SHA-256 校验: 可选开启文件完整性校验,确保传输可靠
- 并发上传: 最多 3 个文件并行传输,提升上传效率
- 文件管理: 内置文件管理器,支持浏览目录、查看文件、删除文件
- 实时进度: 上传进度、速度、状态实时显示
- 任务取消: 随时取消正在进行的上传任务
- 模型搜索下载: 通过 ModelScope Hub 下载模型到本地
- 完整/单文件下载: 支持下载完整模型或指定单个文件
- 断点续传: 自动跳过已存在的文件
- 任务取消: 随时取消正在进行的下载任务
- 实时进度: 显示下载进度和状态
- 安全凭据: Harbor/SFTP 凭据 AES 加密存储
- 任务持久化: 任务状态自动保存,刷新页面不丢失
- 详细日志: 每个任务都有完整执行日志,便于故障排查
- 连接验证: 保存配置前可测试连接有效性
- Node.js >= 18.0.0
- Skopeo(镜像同步功能需要)
- Rclone(SFTP 传输功能需要)
- Python >= 3.8 + modelscope(模型下载功能需要)
Ubuntu/Debian:
apt install -y skopeo rclone python3 python3-pip
pip3 install modelscope --break-system-packagesAlpine:
apk add skopeo rclone python3 py3-pip
pip3 install modelscope --break-system-packagesgit clone https://github.com/ZengIan/Imager.git
cd Imager
npm installbash start.shnpm start服务启动后访问 http://localhost:8080
- 填写 Harbor 名称、地址、用户名、密码
- 点击"验证连接"测试配置有效性
- 验证通过后点击"保存配置"
- 填写源镜像地址(如
docker.io/library/nginx:1.27) - 选择目标仓库和项目
- 选择架构:多架构(保留所有架构)或系统自匹配
- 点击"创建同步任务"
- 选择本地 tar 包文件
- 选择目标仓库和项目
- 点击"上传并导入"
- 配置 SFTP: 填写服务器地址、端口、用户名、密码,测试连接后保存
- 选择文件: 点击"上传文件"或"上传文件夹"
- 设置路径: 选择 SFTP 配置,填写远程目标路径
- 可选校验: 勾选 SHA-256 校验确保文件完整性
- 开始上传: 点击"开始上传",实时查看进度
在已保存的 SFTP 配置中点击"文件管理"按钮,可以:
- 浏览远程目录
- 进入子目录、返回上级
- 删除文件或目录
- 刷新目录列表
- 填写 ModelScope 模型 ID(如
Qwen/Qwen3.5-0.8B) - 填写本地保存目录
- 可选:填写单个文件路径以下载特定文件
- 点击"开始下载",实时查看进度
- 点击"取消下载"可中断任务
┌─────────────────────────────────────────────────────────┐
│ 前端 (HTML/CSS/JS) │
├─────────────────────────────────────────────────────────┤
│ 后端 (Node.js) │
├─────────────────┬─────────────────┬─────────────────────┤
│ Skopeo │ Rclone │ Python + ModelScope │
│ (镜像同步) │ (SFTP 传输) │ (模型下载) │
└─────────────────┴─────────────────┴─────────────────────┘
Imager/
├── app.js # 前端交互逻辑
├── index.html # 页面结构
├── styles.css # 样式文件
├── server.js # 后端服务器
├── rclone.js # Rclone 封装模块
├── modeldownload.py # ModelScope 下载脚本
├── package.json # 项目配置
├── start.sh # WSL 启动脚本
├── Dockerfile # Docker 构建文件
├── entrypoint.sh # Docker 入口脚本
├── buildx.sh # 多架构构建脚本
│
├── config.json # Harbor 配置 (加密存储)
├── sftp-configs.json # SFTP 配置 (加密存储)
├── tasks.json # 任务记录 (包含日志)
├── app.log # 运行日志
└── uploads/ # 上传临时目录
docker build -t imager .
docker run -d -p 8080:8080 \
-v /var/run/docker.sock:/var/run/docker.sock \
-v imager-data:/app/data \
imager- 修改密钥: 在
server.js中修改SECRET_KEY - 配置 HTTPS: 使用 Nginx 反向代理
- 进程管理: 使用 PM2 管理服务进程
- 日志轮转: 配置日志轮转避免文件过大
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /api/config |
获取仓库列表 |
| POST | /api/harbor/config |
保存仓库配置 |
| POST | /api/harbor/verify |
验证连接 |
| DELETE | /api/harbor/config/:name |
删除配置 |
| POST | /api/images/sync |
创建同步任务 |
| POST | /api/images/upload |
上传镜像包 |
| POST | /api/harbor/project |
创建项目 |
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /api/sftp/configs |
获取配置列表 |
| POST | /api/sftp/config |
保存配置 |
| POST | /api/sftp/test |
测试连接 |
| DELETE | /api/sftp/config/:name |
删除配置 |
| POST | /api/sftp/upload |
上传文件 |
| GET | /api/sftp/upload-status/:id |
查询上传状态 |
| POST | /api/sftp/upload-cancel/:id |
取消上传 |
| POST | /api/sftp/list |
列出远程目录 |
| POST | /api/sftp/delete |
删除远程文件 |
| 方法 | 路径 | 说明 |
|---|---|---|
| POST | /api/modelscope/download |
创建下载任务 |
| GET | /api/modelscope/progress/:id |
查询下载进度 |
| POST | /api/modelscope/cancel/:id |
取消下载 |
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /api/tasks |
获取任务列表 |
| DELETE | /api/tasks/:id |
删除任务 |
| POST | /api/tasks/:id/retry |
重试任务 |
- 安装 Skopeo:
apt install skopeo(Debian/Ubuntu) - 不安装也可使用,会自动降级到 Docker 命令
- 安装 Rclone:
curl https://rclone.org/install.sh | sudo bash - SFTP 功能依赖 Rclone,必须安装
- 安装 Python modelscope:
pip install modelscope - 或使用用户级安装:
pip install modelscope --break-system-packages
- 检查服务器地址和端口是否正确
- 确认用户名密码或密钥有效
- 使用"测试连接"按钮验证
MIT