0.13.14 : fix media uploads, move plugin secrets to env vars
Build release Docker image / Build Docker Images (push) Successful in 7m54s
Build release Docker image / Build Docker Images (push) Successful in 7m54s
Tous les uploads échouaient depuis mai 2026 sur « Credential access key has length 5, should be 32 ». config/env/production/plugins.ts surchargeait l'upload avec l'ancien MinIO auto-hébergé (accessKeyId "admin", 5 caractères, endpoint container.harmonylab.ovh aujourd'hui injoignable). Strapi fusionnant les surcharges d'environnement en profondeur, la config effective en prod n'était ni l'une ni l'autre : endpoint R2 hérité de config/plugins.ts, mais identifiants MinIO, le provider lisant s3Options.credentials en priorité sur les options à plat. - surcharge production supprimée : une seule config plugins, les différences d'environnement passent par les variables d'environnement - upload en forme s3Options attendue par @strapi/provider-upload-aws-s3 5.x (à plat, le provider n'accepte plus qu'au prix d'une dépréciation) - secrets R2 et SMTP sortis du fichier vers env(), .env.example à jour - CSP de production : les médias étaient autorisés depuis container.harmonylab.ovh et 192.168.0.211:9000, jamais depuis le domaine R2 — l'hôte est désormais dérivé de R2_PUBLIC_URL - la surcharge production des middlewares réduisait strapi::body à sa forme par défaut, perdant includeUnparsed nécessaire au webhook Stripe ⚠️ Déploiement : poser R2_* et SMTP_PASSWORD dans Dokploy AVANT de déployer. Les clés historiques restent dans l'historique git : rotation R2 et ZeptoMail à faire. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -73,10 +73,19 @@ Vue par domaine (34 au total, liste exhaustive dans `src/api/`) :
|
||||
fichier (et jamais cochée uniquement dans l'admin, sinon elle sera signalée
|
||||
comme non déclarée).
|
||||
- Secrets uniquement en variables d'environnement. `.env` jamais commité ;
|
||||
`.env.example` maintenu à jour.
|
||||
⚠️ **DETTE CRITIQUE : `config/plugins.ts` contient des secrets en dur**
|
||||
(clé API SMTP ZeptoMail, access/secret keys Cloudflare R2). À migrer vers
|
||||
`env()` et à faire tourner (rotation des clés).
|
||||
`.env.example` maintenu à jour. Depuis le 26/07/2026, `config/plugins.ts`
|
||||
ne contient plus aucun secret (R2 et SMTP passent par `env()`).
|
||||
⚠️ **Les clés historiques ont vécu en clair dans l'historique git** :
|
||||
rotation R2 + ZeptoMail à faire, l'historique n'étant pas réécrit.
|
||||
- ⚠️ **Pas de `config/env/<env>/plugins.ts`.** Strapi fusionne les surcharges
|
||||
d'environnement en profondeur : une surcharge partielle de `providerOptions`
|
||||
avait produit une config d'upload hybride (endpoint R2 de la base +
|
||||
identifiants MinIO de la surcharge, prioritaires via `s3Options.credentials`)
|
||||
et cassé tous les uploads de mai à juillet 2026. Les différences entre
|
||||
environnements passent par les variables d'environnement, pas par un
|
||||
second fichier. Même vigilance pour `config/env/production/middlewares.ts`,
|
||||
qui doit répéter la config `strapi::body` (`includeUnparsed`) sous peine de
|
||||
casser le webhook Stripe.
|
||||
|
||||
## Points d'audit récurrents
|
||||
|
||||
|
||||
Reference in New Issue
Block a user