Configurer un fournisseur de stockage d'objets compatible S3 pour les téléchargements

Scaleway a-t-il changé quelque chose ? Cela fonctionnait pour moi il y a 48 heures, mais cela ne fonctionne plus.

1 « J'aime »

Votre facture est-elle payée ? Qu’est-ce qui ne va pas ? Est-ce que des images fonctionnent ? Ont-elles toutes disparu ou ne pouvez-vous tout simplement pas en ajouter de nouvelles ?

1 « J'aime »

Pouvez-vous ajouter un peu plus de support ? Par exemple, Tencent COS de Chine est plus pratique pour les utilisateurs chinois, et le COS de Tencent Cloud dispose de nœuds CDN dans le monde entier, ce qui permet un accès très rapide.

L’avez-vous essayé ? Est-ce que ça marche ?

Je l’ai utilisé dans l’environnement de test, mais je ne peux sauvegarder que sur Tencent COS, et j’espère que le responsable de Discourse pourra ajouter la prise en charge de Tencent COS pour faciliter les développeurs de Chine.

1 « J'aime »

Je pense que vous devrez partager ce que vous avez fait et les erreurs ou problèmes que vous avez rencontrés. Ensuite, quelqu’un pourra peut-être suggérer comment le faire fonctionner. Vous pourriez examiner les autres exemples et voir si vous pouvez les utiliser pour le faire fonctionner.

Je pense qu’il est peu probable qu’ils apportent des modifications au cœur pour le prendre en charge.

1 « J'aime »

Backblaze :

  • J’ai configuré un bucket B2 dans mon compte
  • J’ai ajouté les détails à la section env de app.yml
  • J’ai exécuté ./launcher rebuild app

…mais je ne vois aucune confirmation dans le tableau de bord de mon instance Discourse que ces paramètres ont pris effet. Où dois-je regarder ?

1 « J'aime »

Salut,

J’ai pu tester et utiliser avec succès Cloudflare R2 pour les téléchargements et les sauvegardes. Article détaillé ici Cloudflare R2: Navigating Setup and Handling Configuration Errors - #40 by kamaljain

Je vous demanderais de bien vouloir tester de votre côté et de passer la mention « Fonctionne avec Discourse » à Oui pour Cloudflare R2. En fait, c’est plus facile que S3 et plus économique, gratuit si moins de 10 Go de stockage.

2 « J'aime »

J’ai également testé une configuration sur multisite et je pense qu’elle fonctionne.

J’ai vu quelque chose qui me fait me demander si vous pouvez obtenir une liste de sauvegardes. Je vais essayer de vérifier ma configuration.

1 « J'aime »

Je peux voir les sauvegardes listées. Je n’ai pas encore essayé la restauration.

1 « J'aime »

Salut mec, puis-je discuter avec toi, j’ai quelques problèmes lors de la configuration avec minio.
Merci.

Configuration iDrive

Je voulais juste signaler que l’utilisation de la version E2 d’iDrive pour le stockage s3 fonctionne parfaitement avec ces paramètres :

Paramètres ENV dans le fichier yaml

Assurez-vous que votre bucket a au moins les permissions Public et Read dans les paramètres d’iDrive.

Voici les paramètres que j’utilise pour un bucket partageant uploads et backups.

DISCOURSE_USE_S3: true
DISCOURSE_S3_REGION: votre-région
DISCOURSE_S3_ENDPOINT: https://votre-point-de-terminaison-idrive.dev
DISCOURSE_S3_ACCESS_KEY_ID: votre-clé-d'accès
DISCOURSE_S3_SECRET_ACCESS_KEY: votre-clé-secrète
DISCOURSE_S3_CDN_URL: https://votre-cdn-personnalisé.com/uploads
DISCOURSE_S3_BUCKET: votre-nom-de-bucket/uploads
DISCOURSE_S3_BACKUP_BUCKET: votre-nom-de-bucket/backups
DISCOURSE_BACKUP_LOCATION: s3
DISCOURSE_S3_INSTALL_CORS_RULE: false

Par défaut, iDrive a Partager tout dans cette région avec toutes les origines… donc cela devrait fonctionner immédiatement, quelles que soient les sources. Verrouillez-le sur vos propres domaines si vous le souhaitez.

J’utilise un certificat d’origine Cloudflare pour créer un CNAME qui pointe vers le point de terminaison iDrive.


Synchroniser les pièces jointes existantes

Reconstruire

Reconstruisez l’application après avoir modifié ces paramètres ENV.


Télécharger et Re-cuire

Entrez ensuite dans le conteneur et exécutez

rake uploads:migrate_to_s3

Regardez le téléchargement, puis exécutez

rake posts:rebake_uncooked_posts

Quittez le conteneur


