Faire de s3_region une valeur de chaîne de caractères

Quelles pourraient être les raisons de faire de cette variable une liste limitée. Pour quoi faire ?

irb(main):007:0> SiteSetting.s3_region='fr-par'
Traceback (most recent call last):
        5: from (irb):7
        4: from lib/site_setting_extension.rb:548:in `block in setup_methods'
        3: from lib/site_setting_extension.rb:368:in `add_override!'
        2: from lib/site_settings/type_supervisor.rb:149:in `to_db_value'
        1: from lib/site_settings/type_supervisor.rb:207:in `validate_value'
Discourse::InvalidParameters (Valeur `fr-par` invalide pour `s3_region`)

Scaleway a ses propres régions.

Vous pouvez définir différentes valeurs via les variables d’environnement comme indiqué dans Configurer un fournisseur de stockage d’objets compatible S3 pour les téléchargements

1 « J'aime »

Penses-tu que je ne l’ai pas fait ?

Si la valeur autorisée d’une variable est strictement limitée dans le script selon la liste des valeurs possibles, es-tu sûr que cela aidera ?

Oui, je suis sûr car j’ai écrit le guide Scaleway sur Configure an S3 compatible object storage provider for uploads et j’ai testé son fonctionnement avec une installation en production.

1 « J'aime »

Génial ! Essayez sur 2.9.0.Beta9 :slight_smile: Veuillez expliquer pourquoi vous ne pouvez pas modifier la variable via la console ?

\u003e Discourse::InvalidParameters (Valeur invalide fr-par pour s3_region)

InvalidParameters

Compris ? Valeur invalide fr-par pour s3_region - Paramètres invalides ! D’accord ?

Vous ne devriez pas la changer dans la console, car vous devriez suivre Configure an S3 compatible object storage provider for uploads et la définir comme variables d’environnement :slightly_smiling_face:

2 « J'aime »

Tu dis des choses étranges :exploding_head:

  1. Je l’ai fait avant de poster ici à l’origine.
  2. Cela ne fonctionne pas
  3. J’ai essayé DIRECTEMENT via la console
  4. Cela ne fonctionne pas

@Falco Je vais vous fournir un bucket et un jeton d’accès sur Scaleway. Je vais créer un serveur maintenant et y configurer un forum et vous donner accès. Si j’y parviens, je m’excuserai :smiling_face_with_three_hearts: :kissing_heart:

Au milieu de la journée, je supprimerai le serveur. Jusqu’alors, l’accès est maintenu.

Évidemment - les paramètres suggérés ne fonctionnent pas

Il suffit de définir le point de terminaison.

Using Scaleway s3-compatible object storage - #19 by Falco.

EDIT : Oh, j’avais en quelque sorte manqué tout le début de ce sujet. . .

Beaucoup d’autres personnes ont suivi le guide et cela fonctionne.

1 « J'aime »

nano /var/discourse/containers/app.yml

  DISCOURSE_S3_REGION: "fr-par"
  DISCOURSE_S3_ACCESS_KEY_ID: "SCW*******WYCGN"
  DISCOURSE_S3_SECRET_ACCESS_KEY: "***************"
  DISCOURSE_BACKUP_LOCATION: "s3"
  DISCOURSE_S3_BACKUP_BUCKET: "test-forum-falco-discourse-s3-region"
  DISCOURSE_S3_ENDPOINT: "https://s3.fr-par.scw.cloud"

./launcher rebuild app

Removing old container
+ /usr/bin/docker rm app
app

+ /usr/bin/docker run --shm-size=512m -d --restart=always -e LANG=en_US.UTF-8 -e RAILS_ENV=production -e UNICORN_WORKERS=4 -e UNICORN_SIDEKIQS=1 -e RUBY_GLOBAL_METHOD_CACHE_SIZE=131072 -e RUBY_GC_HEAP_GROWTH_MAX_SLOTS=40000 -e RUBY_GC_HEAP_INIT_SLOTS=400000 -e RUBY_GC_HEAP_OLDOBJECT_LIMIT_FACTOR=1.5 -e DISCOURSE_DB_SOCKET=/var/run/postgresql -e DISCOURSE_DB_HOST= -e DISCOURSE_DB_PORT= -e LETSENCRYPT_DIR=/shared/letsencrypt -e DISCOURSE_FORCE_HTTPS=true -e LC_ALL=en_US.UTF-8 -e LANGUAGE=en_US.UTF-8 -e DISCOURSE_S3_REGION=fr-par -e DISCOURSE_S3_ACCESS_KEY_ID=SCWDM************GN -e DISCOURSE_S3_SECRET_ACCESS_KEY=*********************** -e DISCOURSE_BACKUP_LOCATION=s3 -e DISCOURSE_S3_BACKUP_BUCKET=test-forum-falco-discourse-s3-region -e DISCOURSE_S3_ENDPOINT=https://s3.fr-par.scw.cloud -e DISCOURSE_HOSTNAME=********** -e DISCOURSE_DEVELOPER_EMAILS=***************** -e DISCOURSE_SMTP_ADDRESS=in-v3.mailjet.com -e DISCOURSE_SMTP_PORT=587 -e DISCOURSE_SMTP_USER_NAME=************************ -e DISCOURSE_SMTP_PASSWORD=**************************** -e DISCOURSE_NOTIFICATION_EMAIL=************************* -e LETSENCRYPT_ACCOUNT_EMAIL=me@example.com -h scw-jolly-merkle-app -e DOCKER_HOST_IP=172.17.0.1 --name app -t -p 80:80 -p 443:443 -v /var/discourse/shared/standalone:/shared -v /var/discourse/shared/standalone/log/var-log:/var/log --mac-address 02:53:96:b4:7e:e7 local_discourse/app /sbin/boot
e558fe6dbde62177ae4f4171fd1099f1844321c80f59cf4c3c0d4c56abfa9412

*** - secrets

./launcher enter app

rake site_settings:export

---
title: Discourse1
contact_email: *************************
default_dark_mode_color_scheme_id: '1'
invite_only: 'true'
login_required: 'true'
default_trust_level: '1'
allowed_iframes: https://www.google.com/maps/embed?|https://www.openstreetmap.org/export/embed.html?|https://calendar.google.com/calendar/embed?|https://codepen.io/|https://www.instagram.com|https://*************************/discobot/certificate.svg
default_email_digest_frequency: '1440'

It doesn’t work still

Les variables d’environnement définies dans app.yaml ne se refléteront pas nécessairement dans rake site_settings:export, je ne vois pas pourquoi vous avez supposé cela.

Maintenant qu’il semble que vous ayez configuré toutes les variables d’environnement conformément au guide de Configurer un fournisseur de stockage d’objets compatible S3 pour les téléchargements, que se passe-t-il lorsque vous essayez de télécharger une image dans un message ? Quelque chose d’intéressant dans la page /logs ?

1 « J'aime »

Bonjour.

Ok. Ne devraient-ils pas aussi être affichés dans les paramètres du forum ? Vous avez manifestement une approche intéressante et particulière de la programmation. Ne devraient-ils pas vraiment y être ?

Excusez-moi. Maintenant, ça marche :smiling_face_with_three_hearts: :kissing_heart:

  • Les champs des paramètres sont manquants dans l’interface web
  • site_settings:export - les champs sont manquants
  • SiteSetting.s3_region=‘fr-par’ - Erreur « Valeur invalide fr-par pour s3_region »

Mais

  • ça marche
  • Je ne comprends pas pourquoi j’ai décidé ça

Merci. Désolé :wink: