Skip to content

Sendme CLI : Transfert Fichiers P2P en 2 Commandes (Alternative scp Moderne)

Brandon Visca
Updated date:

💡 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 ?

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èrescp/rsyncWeTransferSendme 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 requiseSSH + IPCompteAucune

🚀 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 :

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 :

  1. Sendme crée un “ticket” unique (hash du fichier + adresse de connexion)
  2. Le fichier reste sur ta machine (pas d’upload vers un serveur)
  3. 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 :

  1. Sendme se connecte directement à l’expéditeur (NAT hole punching)
  2. Télécharge le fichier en P2P avec vérification Blake3
  3. 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 :

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 ?

  1. Chiffrement : TLS 1.3 (ChaCha20-Poly1305)
  2. Vérification : Blake3 hash (plus rapide que SHA-256)
  3. NAT Traversal : STUN + hole punching automatique
  4. Relay fallback : Si P2P échoue, relay Iroh (données chiffrées)

Important :

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étriqueRésultat
Vitesse max4 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 :

  1. Vérifier que le relay Iroh est accessible :

    curl https://relay.iroh.network/health
  2. 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

SituationOutil recommandé
Automation, scripts, CI/CDSendme CLI
Envoyer à un non-technicienAlt-SendMe GUI
Serveur sans interface graphiqueSendme CLI
Usage ponctuel sur laptopAlt-SendMe GUI
Intégration dans homelabSendme 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

OutilTypeAvantagesInconvénients
scp/rsyncCLIStandard, fiableConfig SSH, IP requise
Magic WormholeCLISimplePas de reprise automatique
CrocCLIChiffrementMoins performant (pas QUIC)
WeTransferWebInterface simpleServeur central, limites
LocalSendGUILAN uniquementPas d’Internet

Pourquoi Sendme CLI gagne :


🎯 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

Articles connexes

Previous
Compresser images Mac en WebP : méthode qui économise 70% d'espace
Next
SnipeAgent : Automatiser l'inventaire Windows sans Excel ni galères