返回目录
开源项目其他开源工具类新手

FilePizza:浏览器内的点对点文件传输

FilePizza 是一个基于 WebRTC 的浏览器点对点文件传输开源项目,由 Alex Kern 与 Neeraj Baid 在 UC Berkeley 期间开发。它省去了其他网页文件分享服务必须先上传到服务器的步骤,数据不经过中间服务器存储,因此传输快速、私密且安全。官方托管实例位于 file.pizza。v2 版本带来全新 UI(支持深色模式)、移动端浏览器(含 Mobile Safari)支持、上传者到下载者的浏览器直连(WebRTC,不再使用 WebTorrent)与更快握手、上传者进度监控与主动中止、密码保护与举报等安全措施、多文件一次上传并以 zip 交付、基于 Service Worker 的流式下载,以及使用 Redis 的服务器状态进程外存储。

0 次阅读2026/09/14 发布
FilePizza:浏览器内的点对点文件传输 来源图片

社区作者 · zZz

它解决什么问题

FilePizza 是一个在浏览器中完成点对点文件传输的开源 Web 应用。与其他网页文件分享服务不同,它利用 WebRTC 消除了“先上传到服务器”的中间环节:数据从上传者浏览器直接发送到下载者浏览器,不存储在中间服务器,因此传输过程快速、私密且安全。

项目提供了托管实例 file.pizza,也可以自托管运行。

FilePizza v2 的主要变化:

  • 全新 UI,支持深色模式,构建于现代浏览器技术之上。
  • 支持大多数移动浏览器,包括 Mobile Safari。
  • 传输改为上传者到下载者浏览器之间的直连(WebRTC,不使用 WebTorrent),握手更快。
  • 上传者可以监控传输进度,并可随时中止传输。
  • 更完善的安全与保护措施:密码保护与举报功能。
  • 支持一次上传多个文件,下载者会以 zip 文件形式接收。
  • 通过 Service Worker 实现流式下载。
  • 使用 Redis 在进程外存储服务器状态。

技术栈:Next.js、Tailwind、TypeScript、React、用于 WebRTC 的 PeerJS、View Transitions、Redis(可选)。

服务器可通过环境变量进行定制,包括 REDIS_URL、COTURN_ENABLED、TURN_HOST、TURN_REALM、STUN_SERVER、PEERJS_HOST、PEERJS_PATH。

许可证与致谢:FilePizza 以 BSD 3-Clause 许可证发布,披萨插画由 iblowyourdesign 提供。

— 本文由 AI 根据公开来源辅助整理,命令、版本与许可证请在使用前到原始页面复核。

安装 / 开始使用

以下命令与配置均来自项目 README,来源未明确说明所需的 Node.js 版本与 pnpm 版本,需自行准备相应运行时环境(待核验)。

一、获取源码与本地开发

  1. 克隆仓库:
命令
git clone https://github.com/kern/filepizza.git
  1. 安装依赖:
命令
pnpm install
  1. 以开发模式运行:
命令
pnpm dev
  1. 构建生产版本:
命令
pnpm build
  1. 启动生产服务:
命令
pnpm start

二、使用 Docker 运行

命令
pnpm docker:build
命令
pnpm docker:up
命令
pnpm docker:down

三、环境变量配置(可选项,未设置时使用默认值)

  • REDIS_URL:用于存储频道(channel)元数据的 Redis 连接串。若不设置,FilePizza 会回退到内存存储。
  • COTURN_ENABLED:设为 true 时启用 TURN 支持,以便连接位于 NAT 后的对等端。
  • TURN_HOST:TURN 服务器的主机名或 IP,默认 127.0.0.1。
  • TURN_REALM:生成 TURN 凭据时使用的 realm,默认 file.pizza。
  • STUN_SERVER:当 COTURN_ENABLED 未启用时使用的 STUN 服务器 URL,默认 stun:stun.l.google.com:19302。
  • PEERJS_HOST:自托管 PeerJS 服务器的主机名或 IP,默认 0.peerjs.com。
  • PEERJS_PATH:自托管 PeerJS 服务器的路径,默认 /。

四、首次运行与常见问题(来自 FAQ)

  • 文件如何发送?文件由你的浏览器直接发送到下载者的浏览器,不经过服务器;使用 WebRTC,因此上传者需要保持浏览器窗口打开直到传输完成。
  • 可以多人同时下载同一个文件吗?可以,只需把短链接或长链接发给他们。
  • 文件能有多大?取决于你的浏览器能处理的大小。
  • 关闭浏览器会怎样?你的文件链接将不再可用;若某位下载者已完成传输,该下载者会继续向未完成的下载者做种子,但无法再发起新的下载。
  • 文件是否加密?是。由于 DTLS,所有 WebRTC 通信都会自动使用公钥加密;还可为上传额外设置可选密码,增加一层安全保护。

来源教程配图

FilePizza wordmark
配图 1 · FilePizza wordmark查看原图

适用场景

在两台设备之间直接传输文件
避免先上传到第三方服务器
需要隐私保护的临时文件分享场景
向多人同时分发同一个文件(共享短链接或长链接)
自托管一套内部使用的点对点文件中转页面
通过 Docker 快速部署可用的文件直传服务
为上传内容增加密码保护后再分享链接