137 lines
4.1 KiB
Markdown
137 lines
4.1 KiB
Markdown
---
|
|
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](https://pairdrop.net) |
|
|
| **GitHub** | [schlagmichander/PairDrop](https://github.com/schlagmichander/PairDrop) |
|
|
| **License** | GPL-3.0 |
|
|
| **Langage** | TypeScript |
|
|
| **Étoiles GitHub** | 6.5k ⭐ |
|
|
| **Catégorie** | [[cat-local-file-sharing|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é)
|
|
|
|
```yaml
|
|
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)
|
|
|
|
```yaml
|
|
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
|
|
- [Documentation](https://github.com/schlagmichander/PairDrop)
|
|
- [GitHub](https://github.com/schlagmichander/PairDrop)
|
|
- [Démo](https://pairdrop.net/)
|
|
|
|
## Pages Liées
|
|
- [[cat-local-file-sharing]] — Catégorie File Sharing
|
|
- [[app-snapdrop]] — Original
|
|
- [[recettes-docker-compose]] — Templates Docker
|