Ajouter à la section hooks du fichier yaml

Dans la section hooks

after_assets_precompile:
    - exec:
        cd: $home
        cmd:
          - sudo -E -u discourse bundle exec rake s3:upload_assets
          - sudo -E -u discourse bundle exec rake s3:expire_missing_assets

Cela garantit que les fichiers js/css sont téléchargés sur iDrive après vos pièces jointes, sinon vous obtiendrez une série d’erreurs de console dans le navigateur car ils manqueront tous.


Reconstruire

Reconstruisez à nouveau après l’exécution de la commande d’assets.


Tout devrait bien se passer !

2 « J'aime »

Peut-être que le service Hetzner Object Storage devrait être ajouté au tableau ?

2 « J'aime »

J’ai réussi à utiliser Contabo pour les téléversements de fichiers. Les anciens fichiers (migrés) et les nouveaux téléversements ont fonctionné sans problème. Dans mon cas, l’URL du bucket était https://eu2.contabostorage.com/mybucket.
L’astuce a été de définir EU2 comme nom de bucket et https://contabostorage.com/mybucket comme endpoint.
Le seul problème est que lors du chargement du site, il demande également d’autres fichiers comme les js des plugins depuis le bucket et ils ne se chargent pas car les fichiers sont indisponibles. Eh bien, j’ai compris que c’est parce que j’ai défini l’URL du CDN comme le bucket. Ce n’est pas très clair pour moi pour le moment, quelqu’un peut-il me dire comment le configurer ? D’après ce que j’ai compris, je dois créer une adresse cname qui pointe vers le domaine principal (serveur discourse) et la proxy avec cloudflare, est-ce correct ?

1 « J'aime »

Vous avez manqué ceci :

1 « J'aime »

Je suis sûr de l’avoir fait, mais j’ai peut-être fait une erreur. Finalement, j’ai restauré une sauvegarde, donc je me fie un peu à ma mémoire… Mais alors, je me demande, pourquoi est-il déconseillé de définir un CDN comme Bucket ? Quels problèmes cela peut-il causer ? Je réessayerai demain.
Merci

1 « J'aime »

Je ne pense pas que le problème que vous décrivez soit dû au fait que vous ayez défini l’URL du CDN comme URL du bucket (c’est-à-dire si les téléchargements fonctionnent, mais pas les actifs).

2 « J'aime »

Je vous tiendrai au courant demain, merci

1 « J'aime »

Et ça a fonctionné :partying_face:
Étapes de ce que j’ai fait en espérant aider les autres :

modifié app.yml et ajouté

  after_assets_precompile:
    - exec:        cd: $home
        cmd:          - sudo -E -u discourse bundle exec rake s3:upload_assets
          - sudo -E -u discourse bundle exec rake s3:expire_missing_assets

après hooks : (juste après git clone plugins…)
et

  DISCOURSE_USE_S3: true
  DISCOURSE_S3_REGION: EU
  DISCOURSE_S3_ENDPOINT: https://contabostorage.com/bucketname
  DISCOURSE_S3_ACCESS_KEY_ID: accesskey
  DISCOURSE_S3_SECRET_ACCESS_KEY: secretaccesskey
  DISCOURSE_S3_CDN_URL: https://eu2.contabostorage.com/randomlettersthatcontaboaddstothelinks:bucketname
  DISCOURSE_S3_BUCKET: eu2
  DISCOURSE_BACKUP_LOCATION: s3
  DISCOURSE_S3_INSTALL_CORS_RULE: false

après les paramètres de messagerie
puis j’ai défini les mêmes valeurs dans le menu discourse et activé les téléchargements S3.
Reconstruit l’application avec

cd /var/discourse
sudo ./launcher rebuild app

puis

./launcher enter app
rake uploads:migrate_to_s3

Cela prend un peu de temps, dans mon cas quelques heures (80k fichiers, 100 Go)

Quand c’est terminé

rake posts:rebake_uncooked_posts
4 « J'aime »

Mise à jour : certains utilisateurs n’ont pas pu charger le site (ressources et fichiers). Nous avons constaté que le domaine contabostorage.com était présent sur certaines listes noires en tant que site de phishing. La solution était simple :

configurez un sous-domaine files.mydomain.com comme décrit ici Can I Setup a Custom Domain for My Object Storage? : Contabo

Mise à jour de DISCOURSE_S3_CDN_URL : https://files.mydomain.com dans app.yml

Ensuite

cd /var/discourse
sudo ./launcher rebuild app

et pour terminer le travail

./launcher enter app
rake posts:rebake

Maintenant, toutes les ressources et les téléchargements se chargent depuis https://files.mydomain.com/pathtofile/file.ext

Terminé

2 « J'aime »