#Introduction
Dans le cadre du déploiement d'une application moderne utilisant Laravel pour l'API backend et Nuxt /Vue.js pour le frontend, le choix d'une solution de stockage d'objets performante, économique et compatible S3 est crucial. Cet article vous accompagne pas à pas dans la configuration de Scaleway Object Storage avec Dokploy, la plateforme de déploiement open-source.
#Sommaire
- Prérequis
- Pourquoi Scaleway Object Storage ?
- Création du bucket Object Storage
- Génération des clés API
- Configuration des permissions IAM
- Configuration de la destination S3 dans Dokploy
- Résolution des erreurs courantes
- Intégration avec Laravel
- Configuration des sauvegardes automatiques
- Conclusion
#Prérequis
Avant de commencer, assurez-vous de disposer des éléments suivants :
- Un compte Scaleway actif avec un moyen de paiement valide (des crédits de 100€ sont offerts pour démarrer)
- Un serveur VPS avec Dokploy installé et accessible
- Un bucket Object Storage créé sur Scaleway
- Les identifiants API (Access Key et Secret Key) de Scaleway
#Pourquoi Scaleway Object Storage ?
Scaleway est un fournisseur cloud européen qui propose des services compétitifs face aux géants américains. Voici les principaux avantages :
| Critère | Scaleway | AWS S3 |
|---|---|---|
| Prix du stockage (1 To) | ~8€/mois | ~23$/mois |
| Transfert sortant (egress) | 75 Go gratuits, puis 0,01€/Go | 0,09$/Go |
| Frais de requêtes API | Inclus | Payant |
| Localisation | Europe (Paris, Amsterdam, Varsovie) | ... |
| Souveraineté des données | RGPD conforme | Dépend de la région choisie |
Pour une application ciblant le Cameroun, Scaleway offre une meilleure latence (via ses datacenters parisiens) et des coûts de transfert jusqu'à 9 fois inférieurs à AWS S3.
#Création du bucket Object Storage
#Étape 1 : Accéder à la console Scaleway
Connectez-vous à la console Scaleway à l'adresse : https://console.scaleway.com
#Étape 2 : Sélectionner le bon service
- Dans le menu de gauche, cliquez sur "Storage"
- Sélectionnez "Object Storage"
- Cliquez sur "+ Create bucket"
#Étape 3 : Configuration du bucket
Remplissez le formulaire comme suit :
| Champ | Valeur |
|---|---|
| Bucket name | entreprise-media (choisissez un nom unique) |
| Région | Paris (FR-PAR) |
| Bucket visibility | Private (privé) |
| Storage class | Standard One Zone (le plus économique) |
#Étape 4 : Options avancées
- Bucket encryption : Laissez décoché (chiffrement activé par défaut)
- Bucket versioning : Laissez décoché (augmente les coûts)
- Activate 90-day free trial : Cochez pour bénéficier de 750 Go gratuits
#Étape 5 : Finaliser
- Cochez la case "I have read and accept Scaleway Storage specific conditions"
- Sélectionnez le cas d'usage "Web application"
- Cliquez sur "Create bucket"
#Génération des clés API
Les clés API sont indispensables pour connecter Dokploy à votre bucket.
#Étape 1 : Accéder à la section IAM
- Dans la console Scaleway, cliquez sur votre nom d'organisation en haut à droite
- Sélectionnez "API keys" (ou "IAM & API keys")
#Étape 2 : Générer une nouvelle clé
- Cliquez sur "+ Generate API key"
- Remplissez le formulaire :
| Champ | Sélection |
|---|---|
| Select API key bearer | ✅ "An application" |
| Application | Sélectionnez votre application (ex: entreprise-inc) |
| API key expiration | 1 year (recommandé) |
| Will this API key be used for Object Storage? | ✅ "Yes, set up preferred Project" |
| Project | Sélectionnez le projet contenant votre bucket |
- Cliquez sur "Generate API key"
#Étape 3 : Conserver les identifiants
Une fenêtre affiche vos identifiants :
1Access Key ID: SCWXXXXXXXXXXXXXXXXX2Secret Key: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX1Access Key ID: SCWXXXXXXXXXXXXXXXXX2Secret Key: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
⚠️ Attention : La Secret Key ne sera affichée qu'une seule fois. Copiez-la immédiatement et conservez-la dans un endroit sécurisé.
#Configuration des permissions IAM
Pour que Dokploy puisse accéder à votre bucket, votre application doit disposer des droits nécessaires.
#Étape 1 : Créer une politique IAM
- Dans la console Scaleway, allez dans IAM → Policies
- Cliquez sur "Create policy"
- Ajoutez les règles suivantes :
Règle #1 :
- Permissions :
ObjectStorageFullAccess - Scope : "All projects" (ou sélectionnez le projet concerné)
#Étape 2 : Attacher la politique à l'application
- Dans la section "Associer la policy au principal"
- Type de principal : "Applications"
- Nom de l'application : Sélectionnez votre application (
entreprise-inc)
#Étape 3 : Valider
- Cliquez sur "Suivant" puis "Créer"
- Vérifiez que la politique apparaît bien dans la liste des politiques attachées à votre application
#Configuration de la destination S3 dans Dokploy
#Étape 1 : Accéder à la configuration S3
- Connectez-vous à votre interface Dokploy (
https://votre-domaine-dokploy.com) - Dans le menu de gauche, cliquez sur Settings (en bas)
- Sélectionnez S3 Destinations
#Étape 2 : Ajouter une nouvelle destination
- Cliquez sur "Add S3 Destination"
- Remplissez les champs suivants :
| Champ | Valeur |
|---|---|
| Name | Scaleway Media Bucket |
| Provider | Scaleway Object Storage |
| Access Key Id | SCWXXXXXXXXXXXXXXXXX |
| Secret Access Key | XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX |
| Bucket | entreprise-media |
| Region | fr-par |
| Endpoint | https://s3.fr-par.scw.cloud |
#Étape 3 : Ajouter un flag supplémentaire
- Cliquez sur "+ Add Flag"
- Saisissez :
--s3-force-path-style=false
Ce flag est essentiel pour que Dokploy construise correctement l'URL du bucket (format "virtual-hosted style" attendu par Scaleway).
#Étape 4 : Tester et enregistrer
- Cliquez sur "Test connection"
- Si le test est vert (succès), cliquez sur "Create" ou "Update Destination"
#Résolution des erreurs courantes
#Erreur 1 : Access Denied (403)
Cause : La clé API n'a pas les droits nécessaires sur le bucket.
Solution :
- Vérifiez que la politique
ObjectStorageFullAccessest bien attachée à votre application - Régénérez une clé API avec l'option "Oui, configurer le Projet favori"
#Erreur 2 : TLS certificate error (certificate is valid for... not...)
Cause : L'endpoint est mal configuré.
Solution :
- L'endpoint doit être
https://s3.fr-par.scw.cloud(sans le nom du bucket) - Ajoutez le flag
--s3-force-path-style=false
#Erreur 3 : Bucket not found
Cause : Le nom du bucket est mal orthographié.
Solution :
- Vérifiez le nom exact du bucket dans la console Scaleway
- Corrigez le champ Bucket dans Dokploy
#Erreur 4 : Invalid region
Cause : La région ne correspond pas à celle du bucket.
Solution :
- Vérifiez la région de votre bucket dans la console Scaleway (
PAR=fr-par) - Utilisez la valeur
fr-pardans Dokploy
#Intégration avec Laravel
Une fois la destination S3 configurée dans Dokploy, vous pouvez intégrer Scaleway Object Storage dans votre application Laravel.
#Configuration du fichier .env
1# Scaleway Object Storage2AWS_ACCESS_KEY_ID=SCWXXXXXXXXXXXXXXXXX3AWS_SECRET_ACCESS_KEY=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX4AWS_DEFAULT_REGION=fr-par5AWS_BUCKET=entreprise-media7AWS_USE_PATH_STYLE_ENDPOINT=false1# Scaleway Object Storage2AWS_ACCESS_KEY_ID=SCWXXXXXXXXXXXXXXXXX3AWS_SECRET_ACCESS_KEY=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX4AWS_DEFAULT_REGION=fr-par5AWS_BUCKET=entreprise-media7AWS_USE_PATH_STYLE_ENDPOINT=false
#Configuration du fichier config/filesystems.php
1'disks' => [2 // ...3 's3' => [4 'driver' => 's3',5 'key' => env('AWS_ACCESS_KEY_ID'),6 'secret' => env('AWS_SECRET_ACCESS_KEY'),7 'region' => env('AWS_DEFAULT_REGION'),8 'bucket' => env('AWS_BUCKET'),9 'url' => env('AWS_URL'),10 'endpoint' => env('AWS_ENDPOINT'),11 'use_path_style_endpoint' => env('AWS_USE_PATH_STYLE_ENDPOINT', false),12 'throw' => false,13 ],14],1'disks' => [2 // ...3 's3' => [4 'driver' => 's3',5 'key' => env('AWS_ACCESS_KEY_ID'),6 'secret' => env('AWS_SECRET_ACCESS_KEY'),7 'region' => env('AWS_DEFAULT_REGION'),8 'bucket' => env('AWS_BUCKET'),9 'url' => env('AWS_URL'),10 'endpoint' => env('AWS_ENDPOINT'),11 'use_path_style_endpoint' => env('AWS_USE_PATH_STYLE_ENDPOINT', false),12 'throw' => false,13 ],14],
#Exemple d'utilisation
1use Illuminate\Support\Facades\Storage;23// Upload d'une image4$path = Storage::disk('s3')->putFile('avatars', $request->file('avatar'));56// Récupération de l'URL7$url = Storage::disk('s3')->url($path);89// Suppression10Storage::disk('s3')->delete($path);1use Illuminate\Support\Facades\Storage;23// Upload d'une image4$path = Storage::disk('s3')->putFile('avatars', $request->file('avatar'));56// Récupération de l'URL7$url = Storage::disk('s3')->url($path);89// Suppression10Storage::disk('s3')->delete($path);
#Configuration des sauvegardes automatiques
#Sauvegarde de la base de données PostgreSQL
- Dans Dokploy, allez dans votre service PostgreSQL
- Cliquez sur l'onglet "Backups"
- Sélectionnez la destination "Scaleway Media Bucket"
- Configurez la planification :
| Paramètre | Valeur |
|---|---|
| Schedule | 0 2 * * * (tous les jours à 2h du matin) |
| Retention | 7 jours |
- Cliquez sur "Save"
#Sauvegarde manuelle
Vous pouvez également déclencher une sauvegarde immédiate en cliquant sur "Create Backup".
#Vérification finale
Pour confirmer que tout fonctionne correctement :
- Vérifiez la connexion S3 : Dans Dokploy, le test de la destination S3 doit être vert
- Testez un upload Laravel : Uploadez un fichier test via votre application
- Vérifiez les sauvegardes : Créez une sauvegarde manuelle de votre base de données
- Consultez les fichiers : Dans la console Scaleway, ouvrez votre bucket pour voir les fichiers
#Conclusion
La configuration de Scaleway Object Storage avec Dokploy offre une solution de stockage performante, économique et souveraine pour votre application Laravel/Nuxt. Scaleway s'avère être un excellent choix pour une audience ciblant le Cameroun, avec des coûts de transfert jusqu'à 9 fois inférieurs à AWS S3 et une latence optimisée via ses datacenters européens.
#Récapitulatif des bénéfices
| Bénéfice | Description |
|---|---|
| Économie | Stockage à 0,008€/Go/mois et egress à 0,01€/Go |
| Performance | Datacenters européens proches de l'Afrique de l'Ouest |
| Souveraineté | Données hébergées en Europe, conformes RGPD |
| Simplicité | Compatibilité S3 native avec Laravel et Dokploy |
| Fiabilité | Classe Standard One Zone avec 750 Go gratuits pendant 90 jours |