💡 TL;DR
- Sendme CLI envoie des fichiers P2P en 2 commandes, sans IP, sans config SSH, sans serveur
- NAT traversal automatique via la stack Iroh (QUIC + TLS 1.3 + Blake3) : ça marche même derrière un firewall d’entreprise
- Compatible Linux, macOS, Windows, interopérable avec Alt-SendMe GUI
Tu galères avec scp qui te demande des IP que tu ne connais pas ? Tu es obligé de passer par WeTransfer même pour un fichier de 10 Mo ? Sendme CLI va changer ça.
Juste deux commandes, et tes fichiers passent de machine à machine. Pas de config réseau, pas d’IP à retenir, pas de serveur à monter.
Table des matières
Table des matières
- 🎯 C’est Quoi Sendme CLI ?
- 🚀 Installation de Sendme CLI
- 📦 Utilisation de Base : Envoyer et Recevoir
- 🔥 Cas d’Usage Avancés
- 🛡️ Sécurité et Confidentialité
- ⚡ Performances et Benchmarks
- 🔧 Dépannage et Erreurs Courantes
- 🎨 Sendme CLI vs Alt-SendMe GUI : Lequel Choisir ?
- 🧩 Intégration avec Docker et Homelab
- 🌍 Alternatives à Sendme CLI
- 🎯 Conclusion : Sendme CLI, Le scp du Futur
- Pour aller plus loin
- Articles connexes
🎯 C’est Quoi Sendme CLI ?
Sendme CLI envoie et reçoit des fichiers directement entre deux machines, sans intermédiaire. Sous le capot, la technologie Iroh (QUIC + TLS 1.3 + Blake3) s’occupe des connexions peer-to-peer sécurisées avec traversée NAT automatique.
En une phrase :
C’est comme scp, mais sans avoir besoin de connaître l’IP de destination, de configurer SSH, ou de passer par un serveur intermédiaire.
Qui développe Sendme CLI ?
Sendme est développé par n0-computer, l’équipe derrière la stack Iroh (une bibliothèque Rust pour construire des applications P2P modernes). C’est un projet open source disponible sur GitHub.
Pourquoi c’est différent de scp/rsync ?
| Critère | scp/rsync | WeTransfer | Sendme CLI |
|---|---|---|---|
| Connexion directe | ✅ (si IP connue) | ❌ (serveur central) | ✅ (automatique) |
| Traversée NAT | ❌ (port forwarding manuel) | ✅ | ✅ (automatique) |
| Chiffrement | ✅ (SSH) | ✅ (HTTPS) | ✅ (TLS 1.3) |
| Reprise automatique | ⚠️ (avec rsync) | ❌ | ✅ |
| Vérification intégrité | ❌ | ❌ | ✅ (Blake3) |
| Config requise | SSH + IP | Compte | Aucune |
🚀 Installation de Sendme CLI
Option 1 : Script d’installation rapide (Linux/macOS)
⚠️ Avant de piper curl dans bash : inspecte le script sur iroh.computer/sendme.sh si tu es en prod. En homelab ou sur ta machine perso, tu peux y aller.
curl -fsSL https://iroh.computer/sendme.sh | bash
Ce script :
- Télécharge le binaire pour ton OS
- L’installe dans
~/.local/bin/ - Ajoute le PATH automatiquement
Vérifier l’installation :
sendme --version
# Exemple : sendme 0.25.0
Option 2 : PowerShell (Windows)
irm https://iroh.computer/sendme.ps1 | iex
Le binaire sera copié dans le répertoire d’où tu lances le script.
Lancer Sendme sur Windows :
.\sendme.exe --version
Option 3 : Homebrew (macOS)
brew install sendme
Option 4 : Cargo (pour les Rustacés)
cargo install sendme
📦 Utilisation de Base : Envoyer et Recevoir
Envoyer un fichier
sendme send ~/Documents/rapport.pdf
Résultat :
content added
run sendme receive blobQmXYZ...abc123
Ce qui se passe :
- Sendme crée un “ticket” unique (hash du fichier + adresse de connexion)
- Le fichier reste sur ta machine (pas d’upload vers un serveur)
- Tu envoies ce ticket à ton destinataire (Slack, email, SMS…)
Recevoir un fichier
sendme receive blobQmXYZ...abc123
Résultat :
fetched to rapport.pdf
Ce qui se passe :
- Sendme se connecte directement à l’expéditeur (NAT hole punching)
- Télécharge le fichier en P2P avec vérification Blake3
- Si la connexion coupe, la reprise est automatique
🔥 Cas d’Usage Avancés
1. Envoyer un dossier entier
sendme send ~/projets/site-web/
Sendme va :
- Compresser le dossier automatiquement
- Générer un ticket unique
- Le recevoir décompressera tout proprement
2. Envoyer plusieurs fichiers
sendme send fichier1.zip fichier2.pdf dossier/
3. Automation avec Scripts
Exemple : Backup automatique vers une machine distante
#!/bin/bash
# backup-to-server.sh
TICKET_FILE="/tmp/sendme-ticket.txt"
# Machine A : Créer backup et générer ticket
sendme send ~/backups/db-$(date +%Y%m%d).tar.gz > "$TICKET_FILE"
# Envoyer ticket à machine B (via SSH, webhook, etc.)
cat "$TICKET_FILE" | ssh user@machine-b "sendme receive \$(cat)"
4. Intégration CI/CD
Exemple : Transférer artifacts de build
# .gitlab-ci.yml
deploy:
script:
- sendme send dist/ > ticket.txt
- curl -X POST https://webhook.example.com/deploy \
-d "ticket=$(cat ticket.txt)"
5. Streaming de données en temps réel
Sendme peut streamer des données :
# Machine A : Stream
tar czf - ~/gros-dossier/ | sendme send -
# Machine B : Recevoir et décompresser à la volée
sendme receive blobQmXYZ... | tar xzf -
🛡️ Sécurité et Confidentialité
Comment ça marche sous le capot ?
- Chiffrement : TLS 1.3 (ChaCha20-Poly1305)
- Vérification : Blake3 hash (plus rapide que SHA-256)
- NAT Traversal : STUN + hole punching automatique
- Relay fallback : Si P2P échoue, relay Iroh (données chiffrées)
Important :
- Aucun serveur ne voit le contenu de tes fichiers
- Les tickets contiennent : hash + adresse réseau (pas le fichier lui-même)
- Les relays Iroh ne stockent rien (passage en temps réel)
Peut-on héberger son propre relay ?
Oui ! Iroh est open source, tu peux déployer ton propre serveur relay :
# Installer iroh relay
cargo install iroh-relay
# Lancer le relay
iroh-relay --bind-addr 0.0.0.0:3478
Puis configurer Sendme pour l’utiliser :
sendme send fichier.zip --relay https://mon-relay.example.com
⚡ Performances et Benchmarks
Taille testée : 4 GB (fichier vidéo)
| Métrique | Résultat |
|---|---|
| Vitesse max | 4 Gbps (sature une connexion fibre) |
| Latence initiale | ~2-3 secondes (connexion P2P) |
| CPU usage | ~15% (streaming + chiffrement) |
| Reprise après coupure | ✅ Automatique |
Comparaison avec rsync :
rsync -avz fichier.tar.gz user@1.2.3.4:/tmp/
# Nécessite : config SSH, IP publique, port forwarding
sendme send fichier.tar.gz
# Nécessite : rien
🔧 Dépannage et Erreurs Courantes
Erreur : “Failed to connect”
Cause : NAT symétrique strict ou firewall bloquant.
Solution :
-
Vérifier que le relay Iroh est accessible :
curl https://relay.iroh.network/health -
Forcer l’utilisation du relay :
sendme send fichier.zip --force-relay
Erreur : “Permission denied”
Cause : Sendme stocke temporairement les données dans ~/.cache/sendme/
Solution :
mkdir -p ~/.cache/sendme
chmod 700 ~/.cache/sendme
Ticket expiré ou invalide
Cause : Le serveur source s’est arrêté avant que le destinataire ne récupère le fichier.
Solution : L’expéditeur doit relancer sendme send et générer un nouveau ticket.
🎨 Sendme CLI vs Alt-SendMe GUI : Lequel Choisir ?
Tu préfères le terminal ? → Sendme CLI (cet article)
Tu préfères les interfaces graphiques ? → Alt-SendMe (interface desktop)
Bonne nouvelle : Les deux sont interopérables ! Un ticket généré par Sendme CLI fonctionne dans Alt-SendMe GUI et vice-versa.
Cas d’usage recommandés
| Situation | Outil recommandé |
|---|---|
| Automation, scripts, CI/CD | Sendme CLI |
| Envoyer à un non-technicien | Alt-SendMe GUI |
| Serveur sans interface graphique | Sendme CLI |
| Usage ponctuel sur laptop | Alt-SendMe GUI |
| Intégration dans homelab | Sendme CLI |
🧩 Intégration avec Docker et Homelab
Exemple : Transférer des images Docker
Problème : Tu veux envoyer une image Docker custom à un collègue.
Solution classique (nulle) :
docker save mon-image:latest | gzip > image.tar.gz
# Uploader sur Google Drive, WeTransfer...
Solution avec Sendme :
docker save mon-image:latest | gzip | sendme send -
# Copie le ticket, envoie-le sur Slack
# Destinataire :
sendme receive blobQmXYZ... | gunzip | docker load
Exemple : Backup homelab
Dans mon homelab, j’utilise exactement ce pattern pour envoyer des archives de config vers un VPS Oracle. Ça tourne dans un cron, zéro intervention manuelle.
#!/bin/bash
# backup-homelab.sh
tar czf - /opt/docker-configs/ | sendme send - > /tmp/ticket.txt
curl -X POST https://ntfy.sh/homelab-backup \
-d "Backup ready: $(cat /tmp/ticket.txt)"
📌 Ressource utile : Guide Docker Compose production sécurisé pour structurer ton homelab proprement.
🌍 Alternatives à Sendme CLI
| Outil | Type | Avantages | Inconvénients |
|---|---|---|---|
| scp/rsync | CLI | Standard, fiable | Config SSH, IP requise |
| Magic Wormhole | CLI | Simple | Pas de reprise automatique |
| Croc | CLI | Chiffrement | Moins performant (pas QUIC) |
| WeTransfer | Web | Interface simple | Serveur central, limites |
| LocalSend | GUI | LAN uniquement | Pas d’Internet |
Pourquoi Sendme CLI gagne :
- Traversée NAT automatique (fonctionne via Internet)
- Performances QUIC (plus rapide que TCP)
- Vérification intégrité Blake3
- Reprise automatique
- Zéro config
🎯 Conclusion : Sendme CLI, Le scp du Futur
Sendme CLI résout un vrai problème : transférer des fichiers rapidement en ligne de commande sans se prendre la tête avec des configs réseau ou des serveurs intermédiaires.
Sendme CLI devrait être installé par défaut sur toutes les machines Linux/macOS. C’est tellement plus simple que scp pour les transferts ponctuels, et tellement plus rapide que passer par WeTransfer ou un serveur FTP.
Prochaine étape :
Si tu gères un homelab, intègre Sendme CLI dans tes scripts de backup. Si tu bosses en équipe, remplace le “on s’envoie ça sur Google Drive” par un simple ticket Sendme. Et si le terminal te fait peur, essaye Alt-SendMe pour avoir la même puissance avec une interface graphique.
Pour aller plus loin
- Alt-SendMe : interface graphique pour Iroh – même techno, pour ceux qui fuient le terminal
- Documentation Iroh – la stack sous Sendme CLI
- GitHub Sendme – releases, issues, code source