Files
2026-06-09 18:40:21 +02:00

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

  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

Pages Liées