Сделайте s3_region строковым значением

Каковы могут быть причины ограничения этого значения списком? Для чего это?

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 (Invalid value `fr-par` for `s3_region`)

У Scaleway есть свои собственные регионы.

Вы можете задать различные значения через переменные окружения, следуя инструкции Настройка провайдера объектного хранилища, совместимого с S3, для загрузки файлов

Ты думаешь, я не думал?

Если допустимое значение переменной в скрипте строго ограничено списком возможных вариантов, ты уверен, что это поможет?

Да, я уверен, потому что я написал руководство по Scaleway на Configure an S3 compatible object storage provider for uploads и протестировал его на работающей продакшн-установке.

Круто! Попробуйте на версии 2.9.0.Beta9 :slight_smile: Объясните, пожалуйста, почему нельзя изменить переменную через консоль?

Discourse::InvalidParameters (Неверное значение fr-par для s3_region)

InvalidParameters

Понимаете? Неверное значение fr-par для s3_region — неверные параметры! Понятно?

Не стоит изменять её через консоль, так как следует следовать инструкции Configure an S3 compatible object storage provider for uploads и задать её как переменную окружения :slightly_smiling_face:

Ты говоришь странные вещи :exploding_head:

  1. Я сделал это до того, как изначально опубликовал здесь.
  2. Это не работает.
  3. Я пробовал напрямую через консоль.
  4. Это не работает.

@Falco Я предоставлю тебе бакет и токен доступа в Scaleway. Сейчас я создам сервер, настрою там форум и дам тебе доступ. Если у меня получится, я извинюсь :smiling_face_with_three_hearts: :kissing_heart:

В середине дня я удалю сервер. До этого момента доступ сохраняется.

Очевидно — предложенные настройки не работают

Просто укажите конечную точку.

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

РЕДАКТИРОВАНИЕ: Ох, я somehow пропустил самое начало этой темы…

Многие другие люди следовали руководству, и оно работает.

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

Удаление старого контейнера
+ /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

*** - секреты

./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'

Это всё ещё не работает

Переменные окружения (ENV), заданные в app.yaml, не обязательно отразятся на команде rake site_settings:export. Неясно, почему вы так предположили.

Теперь, когда, похоже, все переменные окружения настроены согласно руководству Настройка совместимого с S3 провайдера объектного хранилища для загрузок, что происходит, когда вы пытаетесь загрузить изображение в пост? Есть ли что-то интересное на странице /logs?

Здравствуйте.

Ок. Разве они не должны отображаться и в настройках форума? У вас, очевидно, есть интересный и необычный подход к программированию. Разве они действительно не должны быть там?

Прошу прощения. Теперь всё работает :smiling_face_with_three_hearts: :kissing_heart:

  • Поля настроек отсутствуют в веб-интерфейсе
  • site_settings:export — поля отсутствуют
  • SiteSetting.s3_region=‘fr-par’ — Ошибка «Недопустимое значение fr-par для s3_region»

Но

  • всё работает
  • не понимаю, почему я решил, что это не так

Спасибо. Извините :wink: