colisdocs

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 à corriger

Le 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.local

Dans templates/drop/.env.local, pointez les variables vers MinIO :

templates/drop/.env.local
COLIS_BUCKET=drop
COLIS_ENDPOINT=http://localhost:9000
AWS_ACCESS_KEY_ID=minioadmin
AWS_SECRET_ACCESS_KEY=minioadmin

Puis lancez-la :

bun run --filter colis-drop dev   # http://localhost:3400

Dé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 :

colis.config.json
{
  "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
K7QP2M4X

Le 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:00

La 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 K7QP2M4X

Ensuite

Sur cette page