104a69dcb4a20b12c23cfd055a28b60352fab3ef
rclone-webgui
浏览器端的 rclone 图形界面,使用 Anthropic / Claude 设计语言。
rclone/ 是 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完成授权。
快速开始
# 1. 拉取子模块(rcd 流程用不到,自行构建 rclone 二进制时才需要)
git clone --recurse-submodules <your-fork-url>
# 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 /<remote>:<path> |
--rc-serve |
浏览器同源访问 → 不需要 CORS、不需要 nginx、不需要双端口。 要加 TLS 或自定义 header 时,在前面套你自己的反代即可。
自行构建 rclone(可选)
Docker 编排默认使用官方 rclone/rclone:latest 镜像,配合 rcd 即可。
如果你想构建一个内置 webgui 命令的 rclone 二进制(rclone webgui
能像 rclone gui 那样独立运行),可以:
# 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 子模块
cd rclone
git fetch origin
git checkout <new-tag-or-commit>
cd ..
git add rclone
git commit -m "chore: 升级 rclone 至 <new-tag>"
协议
- 本外层仓库:MIT
rclone/子模块:遵循上游 rclone 的 MIT 协议
Description
Languages
JavaScript
53.2%
Python
24.7%
CSS
14.6%
Go
5.6%
HTML
1.9%