# colis avec MinIO

> Livrez vos fichiers à vos clients depuis un bucket MinIO avec colis : la configuration createBucket(), le fichier de départ de la CLI, et ce qu’il faut savoir sur ce fournisseur.

Canonical: https://colis-site.vercel.app/providers/minio · Markdown: https://colis-site.vercel.app/providers/minio.md · English: https://colis-site.vercel.app/en/providers/minio

Une commande Docker, et tout le parcours de livraison tourne sur votre laptop.

**createBucket()**
```ts
import { createBucket } from '@colis/core'

const store = createBucket({
  bucket: 'transfers',
  endpoint: 'http://localhost:9000',
  credentials: { accessKeyId: 'minioadmin', secretAccessKey: 'minioadmin' },
})
```

## Pourquoi celui-ci
Un MinIO local est la façon la moins chère d’essayer colis pour de vrai : le même PutObject avec les mêmes en-têtes conditionnels, aucun compte à créer et aucun réseau à attendre. Le .env.example de la page de livraison a un bloc prévu pour lui.

## Un fichier de départ, et ce qu’il reste à faire.
init écrit le fichier avec des références ${VAR} plutôt que des secrets : il est fait pour être versionné ; le fichier d’environnement qu’il désigne, non.

```sh
colis init --provider minio --bucket transfers
```
**colis.config.json**
```json
{
  "bucket": "transfers",
  "endpoint": "http://localhost:9000",
  "forcePathStyle": true,
  "prefix": "transfers",
  "expiresIn": "1h",
  "credentials": { "accessKeyId": "minioadmin", "secretAccessKey": "minioadmin" }
}
```

### Ensuite
1. 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"
2. Créez le bucket depuis la console sur http://localhost:9001.
3. Lancez `colis verifier`. Il effectue les opérations dont colis a besoin et rapporte ce qui s’est passé.

## Notes sur MinIO.
- **Adressage path-style** — Les passerelles auto-hébergées exigent https://endpoint/bucket/key. Définir un endpoint l’active ; la configuration de départ l’écrit explicitement pour que l’intention soit visible.
- **Auto-hébergé en production aussi** — La même configuration, avec de vrais identifiants et TLS, tourne contre un cluster MinIO ou toute passerelle qui implémente le PutObject conditionnel. colis verifier vous dit si la vôtre le fait.
- **Nettoyage des expirés** — L’expiration empêche un colis d’être remis ; seule une règle de cycle de vie supprime l’objet. Donnez au préfixe une règle qui expire les objets après un jour ou deux, et colis verifier passe au vert.

[Le guide complet](https://colis-docs.vercel.app/docs/stockages)
