« Disk quota exceeded » : ce message, apparu un vendredi soir dans les journaux d’erreur d’une agence immobilière qui vient de mettre en ligne trois nouveaux mandats avec chacun une trentaine de photos en haute résolution, résume un problème récurrent sur ce type de site. Chaque bien ajouté génère des dizaines de fichiers, chacun redimensionné en plusieurs tailles par WordPress, et le dossier wp-content/uploads grossit plus vite que prévu au moment de choisir l’offre d’hébergement initiale.
Cette recette décrit le déport de cette bibliothèque de médias vers un stockage objet Scaleway, compatible avec le protocole S3. Elle ne traite pas de la génération des différentes tailles d’images par WordPress, qui continue de fonctionner normalement une fois le stockage déporté.
Le problème posé par le stockage local sur ce type de site
Un serveur mutualisé ou une petite instance dédiée est dimensionné pour exécuter PHP et servir des pages, pas pour accumuler indéfiniment des fichiers volumineux. Sur un site immobilier, chaque annonce publiée ajoute plusieurs dizaines de mégaoctets de photographies, multipliées par les tailles générées automatiquement par WordPress (miniature, taille moyenne, grande taille, taille définie par le thème). Sur deux ans d’activité, cette accumulation peut représenter plusieurs dizaines de gigaoctets, largement supérieurs à la capacité d’une offre d’hébergement standard pensée pour le code et la base de données, pas pour la médiathèque.
Mettre en place le stockage objet
Scaleway propose un service de stockage objet compatible avec l’API S3, ce qui permet de réutiliser des extensions WordPress déjà conçues pour ce protocole standard plutôt que de développer une intégration propriétaire. La première étape consiste à créer un panier de stockage dédié, puis à générer une paire de clés d’accès depuis la console Scaleway.

define('AS3CF_SETTINGS', serialize([
'provider' => 'aws',
'access-key-id' => getenv('SCALEWAY_ACCESS_KEY'),
'secret-access-key' => getenv('SCALEWAY_SECRET_KEY'),
]));
Ces identifiants ne doivent jamais figurer en clair dans un fichier versionné ; ils sont lus depuis des variables d’environnement définies au niveau du serveur ou du gestionnaire de secrets utilisé pour le déploiement.
Configurer l’extension de déport des médias
Une fois le panier créé et les clés générées, l’extension de déport des médias se configure avec l’identifiant de la région Scaleway concernée et l’URL du point de terminaison compatible S3, différente de celle d’Amazon Web Services :
- Point de terminaison personnalisé pointant vers l’infrastructure Scaleway plutôt que vers l’URL par défaut d’AWS.
- Copie des fichiers déjà existants du dossier
uploadsvers le panier, opération qui peut prendre plusieurs heures selon le volume déjà accumulé. - Réécriture des URL des médias dans le contenu pour pointer vers le panier de stockage, tout en conservant la même structure de chemin afin que les liens déjà partagés ou indexés restent valides.
- Option de suppression des fichiers locaux une fois la copie vérifiée, pour libérer effectivement l’espace disque du serveur.
Vérifier la bascule avant de supprimer les fichiers locaux
La prudence impose de ne jamais supprimer les fichiers locaux avant d’avoir vérifié que l’ensemble des tailles d’images se chargent correctement depuis le panier de stockage, sur plusieurs pages représentatives du site : la page d’accueil, une fiche de bien avec galerie photo, et une page de recherche affichant des miniatures. Un test insuffisant à cette étape est la cause la plus fréquente d’images cassées après une migration de ce type.
| Étape | Point de vigilance |
|---|---|
| Création du panier | Choisir une région proche des visiteurs principaux |
| Génération des clés | Restreindre les droits au panier concerné uniquement |
| Copie des fichiers existants | Vérifier l’intégrité avant toute suppression locale |
| Réécriture des URL | Conserver la structure de chemin d’origine |
Une habitude prise après plusieurs migrations de ce type : toujours conserver les fichiers locaux au moins deux semaines après la bascule effective, même une fois la copie vérifiée, le temps de croiser d’éventuels signalements de visiteurs.
En résumé
Déporter la médiathèque d’un site immobilier vers un stockage objet Scaleway résout durablement le problème de saturation disque, tout en gardant un serveur applicatif léger et rapide à sauvegarder. La bascule demande de la rigueur sur la vérification des URL existantes avant toute suppression locale, mais une fois en place, chaque nouveau bien publié n’ajoute plus aucune pression sur la capacité du serveur qui exécute WordPress.