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/coreen version0.1.14ou 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.npmrcdu projet, sans lesquelsnpm iéchoue.npx @fraza/startécrit déjà la ligne de portée. Le token s'obtient avecnpm login --registry=https://registry.fraza.ca/, puisnpx fraza-keyle reprend dans le projet. Voirfraza-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.
sharpinstallé 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-driveAjoutez la variable d'activation dans .env :
FRAZA_MODULE_DRIVE=trueCréez les tables :
npx fraza-db initPuis 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 migrateLancez-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.