# 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.

Canonical: https://colis-docs.vercel.app/docs/demarrage-rapide · Markdown: https://colis-docs.vercel.app/docs/demarrage-rapide.md

## 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](https://colis-tau.vercel.app) :

```sh
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](https://bun.com) 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.

```sh
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](https://colis-docs.vercel.app/docs/installation) détaille ce que produit le build et comment utiliser les
paquets dans votre propre code.

## 2. Un bucket sur votre machine

```sh
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](http://localhost:9001) (`minioadmin` / `minioadmin`) et créez
un bucket nommé `drop`.

## 3. La page de livraison

```sh
cp templates/drop/.env.example templates/drop/.env.local
```

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

```sh title="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 :

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

Déposez un fichier sur [localhost:3400](http://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.

```sh
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` :

```json title="colis.config.json"
{
  "remote": "http://localhost:3400/api/transfers"
}
```

Vérifiez l’aller-retour, puis envoyez :

```sh
$ 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](http://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

```sh
$ 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 :

```sh
colis envoyer ./maquette-v2.pdf --remplace K7QP2M4X
```

## Ensuite

- [Page de livraison](https://colis-docs.vercel.app/docs/page-de-livraison) : la déployer sur Vercel avec un bucket R2.
- [Webhooks & n8n](https://colis-docs.vercel.app/docs/webhooks) : être prévenu à chaque étape plutôt que de demander.
- [Suivi et validation](https://colis-docs.vercel.app/docs/suivi-et-validation) : ce que contient l’accusé, et qui peut répondre.
