Hacer s3_region un valor de cadena

¿Cuáles podrían ser las razones para hacer de esta variable una lista limitada? ¿Para qué?

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 (Valor `fr-par` no válido para `s3_region`)

Scaleway tiene sus propias regiones.

Puede configurar diferentes valores a través de variables de entorno según Configure un proveedor de almacenamiento de objetos compatible con S3 para cargas

1 me gusta

¿Crees que no lo hice?

Si el valor permitido de una variable está estrictamente limitado en el script según la lista de posibles, ¿estás seguro de que esto ayudará?

Sí, estoy seguro porque escribí la guía de Scaleway en Configure an S3 compatible object storage provider for uploads y probé que funcionaba con una instalación de producción.

1 me gusta

¡Genial! Pruébalo en 2.9.0.Beta9 :slight_smile: Por favor, explica por qué no puedes cambiar la variable a través de la consola.

\u003e Discourse::InvalidParameters (Valor inválido fr-par para s3_region)

InvalidParameters

¿Entiendes? Valor inválido fr-par para s3_region - ¡Parámetros inválidos! ¿De acuerdo?

No deberías cambiarla en la consola, porque deberías seguir Configure an S3 compatible object storage provider for uploads y configurarla como variables de entorno :slightly_smiling_face:

2 Me gusta

Dices cosas raras :exploding_head:

  1. Hice esto antes de publicar aquí originalmente.
  2. Esto no funciona
  3. Lo intenté DIRECTAMENTE a través de la consola
  4. Esto no funciona

@Falco Te proporcionaré un bucket y un token de acceso en Scaleway. Ahora crearé un servidor y configuraré un foro allí y te daré acceso. Si tengo éxito, me disculparé :smiling_face_with_three_hearts: :kissing_heart:

En medio del día borraré el servidor. Hasta entonces, el acceso se mantiene.

Obviamente - la configuración sugerida no funciona

Simplemente establezca el endpoint.

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

EDITAR: Oh, de alguna manera me había perdido todo el principio de este tema. . .

Mucha gente más ha seguido la guía y sí funciona.

1 me gusta

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'

Todavía no funciona

Las variables de entorno establecidas en app.yaml no se reflejarán necesariamente en rake site_settings:export, no tengo idea de por qué asumiste eso.

Ahora que parece que tienes todas las variables de entorno configuradas según la guía en Configurar un proveedor de almacenamiento de objetos compatible con S3 para cargas, ¿qué sucede cuando intentas cargar una imagen en una publicación? ¿Algo interesante en la página /logs?

1 me gusta

Hola.

Ok. ¿No deberían mostrarse también en la configuración del foro? Obviamente tienes un enfoque interesante y especial para la programación. ¿Realmente no deberían estar ahí?

Por favor, disculpadme. Ahora funciona :smiling_face_with_three_hearts: :kissing_heart:

  • Faltan campos de configuración en la interfaz web
  • site_settings:export - faltan campos
  • SiteSetting.s3_region=‘fr-par’ - Error “Valor inválido fr-par para s3_region

Pero

  • funciona
  • No entiendo por qué decidí eso

Gracias. Perdón :wink: