Twake Drive —— 开源的 Google Drive 替代方案(Web 应用)
Twake Drive 是 Linagora 开发、基于 AGPL v3 开源的网盘 Web 应用,提供文件树、文件与文件夹上传、通过 URL 分享以及文件与文件夹搜索,被定位为 Google Drive 的开源替代品。
社区作者 · zZz
它解决什么问题
Twake Drive 是一个开源的文件管理 Web 应用,官方定位为“The open-source alternative to Google Drive”(Google Drive 的开源替代方案)。
主要功能:
- 文件树(File tree)
- 文件与文件夹上传
- 文件与文件夹分享(通过 URL)
- 文件与文件夹搜索
技术背景:项目是 Twake 系列 React 应用之一,前端复用团队自研的 cozy-ui 组件与样式库,API 层使用 cozy-client(在 cozy-stack 之上提供统一 API),运行时依赖 cozy-stack 来托管构建产物(build 目录)并本地提供应用服务,官方 Node 包管理器为 Yarn,本地 Node 版本以仓库中的 .nvmrc 为准。
开发与协作:使用标准 npm scripts 处理 watch、lint、test、build 等常见任务;测试由 jest 驱动,用 chai 与 sinon 编写,另有 Playwright 端到端测试(见 E2E test guide);代码贡献通过 Pull-Request,需参考 contributing guide;国际化与翻译由 Transifex 管理,源语言文件通常为 client 和/或 server 部分的 en.json。
适用对象:想自建/研究开源网盘与文件共享方案的个人与团队、需要基于 cozy-stack 与 cozy-ui 二次开发的 React 前端工程师、参与 Twake 生态贡献与翻译的社区成员。
许可证:由 Linagora 开发,按 AGPL v3 许可证分发。
— 本文由 AI 根据公开来源辅助整理,命令、版本与许可证请在使用前到原始页面复核。
安装 / 开始使用
准备环境
- 安装 Yarn:官方说明 Yarn 是 Twake Drive 的官方 Node 包管理器,建议先安装 Yarn。
- 按仓库文档先完成 dev environment(开发环境)配置。
- 在 y install 之前,务必把本地 Node 版本切换为 .nvmrc 中指定的版本。
安装(克隆仓库并安装依赖)
git clone https://github.com/linagora/twake-drive.gitcd twake-driveyarn install以开发模式运行(方式一:使用带 Hot Module Replacement 的 watcher)
cd twake-driveyarn watch$ cozy-stack serve --appdir drive:/<project_absolute_path>/twake-drive/build/drive --disable-csp
以开发模式运行(方式二:直接构建出静态文件)
cd twake-driveyarn build$ cozy-stack serve --appdir drive:/<project_absolute_path>/twake-drive/build/drive
首次运行访问地址:http://drive.cozy.localhost:8080/#/folder 注意:必须显式告诉 cozy-stack 需要服务的 build 目录,否则无法运行应用。
在 VM(Docker)中运行 终端 A,以 watch 模式运行应用:
cd twake-driveyarn watch终端 B,运行 docker 容器:
docker run --rm -it -p 8080:8080 -v "$(pwd)/build/drive":/data/cozy-app/drive cozy/cozy-app-dev访问地址:http://drive.cozy.tools:8080
进阶:在开发环境中测试分享与发信 若使用 cozy-stack CLI 开发,需要在本机运行 MailHog,并通过参数告知 cozy-stack serve 邮件服务器位置(该命令假定 twake-drive 与 cozy-stack 克隆在同一目录):
./cozy-stack serve --appdir drive:../twake-drive/build --mail-disable-tls --mail-port 1025然后运行 mailhog 并打开 http://cozy.tools:8025/ 。MailHog 会截获 cozy-stack 发出的每一封邮件,因此收件地址不必是真实地址(bob@cozy、[email protected] 均可);即使是真实地址(如 [email protected]),邮件也不会真正到达对方邮箱。
进阶:与 cozy-ui / cozy-client 联调
- 本地克隆并链接 cozy-ui:
git clone https://github.com/cozy/cozy-ui.gitcd cozy-uiyarn installyarn link- 回到应用项目,用链接版本替换分发的 cozy-ui 模块:
cd twake-driveyarn link cozy-uicozy-client(在 cozy-stack 之上提供统一 API 的库)需要并行开发时可用同样的 yarn link 技巧。 疑难提示:考虑用 rlink 替代 yarn link。
- 之后运行 watch 任务,当 cozy-ui 源文件被改动时项目会热重载。
运行测试
cd twake-driveyarn test测试底层由 jest 运行,使用 chai 与 sinon 编写。Playwright 端到端测试参见 E2E test guide。提示:贡献代码时不要忘记更新或新增测试,以保持应用一致。
提交代码 如需修改代码,可自由发起 Pull-Request,具体规范见 contributing guide。
国际化(Transifex)
- 译者:用 GitHub 账号登录 Transifex 并申请该应用仓库的访问权限。语言包会在应用构建发布前由流水线拉取。
- 开发者:配置 Transifex CLI 并以 maintainer 身份申请访问,只更新源语言文件(通常为 client 和/或 server 中的 en.json),再用 tx push -s 推送到 Transifex 仓库。
- 如果此前使用 transifex-client,需迁移到 Transifex CLI 以兼容 v3 API;当前 transifex 配置文件仍是旧版本,暂时请使用旧客户端 https://github.com/transifex/transifex-client/ 。
常见问题
应用跑不起来:确认 cozy-stack serve 已显式指定要服务的 build/drive 目录,且已执行
yarn watch或
yarn build。
- 依赖安装异常:确认已在 yarn install 前切换到 .nvmrc 指定的 Node 版本。
- 开发环境收不到分享邮件:需要在开发环境启动 MailHog,并用 --mail-disable-tls --mail-port 1025 启动 cozy-stack。