file-transfer-go:基于 WebRTC 的端到端 P2P 文件传输工具
由 MatrixSeven 开发的 Go + React(Next.js)点对点文件传输工具,基于 WebRTC DataChannel 实现端到端直连传输,支持文件、文字、桌面共享与目录同步,数据不经过服务器存储,提供 Docker 一键部署与本地构建部署方式,采用 MIT 许可证。
社区作者 · zZz
它解决什么问题
file-transfer-go(文件快传)是一个安全、快速、简单的点对点文件传输解决方案,无需注册、即传即用,端到端数据传输完全基于 WebRTC 的 P2P 直连。
核心功能:
- 文件传输:支持多文件同时传输;
- 文字传输:快速分享文本内容;
- 桌面共享:实时屏幕共享;
- 目录同步:在现代浏览器下支持目录同步;
- 连接状态同步:实时连接状态 UI 同步;
- 端到端加密:数据传输安全,服务器不存储文件;
- 文件断点传输:P2P/WS 下大文件断点续传支持;
- 响应式设计:适配手机、平板、电脑;
- 多平台支持:支持 linux/macos/win 单文件部署。
前端技术栈:Next.js 15(React 全栈框架,支持 SSR/SSG)、React 18、TypeScript 5、Tailwind CSS 3.4、Radix UI(无障碍组件库)、Zustand(轻量级状态管理)、Lucide React(图标库)。
后端技术栈
Go 1.22、WebSocket(实时双向通信)、内存存储、标准库原生 HTTP 服务器。传输协议:WebRTC DataChannel(端到端数据传输)、P2P 直连(点对点连接,无需中转)、ICE 框架(网络连接协商)、STUN/TURN(NAT 穿透支持)。
架构特点:微服务架构(前后端分离)、实时通信(WebSocket + WebRTC)、响应式设计(移动端适配)、容器化(Docker 部署支持)。
项目架构示意:发送方 ←── WebSocket 信令 ──→ 服务器 ←── WebSocket 信令 ──→ 接收方;发送方与接收方之间通过 WebRTC P2P 直连传输。
使用方法:
- 发送文件:选择文件 → 生成取件码 → 分享 6 位码;
- 文字传输:输入文字内容 → 生成取件码 → 分享给对方;
- 桌面共享:点击共享桌面 → 生成取件码 → 对方输入码观看。
页面提供的示意图:配图 1 为项目演示截图;配图 2 为 Star History Chart(仓库 Star 趋势)。
适用对象:需要在两台设备间快速、私密地传输文件、文字或共享屏幕的个人用户、团队与开发者;关注数据不落地服务器、端到端加密场景的用户;希望自建部署传输服务的运维与开发人员。
— 本文由 AI 根据公开来源辅助整理,命令、版本与许可证请在使用前到原始页面复核。
安装 / 开始使用
一、准备环境
- 方式一(推荐):安装 Docker 与 Docker Compose;
- 方式二(本地构建):需具备 Go 1.22 环境(后端)与 Node.js/yarn 环境(前端);
- 方式三(开发环境):需同时具备 Go 1.22 与 Node.js/yarn 环境。
二、方式一
Docker 一键部署(推荐)使用 Docker Compose(最简单):
步骤 1
git clone https://github.com/MatrixSeven/file-transfer-go.git步骤 2
cd file-transfer-go- docker-compose up -d
或直接使用 Docker 镜像:
步骤 1
docker run -d -p 8080:8080 --name file-transfer-go matrixseven/file-transfer-go:latest三、方式二
本地构建部署
步骤 1
git clone https://github.com/MatrixSeven/file-transfer-go.git步骤 2
cd file-transfer-go步骤 3
./build-fullstack.sh步骤 4
./dist/file-transfer-go- 访问 http://localhost:8080 开始使用
四、方式三
开发环境部署
步骤 1 · 启动后端服务:
make dev步骤 2 · 新开终端启动前端服务:
cd chuan-next && yarn && yarn dev五、部署配置说明 环境变量配置:
- NODE_ENV:运行环境(development/production)
- PORT:服务端口(默认 8080)
- GO_BACKEND_URL:后端服务地址
Docker 配置选项(docker-compose.yml 可配置项):environment:
NODE_ENV=productionPORT=8080ports:
restart:unless-stopped
- "8080:8080"
多架构支持:项目支持多架构 Docker 镜像,包括 linux/amd64(x86_64 架构)与 linux/arm64(ARM 64 位架构)。
镜像版本:
- latest:最新稳定版本
- v1.0.x:特定版本号
- dev:开发版本
六、首次运行与使用 启动后访问 http://localhost:8080。发送文件:选择文件 → 生成取件码 → 分享 6 位码;文字传输:输入文字内容 → 生成取件码 → 分享给对方;桌面共享:点击共享桌面 → 生成取件码 → 对方输入码观看。
七、常见问题
- 页面无法访问:检查 PORT 是否被占用、容器端口映射是否为 8080:8080;
前端依赖安装失败:确认已进入 chuan-next 目录并执行
yarn 安装;
- 前后端未连通:检查 GO_BACKEND_URL 配置的后端服务地址是否正确;
- 部署环境选择:部署到 ARM 设备时选用 linux/arm64 镜像,x86 设备选用 linux/amd64 镜像;
- 来源未说明的其他排查项待核验。