Documentation10 min de lecture

Sortir les pièces jointes de la base : stockage objet, SFTP, OneDrive

Le module OCA `fs_attachment` (dépôt `storage`, version 18.0.2.2.4, licence AGPL-3) permet de **stocker les pièces jointes sur un système de stockage externe** au lieu de la base de données — avec un connecteur dédié aux stockages **compatibles S3** et un placement des identifiants dans un fichier serveur. Trente-trois autres modules traitent les dossiers OneDrive, les vignettes et l'ancienne génération de connecteurs.

Disques et baies de stockage dans une salle technique

Sur une instance Odoo de trois ans, les pièces jointes représentent souvent la moitié du volume de la base : factures scannées, photos de produits, plans, constats. Elles ralentissent les sauvegardes, les restaurations et les copies de recette.

Trente-quatre modules communautaires les sortent de la base — en deux générations distinctes, ce qu'il faut savoir avant de choisir.

Résumé

La génération actuelle, préfixée fs_, compte dix-sept modules : les pièces jointes stockées hors base, un connecteur S3, des champs de fichier et d'image sur un stockage externe, la génération de vignettes, les galeries d'images, et surtout des dossiers externes rattachés aux enregistrements — avec des variantes WebDAV et OneDrive ou SharePoint, plus le rattachement d'un compte Microsoft à un utilisateur.

La génération précédente, préfixée storage_, compte quatorze modules : un concept de stockage avec ses catégories, trois connecteurs — FTP, SFTP, S3 —, des fichiers, des images redimensionnées, des médias avec leurs types, le rattachement d'images et de médias aux produits et catégories, des vignettes, et le changement de stockage en travaux de fond.

Trois modules enfin traitent les étiquettes d'image et, dans les deux générations, une série de modules de configuration par environnement serveur place les identifiants de connexion hors de la base.

L'essentiel

  • Les pièces jointes stockées hors base, en S3 ou SFTP.
  • Des dossiers externes rattachés aux enregistrements Odoo.
  • OneDrive et SharePoint comme stockage, avec compte Microsoft par utilisateur.
  • Des vignettes générées et stockées à l'extérieur.
  • Les identifiants de connexion hors base, dans un fichier serveur.
  • Deux générations coexistent : fs_ (actuelle) et storage_ (précédente).
  • Le changement de stockage exécuté en travaux de fond.
  • Des étiquettes d'image et un rattachement aux produits.

Ce que ces modules ajoutent à l'instance

GénérationModules principauxNombre total
fs_ (actuelle)fs_attachment, fs_attachment_s3, fs_file, fs_image, fs_image_thumbnail, fs_base_multi_image, fs_folder, fs_folder_webdav, fs_folder_ms_drive, fs_storage_ms_drive, microsoft_drive_account17 avec leurs modules d'environnement
storage_ (précédente)storage_backend, storage_backend_ftp, storage_backend_sftp, storage_backend_s3, storage_file, storage_image, storage_image_product, storage_media, storage_media_product, storage_thumbnail, storage_file_swap_backend_queue14 avec leurs modules d'environnement
Étiquettesimage_tag, image_tag_environment2

Les menus : Paramètres ▸ Technique ▸ Stockage SF ▸ Fs Image Thumbnails et Images FS pour la génération actuelle ; Paramètres ▸ Technique ▸ Storage Backend et ses six sous-menus — stockages, catégories, fichiers, images, médias, types de média — pour la précédente ; Ventes ▸ Configuration ▸ Produits ▸ Image Tag.

Pourquoi sortir les pièces jointes de la base

Une base Odoo de 40 Go dont 20 Go de pièces jointes se sauvegarde en une heure et se restaure en deux. La même base avec ses pièces jointes sur un stockage externe se sauvegarde en quelques minutes — et une copie de recette ne duplique plus vingt gigaoctets de PDF.

fs_attachment (version 18.0.2.2.4, la plus mûre du dépôt) stocke les pièces jointes sur un système de stockage externe. fs_attachment_s3 ajoute le connecteur pour les stockages compatibles S3.

Les gains sont cumulés : volume de base, durée de sauvegarde, durée de restauration, coût de stockage — un stockage objet coûte une fraction du prix d'un disque de base de données.

  • fs_file ajoute un type de champ de fichier stocké à l'extérieur, et fs_image son équivalent pour les images.
  • fs_image_thumbnail génère et stocke les vignettes des images, avec son référentiel sous Paramètres ▸ Technique ▸ Stockage SF ▸ Fs Image Thumbnails. Il dépend du module de partition des outils serveur.
  • fs_base_multi_image fournit des galeries d'images depuis le stockage externe.

