点对点文件传输利器FilePizza

简介

什么是 FilePizza ?

FilePizza 是一个开源的点对点(P2P)文件传输工具,通过浏览器实现快速、安全的文件共享。它使用 WebRTC 技术,允许用户直接在浏览器之间传输文件,而无需中间服务器存储数据。这使得文件传输过程极其快速、私密且安全。

主要特点

  • 完全点对点:文件不经过服务器中转,最大程度保护用户隐私。
  • 高速传输:利用 WebRTC,传输速度仅受限于双方的网络带宽。
  • 现代用户界面:全新的 UI 设计,支持清爽的明暗模式切换。
  • 多文件支持:可以一次选择多个文件,接收方将下载到一个 ZIP 压缩包中。
  • 跨平台:支持所有现代桌面和移动浏览器(包括移动端 Safari)。
  • 安全可靠:可以为分享设置密码,并随时监控传输进度或中止传输。
  • 实时通知:上传者和下载者可以通过界面实时了解传输状态。

应用场景

  • 快速分享大文件:无需等待漫长的上传过程,立刻将大文件(如视频、设计稿)发送给同事或朋友。
  • 保护隐私:发送包含敏感信息的文件,因为文件不会存储在任何云端服务器上。
  • 临时文件交换:在自己的不同设备之间(例如从电脑到手机)快速传输文件。

安装

在群晖上以 Docker 方式安装。

在注册表中搜索 filepizza ,选择第一个 kern/filepizza,版本选择 latest

本文写作时, latest 版本对应为 3bd340d

由于该项目可能依赖 redis 等多个服务,因此直接使用 docker-compose 是最便捷的方式。

将下面的内容保存为 docker-compose.yml 文件。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
services:
redis:
image: redis:latest
container_name: filepizza-redis
# ports:
# - 6379:6379
volumes:
- ./data:/data

coturn:
image: coturn/coturn
container_name: filepizza-coturn
ports:
- 3478:3478
- 3478:3478/udp
- 5349:5349
- 5349:5349/udp
# Relay Ports
# - 49152-65535:49152-65535/udp
environment:
- DETECT_EXTERNAL_IP=yes
- DETECT_RELAY_IP=yes
command: -n --log-file=stdout --redis-userdb="ip=redis connect_timeout=30"

filepizza:
image: kern/filepizza:latest
container_name: filepizza-app
ports:
- 8874:8080
environment:
- PORT=8080
- REDIS_URL=redis://redis:6379
depends_on:
- redis

关于 docker-compose.yml 的简单说明

服务 属性 描述
redis image 使用最新的 Redis 镜像 (redis:latest)
container_name 容器名称为 filepizza-redis,用于识别和管理 Redis 容器
volumes 将主机的 ./data 目录挂载到容器的 /data 目录,以持久化存储 Redis 数据
coturn image 使用 Coturn 的官方镜像 (coturn/coturn)
container_name 容器名称为 filepizza-coturn
ports - 3478TURN 协议的默认端口,用于处理 UDPTCP 的媒体流传输
- 5349TURN 的安全传输(TLS)端口,允许通过加密连接进行 TURN 服务的通信
environment - DETECT_EXTERNAL_IP=yes,检测外部 IP
- DETECT_RELAY_IP=yes ,检测中继 IP
command -n: 在后台运行
--log-file=stdout: 将日志输出到标准输出
--redis-userdb: 配置 Coturn 使用 Redis 作为用户数据库,指定连接信息
filepizza image 使用最新的 FilePizza 镜像 (kern/filepizza:latest)
container_name 容器名称为 filepizza-app
ports 将容器的 8080 端口映射到主机的 8874 端口,以便访问 FilePizza 应用
environment - PORT=8080:设置应用运行的端口为 8080
- REDIS_URL=redis://redis:6379:设置 Redis 连接的 URL,指向 Redis 服务
depends_on 表示 filepizza 服务依赖于 redis 服务,确保 redis 在启动 filepizza 之前已就绪

然后通过 SSH 登录到您的群晖,执行下面的命令:

1
2
3
4
5
6
7
8
9
10
# 新建文件夹 filepizza 和 子目录
mkdir -p /volume1/docker/filepizza/data

# 进入 filepizza 目录
cd /volume1/docker/filepizza

# 将 docker-compose.yml 放入当前目录

# 一键启动
docker-compose up -d

运行

在浏览器中输入 http://群晖IP:8874 就能看到主界面。

用法非常简单:

  1. 点击 “Drop a file to get started” 选择一个或多个文件。
  2. 你的浏览器会生成一个唯一的链接。
  3. 将此链接发送给接收方。
  4. 接收方打开链接后,文件传输将直接在你们的浏览器之间开始。
  5. 在文件传输完成之前,请不要关闭你的浏览器窗口。

从硬盘中找一个文件

可以设置密码,或者直接点 Start 开始,会生成长链接、短链接和二维码

另一台机器上打开分享的链接

开始下载

回到分享的机器,能看到下载机器的浏览器的版本

参考文档

kern/filepizza: :pizza: Peer-to-peer file transfers in your browser
地址:https://github.com/kern/filepizza

FilePizza • Your files, delivered.
地址:https://file.pizza/