Qovans Docs
Integrations

Stockage S3

MinIO pour les images produits, PDF et fichiers importes.

Qovans utilise MinIO (compatible S3) pour stocker les fichiers. MinIO tourne en conteneur Docker avec un volume persistant.

Structure du bucket

Tout est dans un seul bucket qovans avec des prefixes :

qovans/
├── images/{filename}                              ← images produits (.png, .webp)
├── invoices/{customer_id}/{invoice_number}.pdf     ← factures PDF
├── orders/{order_number}/{filename}.pdf            ← documents commande
├── imports/products/{timestamp}_{filename}.xlsx    ← imports Excel
├── imports/linked/{timestamp}_{filename}.csv       ← imports articles lies
└── exports/{filename}                             ← exports divers

Configuration

VariableValeur prod
MINIO_ENDPOINT127.0.0.1:9000
MINIO_ACCESS_KEY(dans .env.prod)
MINIO_SECRET_KEY(dans .env.prod)
MINIO_BUCKETqovans
MINIO_USE_SSLfalse (acces local uniquement)

Proxy images

Les images produits sont servies aux clients via un proxy dans le backend (/fichiersimages/{filename}). Ce proxy :

  1. Telecharge l'image depuis MinIO
  2. Ajoute un header ETag (hash MD5 du contenu)
  3. Renvoie un 304 Not Modified si le navigateur a deja la bonne version

Cela evite d'exposer MinIO directement sur internet.

Console MinIO

La console d'administration MinIO est accessible en local sur le port 9001 :

# Depuis le VPS, ouvrir un tunnel SSH
ssh -L 9001:localhost:9001 -i ~/.ssh/vps_qovans root@81.22.222.96

# Puis ouvrir dans le navigateur : http://localhost:9001
# Login avec MINIO_ROOT_USER / MINIO_ROOT_PASSWORD

Service

Le service S3StorageService dans backend/app/services/s3_storage_service.py fournit des methodes pour upload, download, list et delete de fichiers. Il cree automatiquement le bucket au premier usage.

Sauvegarde

Pour sauvegarder les fichiers MinIO, copier le volume Docker ou utiliser le client mc :

# Installer mc (MinIO Client)
docker run --rm -it --network host minio/mc alias set local http://localhost:9000 $MINIO_ACCESS_KEY $MINIO_SECRET_KEY
docker run --rm -it --network host minio/mc mirror local/qovans /backup/minio/