Je voudrais remercier un utilisateur qui se reconnaîtra, pour l'idée suggérée, étant timide, il préfère ne pas être cité. Non, ce n'est pas Pablo Escobar.
Ce système est loin d'être nouveau, ce n'est pas la question, mais il est élégant et sans limite.
Enfin, pas tout à fait sans limite.
Les seules limites sont VOTRE vitesse de connexion internet et l'espace disque de VOTRE machine.
Aujourd'hui nous allons parler de WarpDrop ! Un service de partage "comme PairDrop", qui va passer à travers les NAT, vous permettant d'envoyer chier ces services de partage de fichiers à qui on pourrait faire l'erreur de confier nos fichiers, même de manière temporaire. Ici, tout se passe entre l'utilisateur A et l'utilisateur B. Notez que ces deux prénoms sont vraiment moches.
Le principe est simple. Je vais sur une page Web, je précharge un fichier, je reçois un lien ou un QR Code que j'envoie à mon destinataire, qui lui même va sur le même site et récupère le fichier.
Comme vous pourrez le constater, de base, par simplicité et rapidité, il y a le serveur STUN de Google dans le .env proposé par le dev.
Est-ce un problème ? Non, pas forcément, STUN ne transporte aucune donnée privée. Il révèle l'IP publique et le port NAT. Infos visibles par le serveur distant.
Si maintenant cela vous ennuie, vous pouvez toujours créer votre serveur STUN. Ce qui fera l'objet d'un autre tutoriel. Voilà pour la minute transparence.
Autre chose, ici je vous propose la version sur un VPS. Pour chez soi, il faut ouvrir quelques ports et ce n'est pas franchement conseillé d'ouvrir à tout va, ni d'exposer ses services sans VPN. Restons dans les bonnes pratiques. Cela dit, pour les plus téméraires d'entres vous, et pour éviter les problèmes de NAT il vous faudra ouvrir les ports :
3478(TCP & UDP)5349(TCP & UDP)443(TCP - utilisé par Traefik)80(TCP - utilisé par Traefik)
Notez que WarpDrop tourne sur 3 fois rien, un simple VPS pourri avec une connexion pas trop pourrie suffit. L'espace disque peut-être ridicule car le fichier n'est jamais stocké sur le serveur.
⚡ Caractéristiques
- Pair-à-pair : Le fichier passe directement de votre machine à la leur. Sans intermédiaire.
- Éphémère : C'est comme Snapchat, mais pour les fichiers zip. Fermez l'onglet, et il disparaît définitivement.
- Go + Next.js : Le backend est un petit binaire Go (parce qu'on aime la vitesse), le frontend est en Next.js (parce qu'on aime souffrir… je plaisante, c'est plutôt sympa en fait).
- STUN/TURN : On a intégré ces fonctionnalités pour que vous puissiez traverser les NAT comme si de rien n'était.




💾 Installation
Prérequis
Avant de commencer, assurez-vous d’avoir :
- Distribution Linux (Ubuntu, Debian, etc ...).
- Docker installé.
- Accès terminal.
- Connexion internet.
- Ajoutez une entrée de type A pointant sur le domaine de votre VPS.
- Cloner le dépôt et entrez dans le dossier créé :
git clone https://github.com/BioHazard786/warpdrop.git && cd warpdrop- Copiez le fichier .env :
cp .env.example .env- Maintenant il faut éditer le fichier .env :
nano .env- Et complétez les quelques informations demandées :
# Domain configuration (used by Traefik, frontend, and backend)
DOMAIN=belginuxtuto.ovh
ACME_EMAIL=zarev@belginux.com
# WebSocket signaling server URL
NEXT_PUBLIC_WS_URL=wss://belginuxtuto.ovh/ws
# STUN server configuration
NEXT_PUBLIC_STUN_SERVER=stun:stun.l.google.com:19302
# TURN server configuration
NEXT_PUBLIC_TURN_SERVER=your-turn-server.com
NEXT_PUBLIC_TURN_USERNAME=warpdrop
NEXT_PUBLIC_TURN_PASSWORD=warpdrop-secret- DOMAIN=belginuxtuto.ovh => Remplacez belginuxtuto.ovh par votre domaine, sous-domaine.
- ACME_EMAIL=zarev@belginux.com => Entrez une adresse mail pour l'ACME, Automated Certificate Management Environment.
- NEXT_PUBLIC_WS_URL=wss://belginuxtuto.ovh/ws => Remplacez belginuxtuto.ovh par votre domaine, sous-domaine.
On va déployer l'application :
docker compose up -d --build- Rendez-vous sur votre domaine :
https://warpdrop.mondomaine.com⬆️ Envoyer un fichier
Lorsque vous arrivez sur votre instance, cela ressemble à ça :

- 1 => Cliquez sur Upload files et sélectionner le fichier à envoyer.

- 1 => Vous pouvez ajouter d'autres fichiers.
- 2 => Cliquez sur Start pour mettre les fichiers en téléchargement.
Vous serez redirigé ici :

- 1 => Vous pouvez voir ici les fichiers disponibles.
- 2 => Vous pouvez partager un QR Code.
- 3 => Ou, vous pouvez partager le lien.
- 4 => Si vous souhaitez arrêter le partage en cours, cliquez sur Stop Upload.
Côté destinataire :

- 1 => Votre destinataire n'a plus qu'à télécharger le fichier.
🗺️ Pour aller plus loin
Il existe quelques variantes pour l'installer suivant vos besoins :