# rclone-webgui 浏览器端的 rclone 图形界面,使用 Anthropic / Claude 设计语言。 `rclone/` 是 [github.com/rclone/rclone](https://github.com/rclone/rclone) 的 git submodule,锁定在上游某个 commit,**不携带我们的任何改动**。 所有 webgui 源码、Docker 编排、文档都在本仓库。 ## 项目结构 ``` . ├── webgui/ # webgui 源码(在父仓库,不在 rclone 子模块里) │ ├── webgui.go # Go 子命令源码(仅当自行构建 rclone 时需要) │ ├── rclone-cmd-all-add-webgui-import.patch # 注解:把 webgui 注册进 rclone 的 cmd/all │ └── web/ # 静态前端(rclone rcd 直接服务) │ ├── index.html │ └── assets/ ├── config/rclone/ # rclone.conf 挂载点(bind mount,不提交) ├── docker-compose.yml # 单容器 rclone rcd ├── DESIGN.md # UI 设计系统规范 ├── CLAUDE.md # Claude Code 协作指引 └── rclone/ # submodule → github.com/rclone/rclone,纯净不改动 ``` ## 功能 - **Remotes 管理** — 在浏览器里创建 / 编辑 / 删除 rclone remote,表单从 `/config/providers` 动态生成,覆盖全部 70+ 后端的全部选项。 - **文件浏览** — 面包屑导航 + 文件表格,支持 mkdir / upload / delete / rename / download。 - **同步任务** — copy / sync / move 异步任务,1.5 秒轮询进度(速度、 ETA、已传输 / 总量、错误计数),任务元信息(src→dst)持久化到 localStorage,刷新页面不丢。 > OAuth 后端(drive、dropbox、onedrive 等)目前仅显示提示横幅, > 引导用户在终端跑 `rclone config` 完成授权。 ## 快速开始 ```bash # 1. 拉取子模块(rcd 流程用不到,自行构建 rclone 二进制时才需要) git clone --recurse-submodules # 2. 启动堆栈(单容器,无需 build) docker compose up -d # 3. 打开 http://localhost:5580 ``` ## 架构 只用一个 rclone rcd 容器,一个端口(5580),同时承担: | 职责 | URL | 配置项 | |---|---|---| | 静态前端 | `GET /` | `--rc-files=/web` | | RC API | `POST /config/*`、`/operations/*`、`/sync/*`、`/job/*` | 内置 | | 远端文件下载 | `GET /:` | `--rc-serve` | 浏览器同源访问 → 不需要 CORS、不需要 nginx、不需要双端口。 要加 TLS 或自定义 header 时,**在前面套你自己的反代**即可。 ## 自行构建 rclone(可选) Docker 编排默认使用官方 `rclone/rclone:latest` 镜像,配合 rcd 即可。 如果你想构建一个内置 webgui 命令的 rclone 二进制(`rclone webgui` 能像 `rclone gui` 那样独立运行),可以: ```bash # 1. 把 webgui 源码软链或拷贝到 rclone 子模块的 cmd/ 下 ln -s ../../webgui rclone/cmd/webgui # 2. 应用注册补丁 cd rclone && git apply ../webgui/rclone-cmd-all-add-webgui-import.patch # 3. 构建 make ``` ## 升级 rclone 子模块 ```bash cd rclone git fetch origin git checkout cd .. git add rclone git commit -m "chore: 升级 rclone 至 " ``` ## 协议 - 本外层仓库:MIT - `rclone/` 子模块:遵循上游 [rclone](https://github.com/rclone/rclone) 的 MIT 协议