Installation

Installer @fraza-pro/module-drive, créer les tables et régler la taille des tranches d'envoi selon le proxy.

Cette page couvre l'installation de @fraza-pro/module-drive dans un projet déjà structuré par @fraza/start. Le module n'est jamais déclaré à la main : il est découvert au boot par scan des dépendances, comme décrit dans Cycle de vie d'un module.

Ce module est distribué sous la licence Fraza Pro : son utilisation en production demande une licence par projet, renouvelée chaque année, qui comprend les mises à jour, la conformité et le support. Voir Licence et propriété.

Prérequis

  • Un projet généré par npx @fraza/start, avec @fraza/core en version 0.1.14 ou plus, la première qui reconnaît la portée @fraza-pro.
  • La ligne @fraza-pro:registry=https://registry.fraza.ca/ et le token du registre dans le .npmrc du projet, sans lesquels npm i échoue. npx @fraza/start écrit déjà la ligne de portée. Le token s'obtient avec npm login --registry=https://registry.fraza.ca/, puis npx fraza-key le reprend dans le projet. Voir fraza-key.
  • Un stockage objet compatible S3 configuré, Backblaze B2 ou Cloudflare R2. Sans lui, le module démarre mais aucun dépôt n'aboutit. Voir Stocker des fichiers.
  • Un PostgreSQL compilé avec ICU, pour le tri naturel des noms. C'est le cas des images Docker officielles, et de la compilation par défaut depuis la version 16. Sans ICU, la migration du module s'arrête avec un message qui le dit.
  • sharp installé si l'on veut les miniatures d'images. C'est une dépendance de pair facultative : sans elle, le module fonctionne à l'identique, sans vignettes.

Installer

npm i @fraza-pro/module-drive

Ajoutez la variable d'activation dans .env :

FRAZA_MODULE_DRIVE=true

Créez les tables :

npx fraza-db init

Puis redémarrez. L'entrée « Fichiers » apparaît dans la barre latérale de l'admin.

Mettre à jour

Le schéma évolue par migrations versionnées. Après chaque mise à jour du paquet :

npx fraza-db migrate

Lancez-la avant de servir la nouvelle version. Le code s'appuie sur le schéma migré : sans la collation de tri, par exemple, les listes de fichiers échouent.

Aucune configuration du seau

Il n'y a aucune étape d'infrastructure. Pas de règle CORS, pas de policy de seau, pas d'URL signée à faire circuler : tous les fichiers transitent par l'application, dans les deux sens, et le navigateur ne parle jamais au stockage.

Derrière un proxy

Un proxy plafonne le corps d'une requête. Cloudflare l'arrête à 100 Mo sur le forfait gratuit, et refuse la requête avant qu'elle n'atteigne l'application.

C'est pourquoi le navigateur découpe les fichiers : chaque tranche part dans sa propre requête, sous le plafond, et le serveur les réassemble dans le seau. Une tranche vaut 8 Mo par défaut, ce qui passe partout.

Si votre proxy plafonne plus bas, alignez FRAZA_MODULE_DRIVE_UPLOAD_CHUNK_MB sur cette limite. Le minimum est 5, imposé par le stockage, donc un proxy qui plafonne sous 5 Mo empêche tout envoi de fichier volumineux.

Le symptôme d'une valeur trop haute est net : les tranches partent puis échouent avec le code d'erreur du proxy, 413 chez la plupart.

Rien à câbler dans le projet

Contrairement à @fraza/module-medias, ce module n'a aucun fichier de route à monter. Les binaires descendent par les routes /fraza/api/drive/..., qui existent déjà, et la page publique de partage passe par la sous-entrée ./public-page, prise en charge par npx fraza-modules sync.

Sur cette page