Salut,
Je suis un peu bloqué et confus et j’espère que quelqu’un pourra m’aider.
J’ai d’abord eu une installation bitnami et j’ai réalisé les problèmes que cela pourrait me causer, j’ai donc réinstallé en utilisant l’installation standard.
J’ai pu restaurer ma sauvegarde et tout allait bien, même si je suis passé de la version 2.8 à la bêta 2.9.
J’ai de nouveau testé ma sauvegarde sur mon bucket Google et cela fonctionnait toujours à merveille.
Notez que toute la configuration S3 a été effectuée via l’interface Web et non via des variables d’environnement.
Pour des raisons de RGPD, j’ai créé un nouveau bucket de sauvegarde en Europe (appelons-le discourse-backup-eu), et maintenant que j’ai pu modifier la variable d’environnement, j’ai défini DISCOURSE_S3_ENDPOINT: https://storage.googleapis.com, reconstruit l’application, modifié le nom du bucket de sauvegarde dans l’interface Web, relancé la sauvegarde et j’ai été très heureux de voir les fichiers de sauvegarde apparaître sur mon nouveau bucket de sauvegarde en Europe.
Maintenant, je voulais que les téléchargements aillent dans un autre bucket et éviter de remplir l’espace disque de ma VM.
J’ai donc configuré un nouveau bucket (appelons-le discourse-uploads), l’ai rendu public, ajouté le rôle Storage Legacy Bucket Owner à mon compte de service sur ce nouveau bucket.
J’ai ensuite ajouté une règle à mon équilibreur de charge existant (appelons-le https://www.example.com) pour utiliser un bucket backend avec Cloud CDN activé, comme indiqué ici. La règle /discourse-uploads/* pointe vers le bucket discourse-uploads.
J’ai testé mon CDN avec un test.jpg à la racine du bucket mais je n’ai pas pu y accéder via https://www.example.com/discourse-uploads/test.jpg et j’ai dû créer un sous-dossier appelé discourse-uploads à l’intérieur du bucket, j’ai déplacé le test.jpg à l’intérieur et maintenant je peux voir mon image de test via https://www.example.com/discourse-uploads/test.jpg.
Dans l’interface utilisateur Web, j’ai modifié le nom du bucket factice sous “s3 upload bucket” (j’ai été obligé de le définir précédemment lors de la configuration de la sauvegarde) en discourse-uploads, j’ai rempli l’URL du CDN avec https://www.example.com/discourse-uploads et j’ai coché “enable s3 uploads”.
À partir de là, si j’essayais de télécharger une image, j’obtiendrais une popup disant “Argument invalide” dans la fenêtre du navigateur (provenant d’une erreur 422 avec un contenu JSON disant essentiellement la même chose).
J’ai essayé de rebaker tous les posts, mais sans effet, j’avais toujours l’erreur.
J’ai donc pensé qu’il fallait essayer d’utiliser les variables d’environnement au lieu de l’interface Web.
et utiliser la configuration suivante :
DISCOURSE_USE_S3: true
DISCOURSE_S3_REGION: whatever
DISCOURSE_S3_INSTALL_CORS_RULE: false
FORCE_S3_UPLOADS: 1
DISCOURSE_S3_ENDPOINT: https://storage.googleapis.com
DISCOURSE_S3_ACCESS_KEY_ID: MY_KEY_ID
DISCOURSE_S3_SECRET_ACCESS_KEY: MY_ACCESS_KEY
DISCOURSE_S3_CDN_URL: https://www.example.com/discourse-uploads
DISCOURSE_S3_BUCKET: discourse-uploads/discourse-uploads
DISCOURSE_S3_BACKUP_BUCKET: discourse-backup-eu
DISCOURSE_BACKUP_LOCATION: s3
J’ai reconstruit l’application.
Ensuite, je ne peux plus ouvrir discourse car aucun des actifs n’a été téléchargé dans le bucket et j’obtiens un 404.
https://www.example.com/discourse-uploads/assets/admin-31467dc73634cbfb81799737c43df0e2939307d893ef32713f1d0770bcb3532c.br.js
Je pensais qu’essayer de télécharger directement dans un sous-dossier du bucket était un peu exagéré, même si l’OP suggère que cela fonctionne (du moins pour le bucket de sauvegarde).
j’ai changé la variable d’environnement en
DISCOURSE_S3_BUCKET: discourse-uploads
(Pensant que plus tard je pourrai jouer avec la règle d’hôte au lieu de devoir télécharger dans un sous-dossier)
et j’ai reconstruit pour voir si quelque chose était téléchargé, mais rien n’est téléchargé dans le bucket et discourse ne parvient toujours pas à s’ouvrir en raison de 404.
Mes questions sont donc :
- L’interface Web et la variable d’environnement entrent-elles en collision ?
- Quand les actifs sont-ils censés être téléchargés dans le bucket ?
- Comment puis-je déboguer cela ? Je ne vois aucune erreur dans les logs.
- Est-il possible de définir un sous-dossier d’un bucket dans la configuration ?
- Une fois que cela fonctionne, les images précédemment téléchargées sont-elles transférées dans le bucket ? Si je rebake, à quoi ressemblera l’URL des images précédemment téléchargées ?
Merci !