transfer.zip-web
开源自托管文件传输工具
⭐ 1.5k JavaScript AGPL-3.0
✓ 解决什么问题
解决用户对大文件传输的隐私担忧和服务器存储依赖问题。提供端到端加密的P2P传输(文件不落盘),同时保留传统服务器上传的易用性和可恢复性。自托管选项允许用户完全掌控数据传输,避免依赖第三方服务。
✓ 最适合
需要临时分享大文件(如视频、压缩包)且注重隐私的用户或团队;希望自托管文件传输服务以避免数据外泄;需要可恢复上传(tus协议)的场景。
✗ 不适合
需要文件长期存储或永久链接的场景(存储传输过期后自动删除);不希望在浏览器中同时在线才能传输(快速传输要求双方在线);需要高并发大规模商业传输(非专门优化)。
快速上手
bash
git clone https://github.com/robinkarlberg/transfer.zip-web.git
cd transfer.zip-web
npm install && npm run dev
启动后访问 http://localhost:3000 即可使用
生产环境部署请参考 SELFHOSTING.md 项目详情
项目概述
Transfer.zip 是一个开源的、自托管的文件传输网页应用,旨在替代 WeTransfer、Smash 等服务。它基于 Next.js、WebRTC、WebSockets、Node.js、Fastify、MongoDB 和 zip.js 构建,代码托管在 GitHub,拥有 1492 个 Star,采用 AGPL-3.0 许可证。
核心功能
- 快速传输(Quick Transfers):基于 WebRTC 的端到端加密 P2P 文件传输,使用 AES-GCM 256 位密钥加密。文件直接流式传输到接收方,不存储在服务器上。无文件大小和带宽限制(若 P2P 不可达,则回退至服务器中继,但文件超过 10MB 时强制使用中继)。支持二维码或链接分享。
- 存储传输(Stored Transfers):使用 tus 协议进行可恢复、分块上传,支持 S3 兼容存储或本地磁盘。上传完成后文件临时存储,过期自动永久删除。
- 传输请求:允许他人向你上传文件,供后续下载。
- 自定义品牌:上传自定义图标和背景(需 S3 bucket)。
- 邮件支持:发送包含下载链接的邮件,支持品牌定制。
- 自托管:提供详细的自托管指南(
SELFHOSTING.md),用户可以完全控制数据和服务器。
已知限制
- 0 字节文件在快速传输中会卡住。
- Firefox 移动端快速传输暂不可用。
- Safari 浏览器快速传输不稳定(背景切换时 WebSocket 中断)。
技术栈
- 前端:Next.js
- P2P 信令:Node.js + WebSockets
- 存储:MongoDB
- 文件上传协议:tus
- 加密:AES-GCM(客户端生成密钥)
- 压缩:zip.js