Lazy loaded image
技术分享
文件快传 - P2P文件传输工具
字数 1259阅读时长 4 分钟
2025-12-12
2025-12-12
type
Post
status
Published
date
Dec 12, 2025
slug
trans
summary
tags
工具
category
技术分享
icon
password
安全、快速、简单的点对点文件传输解决方案 - 无需注册,即传即用
项目演示
✨ 核心功能[端到端数据传输完全基于WebRTC的P2P直连
  • 📁 文件传输 - 支持多文件同时传输
  • 📝 文字传输 - 快速分享文本内容
  • 🖥️ 桌面共享 - 实时屏幕共享
  • 🔗 连接状态同步 - 实时连接状态UI同步
  • 🔒 端到端加密 - 数据传输安全,服务器不存储文件
  • 📱 响应式设计 - 完美适配手机、平板、电脑
  • 🖥️ 多平台支持 - 支持linux/macos/win 单文件部署

Docker 部署

方法一:使用 Docker Compose(推荐)

方法二:直接使用 Docker 镜像

部署提示

  • Docker Compose 方式会自动处理依赖和网络配置
  • 服务启动后访问 http://localhost:8080
  • 可以通过修改 docker-compose.yml 自定义端口

二进制部署

下载预编译版本

前往 GitHub Releases 页面 下载对应系统的二进制包

支持的平台:

  • Linux (AMD64/ARM64)
  • Windows (AMD64)
  • macOS (AMD64/ARM64)

启动服务

下载后直接运行可执行文件即可:

注意事项

  • 首次运行可能需要防火墙授权
  • 默认端口为 8080,可通过参数修改
  • 建议在生产环境使用 systemd 等进程管理工具

自行构建

环境要求

  • Go 1.21 或更高版本
  • Node.js 18 或更高版本
  • Git

构建步骤

构建注意事项

  • 确保网络畅通,需要下载 Go 模块和 npm 包
  • 首次构建可能需要较长时间
  • 构建脚本会自动处理前后端的编译和打包

桌面共享权限问题

移动端无法共享桌面?

移动端限制

这是移动端浏览器的限制,WebRTC 没有在移动浏览器端实现获取桌面视频流的功能,所以这个能力无法在移动浏览器端实现。
解决方案:请使用桌面设备进行屏幕共享。

PC 端无法共享桌面?

HTTPS 要求

如果是自行部署,无论是部署在局域网/公网,如果要实现桌面分享,需要必须保证服务访问地址是 TLS 加密,也就是 https 方式访问。
  • localhost 地址可以直接分享桌面
  • 其他地址需要配置反向代理(如 nginx)启用 HTTPS
  • 这是浏览器的安全限制,直接 IP 无法分享桌面

临时解决方案

如果一定要用 IP+端口 的方式进行桌面分享,可以在浏览器设置中:
  1. 打开浏览器设置
  1. 搜索 WebRTC 相关设置
  1. 开启 Anonymize local IPs exposed by WebRTC
  1. 设置为 Enabled 状态

端口配置

修改服务端口

以 Linux 为例,将服务绑定到 18080 端口:
./file-transfer-server-linux-amd64 -port 18080

Docker 端口映射

使用 Docker 时修改端口映射:
docker run -d -p 18080:8080 matrixseven/file-transfer-go:latest

端口选择建议

  • 避免使用系统保留端口(1-1024)
  • 确保选择的端口未被其他服务占用
  • 防火墙需要开放对应端口
  • 建议使用 8080, 3000, 8000 等常用端口

安全内网部署

实验性功能

以下方案理论可行,但未经充分验证,请在测试环境中验证后再用于生产。

内网部署方案

1. 部署内网 DNS 服务

配置内网域名解析,避免直接使用 IP 地址访问

2. 配置 STUN/TURN 服务

部署内网 STUN/TURN 服务器,处理 NAT 穿透

3. 更新服务配置

在应用设置中配置自定义 STUN/TURN 服务器地址

STUN/TURN 服务器推荐

  • Coturn:开源 TURN/STUN 服务器
  • Janus:WebRTC 网关,包含 STUN/TURN 功能
  • 自建方案:基于 Docker 快速部署

配置提示

在应用的 设置 页面中,可以添加自定义 ICE 服务器:
  • STUN 服务器格式:stun:your-server.local:3478
  • TURN 服务器格式:turn:your-server.local:3478
  • TURN 服务器需要用户名和密码认证

数据传输机制

传输方式

✓ 点对点传输

通过 WebRTC 建立直接连接,数据不经过服务器

✓ 中继传输

当直连失败时,通过 TURN 服务器中继数据

传输流程

1建立信令连接
通过 WebSocket 服务器交换连接信息
2NAT 穿透
使用 STUN 服务器检测网络环境,尝试直连
3数据传输
建立 P2P 连接后直接传输,或通过 TURN 中继

隐私保护

  • 所有文件数据通过点对点传输,服务器不存储任何文件内容
  • 房间码具有时效性,连接断开后自动失效
  • 支持端到端加密,确保传输安全
  • 即使使用 TURN 中继,数据也是加密传输的
 
上一篇
VPS一键重装系统脚本:bin456789/reinstall
下一篇
OpenList平替Alist