Files
wiki/Catalogue-Self-Hosted/apps/app-pairdrop.md
T
2026-06-09 18:40:21 +02:00

4.1 KiB


title: PairDrop created: 2026-06-08 updated: 2026-06-08 type: app tags: [catalogue, local-file-sharing, webrtc, typescript, app-marathon3-rattrapage-a] confidence: high contested: false sources: [https://selfh.st/apps/?tag=File+Sharing, https://pairdrop.net/]

🔗 PairDrop

Partage de fichiers P2P nouvelle génération : fork moderne de Snapdrop avec Docker, écran de room, notifications, et mode "public" pour Internet.

📋 Informations Générales

Champ Valeur
Site web pairdrop.net
GitHub schlagmichander/PairDrop
License GPL-3.0
Langage TypeScript
Étoiles GitHub 6.5k
Catégorie [[cat-local-file-sharing

📝 Description

PairDrop est le fork moderne de Snapdrop par schlagmichander, qui ajoute des fonctionnalités attendues : Docker natif, TURN server, QR codes, et mode "rooms" pour partager entre pairs à distance.

Fonctionnalités :

  • P2P via WebRTC : pas de serveur de fichiers
  • Mode "Same Network" : LAN-only (comme Snapdrop)
  • Mode "Public" : utilise un TURN server pour traverser Internet
  • Rooms : créez un salon et partagez le lien/QR code
  • Pair via URL : envoyez un lien, le destinataire accepte
  • Auto-pairing : basé sur le navigateur/IP
  • Notifications web : push pour nouveaux pairs
  • Historique des transferts
  • Multi-fichiers et dossiers
  • Self-hostable : Docker officiel

Différence vs Snapdrop original : PairDrop = Docker natif, TURN server intégré, rooms, notifications, sécurité durcie. Snapdrop = démo plus simple.

Pour qui : équipes distantes, freelances qui partagent avec clients, ateliers en présentiel, communautés en ligne.

🚀 Installation

Docker Compose (recommandé)

version: '3.8'
services:
  pairdrop:
    image: ghcr.io/schlagmichander/pairdrop:latest
    container_name: pairdrop
    restart: unless-stopped
    ports:
      - "3000:3000"
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.pairdrop.rule=Host(`drop.example.com`)"
      - "traefik.http.routers.pairdrop.tls.certresolver=letsencrypt"
    environment:
      - RTC_CONFIG_IPV4=stun.l.google.com:19302
      - RTC_CONFIG_IPV6=stun.l.google.com:19302

Option : TURN server (pour le mode public)

version: '3.8'
services:
  pairdrop:
    image: ghcr.io/schlagmichander/pairdrop:latest
    container_name: pairdrop
    restart: unless-stopped
    ports:
      - "3000:3000"
    environment:
      - RTC_CONFIG_IPV4=turn:turn.example.com:3478
      - RTC_CONFIG_IPV4_USERNAME=pairdrop
      - RTC_CONFIG_IPV4_CREDENTIAL=changeme
    depends_on:
      - coturn

  coturn:
    image: coturn/coturn:latest
    container_name: pairdrop-turn
    restart: unless-stopped
    ports:
      - "3478:3478/udp"
      - "3478:3478/tcp"
    command: >
      -n
      --realm=turn.example.com
      --user=pairdrop:changeme
      --listening-port=3478
      --no-tls
      --no-dtls

🔄 Alternatives

Open Source

  • app-snapdrop — original
  • app-localsend — apps natives
  • ShareDrop — concept originel
  • WebWormhole — E2E chiffré
  • Wormhole — CLI magic-wormhole
  • Send — version Send spécifique

Propriétaires

  • WeTransfer — cloud freemium
  • Firefox Send — déprécié
  • Send Anywhere — code à 6 chiffres
  • Dropbox Transfer — jusqu'à 100 MB

🔐 Sécurité

  • WebRTC DTLS : chiffrement E2E P2P
  • TURN server : pour traverser les NAT en mode public
  • Auth via room : code unique par session
  • Pas de log serveur : conçu pour la vie privée
  • HTTPS obligatoire : WebRTC
  • Rate limiting : protection contre abus
  • CSP headers : protection XSS

📚 Ressources

Pages Liées