Le volume de la base et sa mesure sont traités dans exploiter une instance Odoo.

Les dossiers externes dans Odoo

fs_folder (LGPL-3, version 18.0.2.0.1) est le module le plus intéressant du dépôt : il permet de rattacher des dossiers de systèmes de fichiers externes à des enregistrements Odoo et de les gérer depuis la fiche.

C'est la réponse au compromis que toute PME fait : les documents d'un chantier vivent dans un dossier partagé, et l'ERP ne les voit pas. Rattacher le dossier au projet, plutôt que copier les fichiers dans l'ERP, évite de maintenir deux vérités.

  • fs_folder_webdav améliore l'interface pour la gestion de dossiers WebDAV.
  • fs_storage_ms_drive ajoute OneDrive et SharePoint comme stockage, et fs_folder_ms_drive permet d'y afficher et gérer les fichiers depuis Odoo.
  • microsoft_drive_account relie un utilisateur Odoo à son compte Microsoft, en s'appuyant sur le module de compte Microsoft.

Pour une PME équipée de la suite bureautique de Microsoft — cas majoritaire en France —, cette chaîne permet de garder les documents là où ils sont et de les voir depuis l'ERP.

La contrepartie est à mesurer : un document consulté depuis Odoo mais hébergé chez un fournisseur américain reste hébergé chez lui, avec les conséquences que cela implique pour des données personnelles ou des secrets d'affaires.

Les deux générations

Le dépôt contient deux générations de modules de stockage, et c'est la première chose à comprendre avant d'installer quoi que ce soit.

storage_ (précédente)fs_ (actuelle)
ConceptUn modèle de stockage avec ses catégoriesUn système de fichiers abstrait
ConnecteursFTP, SFTP, S3 — un module chacunS3, WebDAV, OneDrive, et tout ce que la bibliothèque sous-jacente gère
Fichiersstorage_file : un modèle de fichierfs_file : un type de champ
Imagesstorage_image avec redimensionnementfs_image et fs_image_thumbnail
Produitsstorage_image_product, storage_media_product—
Pièces jointes—fs_attachment : les pièces jointes standard
LicenceLGPL-3AGPL-3 pour la plupart

La différence tient en une phrase : l'ancienne génération crée ses propres modèles de fichier et d'image, la nouvelle déplace le stockage des pièces jointes standard d'Odoo. La seconde approche est moins intrusive — et c'est pour cela qu'elle a remplacé la première.

L'ancienne génération conserve un avantage : ses modules de médias et de rattachement aux produits et catégories, avec leurs types de média, n'ont pas d'équivalent direct dans la nouvelle.

storage_file_swap_backend_queue mérite une mention : il permet de changer de stockage en travaux de fond, ce qui est la seule façon de migrer des milliers de fichiers sans bloquer l'instance.

Les identifiants hors de la base

Neuf modules du dépôt ont pour seul objet de placer les identifiants de connexion dans un fichier de configuration serveur plutôt que dans la base. Côté génération actuelle : fs_attachment_environment, fs_attachment_s3_environment, fs_folder_environment et fs_storage_environment. Côté génération précédente : storage_backend_environment, storage_backend_ftp_environment, storage_backend_sftp_environment, storage_backend_s3_environment et storage_file_environment. Un dixième, image_tag_environment, fait de même pour les étiquettes d'image.

Ce n'est pas une redondance du dépôt : ce sont des identifiants d'accès à un stockage contenant tous vos documents. Dans la base, ils voyagent avec chaque copie de production — et une base de recette peut alors écrire, ou supprimer, dans le stockage réel.

image_tag ajoute enfin un modèle d'étiquettes d'image, utilisable pour classer un fonds d'images produit.

Limites connues

  • Deux générations coexistent : choisir la génération fs_ pour un nouveau projet, et ne mélanger les deux qu'avec une raison précise.
  • Sortir les pièces jointes de la base change la procédure de sauvegarde : une sauvegarde de base ne contient plus les documents. Les deux doivent être sauvegardés ensemble.
  • Une restauration devient une opération à deux temps : base et stockage, cohérents entre eux.
  • Un stockage externe inaccessible rend les documents invisibles : l'instance fonctionne, les pièces jointes non.
  • OneDrive et SharePoint hébergent les documents chez un fournisseur américain : à instruire pour des données personnelles ou des secrets d'affaires.
  • La migration d'un stockage à l'autre doit passer par les travaux de fond : storage_file_swap_backend_queue existe pour cela.
  • Les modules d'environnement sont indispensables en production : sans eux, les identifiants du stockage voyagent dans chaque copie de base.
  • fs_folder_demo est un module de démonstration : il n'a rien à faire en production.

