EteDrop 正式开源:一个基于 Flutter、NestJS 和 WebRTC 的跨平台文件传输项目
摘要EteDrop 是一个跨平台文件传输项目包含Flutter 客户端、NestJS 信令服务、文件分享页和官网。项目目标是让手机、电脑、桌面端和浏览器之间可以更方便地传输文件优先使用局域网和 WebRTC/P2P 等直接传输方式服务端主要负责信令、分享页分发和运行状态接口。项目已正式开源GitHubhttps://github.com/bfzg/etedrop官网https://etedrop.com为什么做 EteDrop日常工作里文件传输是一个很高频但经常不够顺手的场景手机传电脑需要登录同一个账号或借助聊天软件电脑传电脑经常要经过网盘或云端中转大文件传输受限于上传速度、下载速度和容量限制局域网明明很快但很多工具没有很好利用临时发给别人一个文件希望对方直接用浏览器打开就能接收。EteDrop 的目标不是再做一个网盘而是做一个更轻量、更直接的文件传输工具能走局域网时优先走局域网能建立 P2P 时尽量让数据直接在设备之间传输服务端只承担必要的协调工作。项目能力当前项目主要包含这些能力多平台客户端Android、iOS、macOS、Windows、Linux局域网设备发现和局域网传输WebRTC/P2P 文件传输浏览器分享页接收文件常见文件类型预览部分媒体播放和转码流程全球节点和中国大陆节点配置服务端健康检查、用量统计和 Prometheus 指标接口官网、下载页和部署文档。技术架构项目采用 monorepo 方式组织fast_send_workspace/ ├── fast_send_flutter/ # Flutter 客户端 ├── fast_send_server/ # NestJS 信令与 API 服务 ├── share-page-app/ # React/Vite 文件分享页 ├── website/ # Docusaurus 官网 ├── doc/ # 架构、部署、协议、打包文档 └── ffmpeg_build/ # FFmpeg/FFprobe 二进制文件Flutter 客户端客户端使用 Flutter 实现覆盖移动端和桌面端。核心关注点包括跨平台 UI 和本地文件选择局域网设备发现WebSocket 信令连接WebRTC 数据通道传输文件接收、下载状态和任务管理桌面端托盘、通知、自启动等体验。NestJS 信令服务端服务端主要负责“协调”而不是“存储文件”/api/connect设备之间的信令连接/api/share浏览器分享页相关连接/api/system/health健康检查/api/system/metricsPrometheus 指标静态托管分享页资源。服务端可以部署在 Nginx 后面由 Nginx 负责 TLS 终止和域名转发。文件分享页分享页是一个独立的 React/Vite 项目。用户打开分享链接后可以直接在浏览器里查看分享信息、预览部分文件并下载。这个设计的好处是接收方不一定需要安装客户端只要有浏览器就可以参与一次临时文件接收。WebRTC/P2PEteDrop 尽量避免所有文件都经过服务端中转。服务端主要用于交换连接信息真正的数据传输优先发生在设备之间。这样做的优势是降低服务端带宽压力在局域网或网络条件较好时传输更快文件数据不必默认进入中心化存储。开源前做了哪些处理这次开源前项目补充了根目录README.md和中文 READMEMIT LicenseCONTRIBUTING.mdSECURITY.mdTHIRD_PARTY_NOTICES.mdAndroid 签名配置模板根目录.gitignoreGit 历史中的本地工作目录、系统文件和签名密钥清理。其中 FFmpeg 二进制相关内容单独写在第三方声明中。FFmpeg 的许可证义务取决于构建参数和启用组件发布二进制安装包前需要重新核对。快速体验克隆项目gitclone https://github.com/bfzg/etedrop.gitcdfast_send_workspace启动服务端cdfast_send_servernpmcinpmrun start:dev启动 Flutter 客户端cdfast_send_flutter flutter pub get flutter run-dmacos启动分享页cdshare-page-appnpmcinpmrun tailwindnpmrun dev更多命令可以查看仓库 README 和doc/目录。适合谁关注如果你对下面这些方向感兴趣可以看看这个项目Flutter 跨平台客户端开发WebRTC DataChannel 文件传输局域网发现和设备互联NestJS WebSocket 服务文件分享页和浏览器接收体验一个真实跨端产品从客户端、服务端到官网的工程组织方式。后续计划后续会继续围绕这些方向优化跨平台传输稳定性大文件传输体验分享页兼容性部署和打包流程文档和开源协作流程更多平台能力补齐。项目地址GitHubhttps://github.com/bfzg/etedrop官网https://etedrop.com如果你觉得项目有帮助欢迎 Star、Issue 或参与贡献。