5.7 KiB
title: FilePizza created: 2026-06-07 updated: 2026-06-07 type: app tags: [catalogue, downloads, file-sharing, p2p, webrtc, nodejs, react] confidence: high contested: false sources: [https://selfh.st/apps/?tag=downloads, https://github.com/kern/filepizza]
FilePizza
Partage de fichiers P2P dans le navigateur via WebRTC. Aucun fichier n'est uploadé sur un serveur : les pairs se connectent directement et le transfert passe d'égal à égal. Idéal pour partager un fichier volumineux en une URL courte.
| Métadonnée | Valeur |
|---|---|
| Site web | https://file.pizza/ |
| GitHub | https://github.com/kern/filepizza |
| License | BSD-3-Clause |
| Langage | TypeScript (Node.js + React) |
| Étoiles GitHub | 612 ⭐ |
| Dernière MAJ | 2026-05 |
| Catégorie | cat-downloads |
Description
FilePizza est une application de partage de fichiers peer-to-peer basée sur WebRTC. Le principe est radical : l'uploader glisse un fichier dans la page web, FilePizza génère une URL courte, et tous les destinataires qui ouvrent cette URL téléchargent directement depuis le navigateur de l'uploader via une connexion WebRTC chiffrée (DTLS-SRTP). Le serveur de signalisation n'est utilisé que pour initier la connexion : les données ne transitent jamais par lui.
Cette approche résout un problème classique des plateformes classiques type WeTransfer : la limite de taille (souvent 2 Go), le stockage temporaire sur un serveur tiers (donc copie sur infrastructure non maîtrisée), et la durée d'expiration. Avec FilePizza, il n'y a pas de limite de taille (limitée uniquement par la RAM de l'uploader), pas de serveur de stockage, et le lien reste valide tant que l'uploader laisse la page ouverte.
FilePizza utilise PeerServer (ou tout autre serveur de signalisation WebRTC compatible) pour faire transiter les handshakes SDP/ICE et établir la connexion P2P. La version officielle tourne sur file.pizza mais le projet est conçu pour être self-hostable : clone, build, et un seul node plus tard on a son instance privée. Le projet est en TypeScript avec un frontend React/Vite et un backend Node.js minimal.
Installation
Option 1 : Docker Compose (recommandé)
services:
filepizza:
image: ghcr.io/kern/filepizza:latest
container_name: filepizza
restart: unless-stopped
ports:
- "8083:8083"
environment:
- NODE_ENV=production
- PORT=8083
- PEERJS_HOST=peerjs-server
- PEERJS_PORT=9000
- PEERJS_PATH=/peerjs
depends_on:
- peerjs-server
peerjs-server:
image: peerjs/peerjs-server:latest
container_name: peerjs
restart: unless-stopped
ports:
- "9000:9000"
UI sur http://localhost:8083. Le serveur PeerJS gère la signalisation WebRTC.
Option 2 : Installation manuelle
git clone https://github.com/kern/filepizza
cd filepizza
pnpm install
pnpm build
pnpm start
# par défaut sur http://localhost:8083
Configuration
- Serveur PeerJS : par défaut, FilePizza utilise un serveur public (
0.peerjs.com). Pour un setup privé, déployer un PeerJS Server local (image Docker officiellepeerjs/peerjs-server). - Reverse proxy : configurer HTTPS pour que WebRTC fonctionne correctement (les navigateurs refusent
getUserMediaet la plupart des APIs P2P sur HTTP). - Limite de taille :
MAX_FILE_SIZEcôté serveur (par défaut 1 Go, peut être augmenté pour des RAM plus importantes). - TURN server : pour les pairs derrière des NAT stricts, déployer un TURN (coturn, app-coturn) sinon le transfert peut échouer.
- Auth : FilePizza n'a pas d'authentification native : placer derrière un SSO (app-authelia) pour exposer en privé.
- Logging : PeerJS Server expose des logs de signalisation utiles pour debug.
Alternatives
Open Source
- Send (Mozilla) — Fork historique de FilePizza, depuis abandonné
- WebWormhole — Partage P2P CLI + Web, basé sur WebRTC
- Wormhole (Magic-Wormhole) — Transfert P2P en CLI avec codes courts
- PairDrop — AirDrop-like P2P dans le navigateur
- Snapdrop — Pure WebRTC, transfert multi-appareils LAN
- OnionShare — Transfert P2P via Tor
Propriétaires
- WeTransfer — Service freemium, 2 Go max, fichiers hébergés 7 jours
- Dropbox Transfer — Jusqu'à 100 Go, payant
- Wetransfer Pro — Fonctions avancées (mot de passe, expiration)
- Firefox Send (historique) — Ancien service Mozilla, abandonné
Sécurité
- Le chiffrement est de bout en bout (DTLS-SRTP) : ni le serveur de signalisation, ni le réseau ne voient le contenu
- Le serveur de signalisation ne voit que les métadonnées de connexion (IPs, timing)
- ⚠️ L'URL courte est un secret : toute personne l'ayant peut télécharger
- Ajouter un mot de passe côté client (à demander à l'uploader en parallèle) pour les fichiers sensibles
- Limiter la durée d'exposition de l'URL
- TURN server : attention aux credentials en clair, les générer dynamiquement (coturn supporte
use-auth-secret) - Reverse proxy HTTPS obligatoire : WebRTC nécessite un contexte sécurisé
Ressources
- Site officiel : https://file.pizza/
- Code source : https://github.com/kern/filepizza
- PeerJS (signalisation) : https://peerjs.com/
- WebRTC : https://webrtc.org/
Pages Liées
- cat-downloads — Vue d'ensemble de la catégorie Downloads
- cat-file-sharing — Partage de fichiers en général
- app-authelia — SSO pour restreindre l'accès
- app-coturn — TURN server pour NAT traversal
- app-caddy — Reverse proxy HTTPS
- recettes-docker-compose — Templates Docker