Démarrage rapide
Un premier colis envoyé et suivi en deux commandes sur le service public, puis la même livraison sur votre propre stockage.
Le plus court : le service public
Sans rien configurer — ni bucket, ni serveur, ni mot de passe — la CLI envoie vers le service public de colis, colis-tau.vercel.app :
npm i -g @mdemb/colis # installe la commande colis
colis envoyer ./maquette.pdf # affiche le code
colis statut <CODE> # envoyé, ouvert, validé ou à corrigerLe lien de retrait est le code derrière l’adresse du service : https://colis-tau.vercel.app/<CODE>.
Votre client y voit l’aperçu, puis valide ou demande des corrections, et colis statut vous le dit.
Le service public est ouvert à tous, donc limité : un fichier de 100 Mo au plus, gardé 24 h au plus, et 20 envois par heure depuis une même adresse. Au-delà, la CLI affiche le refus du serveur
(TOO_LARGE ou RATE_LIMITED) et ce qu’il faut faire. colis config indique quand c’est lui qui
reçoit vos fichiers.
Les fichiers y sont stockés dans le bucket du service, pas dans le vôtre. Pour garder vos livrables chez vous, sans ces limites, déployez votre propre page de livraison : c’est la suite de cette page.
Avec votre propre stockage
La même livraison, sans compte cloud : la page de livraison sur votre machine, un MinIO dans Docker comme bucket, puis la CLI branchée dessus. Le même enchaînement fonctionne ensuite tel quel contre votre déploiement Vercel.
Il vous faut Node 20 ou plus récent, Bun 1.2 ou plus récent, et Docker.
1. Construire depuis le dépôt
Pour la page de livraison en local, on clone et on construit le dépôt ; l’alias remplace npm i -g @mdemb/colis par le build.
git clone https://github.com/mamadouwhile/colis.git && cd colis
bun install && bun run build
alias colis="node $PWD/packages/cli/dist/index.js"Installation détaille ce que produit le build et comment utiliser les paquets dans votre propre code.
2. Un bucket sur votre machine
docker run -p 9000:9000 -p 9001:9001 \
-e MINIO_ROOT_USER=minioadmin -e MINIO_ROOT_PASSWORD=minioadmin \
quay.io/minio/minio server /data --console-address ":9001"Ouvrez la console sur localhost:9001 (minioadmin / minioadmin) et créez
un bucket nommé drop.
3. La page de livraison
cp templates/drop/.env.example templates/drop/.env.localDans templates/drop/.env.local, pointez les variables vers MinIO :
COLIS_BUCKET=drop
COLIS_ENDPOINT=http://localhost:9000
AWS_ACCESS_KEY_ID=minioadmin
AWS_SECRET_ACCESS_KEY=minioadminPuis lancez-la :
bun run --filter colis-drop dev # http://localhost:3400Déposez un fichier sur localhost:3400 : vous obtenez un code, un lien et un QR code. C’est déjà une livraison complète. La suite montre la même chose depuis un terminal.
4. Envoyer avec la CLI
colis init --provider remote écrit un colis.config.json qui parle à une page de livraison plutôt
qu’au bucket : la machine qui envoie n’a besoin d’aucune clé S3.
colis init --provider remoteÉditez le fichier pour qu’il pointe vers votre page. Sans DROP_PASSWORD sur le déploiement, retirez
la ligne token :
{
"remote": "http://localhost:3400/api/transfers"
}Vérifiez l’aller-retour, puis envoyez :
$ colis verifier
✓ Server: http://localhost:3400/api/transfers answered
✓ Create, read, delete: round-tripped code 8WTXQC8R
Ready to store transfers.
$ colis envoyer ./maquette-v2.pdf
maquette-v2.pdf · 1.8 MB · expires in 1 day
K7QP2M4XLe code est la seule chose écrite sur stdout, donc CODE=$(colis envoyer ./maquette-v2.pdf)
fonctionne dans un script.
5. Le client ouvre et répond
Le lien de retrait, c’est le code derrière l’adresse de la page : localhost:3400/K7QP2M4X. Ouvrez-le dans une fenêtre privée, pour être vu comme le client et non comme l’expéditeur. La page affiche l’aperçu du fichier, puis deux boutons : Valider la livraison et Demander des corrections, ce dernier avec un commentaire obligatoire.
6. Suivre la réponse
$ colis statut K7QP2M4X
validé
envoyé 2026-09-22 10:00
ouvert 2026-09-22 11:00
validé 2026-09-22 12:00La première ligne est l’état seul (envoyé, ouvert, validé ou à corriger), donc
colis statut K7QP2M4X | head -1 suffit à un script. --json donne l’accusé complet.
Des corrections demandées ? La version corrigée part sous le même code, et le client la trouve au même lien :
colis envoyer ./maquette-v2.pdf --remplace K7QP2M4XEnsuite
- Page de livraison : la déployer sur Vercel avec un bucket R2.
- Webhooks & n8n : être prévenu à chaque étape plutôt que de demander.
- Suivi et validation : ce que contient l’accusé, et qui peut répondre.