Initial vault setup
This commit is contained in:
@@ -0,0 +1,124 @@
|
||||
---
|
||||
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é)
|
||||
|
||||
```yaml
|
||||
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
|
||||
|
||||
```bash
|
||||
git clone https://github.com/kern/filepizza
|
||||
cd filepizza
|
||||
pnpm install
|
||||
pnpm build
|
||||
pnpm start
|
||||
# par défaut sur http://localhost:8083
|
||||
```
|
||||
|
||||
## Configuration
|
||||
|
||||
1. **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 officielle `peerjs/peerjs-server`).
|
||||
2. **Reverse proxy** : configurer HTTPS pour que WebRTC fonctionne correctement (les navigateurs refusent `getUserMedia` et la plupart des APIs P2P sur HTTP).
|
||||
3. **Limite de taille** : `MAX_FILE_SIZE` côté serveur (par défaut 1 Go, peut être augmenté pour des RAM plus importantes).
|
||||
4. **TURN server** : pour les pairs derrière des NAT stricts, déployer un **TURN** (coturn, [[app-coturn]]) sinon le transfert peut échouer.
|
||||
5. **Auth** : FilePizza n'a pas d'authentification native : placer derrière un SSO ([[app-authelia]]) pour exposer en privé.
|
||||
6. **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
|
||||
Reference in New Issue
Block a user