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