Identité technique

Les trente-quatre modules viennent du dépôt OCA storage, branche 18.0 — dont les 35 modules sont désormais tous documentés ici. La génération fs_ est majoritairement en AGPL-3, la génération storage_ en LGPL-3. Les dépendances externes : fs_storage comme socle de la génération actuelle, component pour la précédente, server_environment pour les identifiants, queue_job pour le changement de stockage, base_partition pour les vignettes, microsoft_account pour les comptes Microsoft, product et sale pour les rattachements produit.

Voir aussi exploiter une instance Odoo pour la mesure du volume.

Questions fréquentes

Peut-on stocker les pièces jointes Odoo hors de la base de données ?

Oui : fs_attachment les place sur un système de stockage externe, avec fs_attachment_s3 pour les stockages compatibles S3. Sur une base de 40 Go dont 20 Go de pièces jointes, la sauvegarde passe d'une heure à quelques minutes — et une copie de recette ne duplique plus vingt gigaoctets de PDF.

Peut-on voir un dossier partagé depuis une fiche Odoo ?

Oui, avec fs_folder : des dossiers externes rattachés à des enregistrements, gérables depuis la fiche. Avec fs_folder_webdav pour le WebDAV, ou fs_folder_ms_drive et fs_storage_ms_drive pour OneDrive et SharePoint. Cela évite de maintenir deux vérités — le dossier partagé et l'ERP.

Quelle différence entre les modules fs_ et storage_ ?

Deux générations. Les modules storage_ créent leurs propres modèles de fichier, d'image et de média, avec un connecteur par protocole. Les modules fs_ déplacent le stockage des pièces jointes standard d'Odoo, ce qui est moins intrusif — et c'est pourquoi cette génération a remplacé la première.

Que devient la sauvegarde quand les pièces jointes sortent de la base ?

Elle ne les contient plus. La sauvegarde devient une opération à deux volets — base et stockage —, et la restauration aussi, avec une exigence de cohérence entre les deux. C'est le principal point à régler avant de basculer.

Peut-on migrer des milliers de fichiers d'un stockage à un autre ?

Oui, avec storage_file_swap_backend_queue, qui délègue le changement de stockage à des travaux de fond. C'est la seule façon de migrer un gros volume sans bloquer l'instance.

Se faire accompagner

Sortir les pièces jointes de la base est le gain d'exploitation le plus net d'une instance ancienne : volume, sauvegarde, restauration, coût. C'est aussi le changement qui modifie le plus la procédure de secours — et qui se fait donc avec la procédure, pas avant.

Nous mesurons donc d'abord la part des pièces jointes dans le volume, puis nous basculons avec les modules d'environnement et une procédure de sauvegarde à deux volets, éprouvée par une restauration réelle. Voir les prestations d'Atalios Consulting ou demander un rappel.

Pour aller plus loin

En résumé

Sur une instance de trois ans, les pièces jointes représentent souvent la moitié du volume de la base. Trente-quatre modules les sortent — en deux générations distinctes, et c'est la première chose à comprendre avant d'installer. Parlons de votre volume.

Documentation OCAOdoo CommunityHébergement

Partager

Fiches connexes

Baies de serveurs dans une salle machine
Le module OCA `queue_job` (dépôt `queue`, version 18.0.3.4.1, licence LGPL-3) ajoute à Odoo une **file de travaux de fond** avec ses canaux, ses fonctions et ses tâches, sous le menu **File d'attente des tâches** : c'est la brique dont dépendent plus de quarante modules communautaires, et la première à surveiller en exploitation. Vingt-six autres modules traitent les composants, la configuration hors base, l'impression serveur et l'IoT.
Lire la suite
Documentation OCA, Exploitation
Câbles réseau branchés sur un commutateur
Le module OCA `endpoint` (dépôt `web-api`, version 18.0.1.1.4, licence LGPL-3) permet de **déclarer un point d'entrée HTTP depuis l'interface**, sous **Paramètres ▸ Technique ▸ Endpoints** : une adresse, une méthode, un traitement — sans écrire de module. Vingt-trois autres modules traitent le cache, les imports par sessions, les échanges de factures et l'agenda.
Lire la suite
Documentation OCA, Intégration
Stockage externe des pièces jointes Odoo | Atalios