Cloudflare R2: Configurazione e gestione degli errori di impostazione

Non ci sono ancora sviluppi su Cloudflare R2? Mi sembrava buono..

Hai letto la nota al riguardo sopra? È incompatibile con i file gzip e non c’era alcuna indicazione che ci fosse un piano per cambiarli. Forse funziona con tutto tranne che con i caricamenti?

Hai provato? Ha funzionato?

1 Mi Piace

Sì, l’ho letto, ma era 2 anni fa e alcune cose potrebbero essere cambiate.

Volevo provarlo oggi, ho attivato R2 e aggiunto il sito. Non sono sicuro di come configurare questo nel passaggio di discourse. Perché non sono ancora riuscito a trovare dove ottenere le chiavi o i codici segreti da Cloudflare. Sto sperimentando, forse un piccolo dettaglio può aiutarmi :slight_smile:

3 Mi Piace

Idem :thinking: il mio bucket è attivo ma forse discourse non ha ancora il supporto ma spero di sì.

1 Mi Piace

Questa pagina descrive come ottenere le chiavi: Authentication · Cloudflare R2 docs

2 Mi Piace

Ho provato di tutto ma ottengo sempre questo errore:

Aws::S3::Errors::BadRequest

Mi chiedo cosa mi stia sfuggendo?

Quando carico un’immagine dal pannello R2, questa immagine si apre con l’URL CDN speciale. Il problema è che l’immagine non può essere caricata sul sito. Ho creato CORS e ho aperto tutti i metodi.

[
  {
    "AllowedOrigins": [
      "https://SITENAME.com"
    ],
    "AllowedMethods": [
      "GET",
      "POST",
      "HEAD",
      "DELETE",
      "PUT"
    ]
  }
]

Qualche idea?

1 Mi Piace

È possibile, ma le parole di Cloudflare di 2 anni fa erano che non era probabile che cambiassero, quindi qualcuno davvero entusiasta di R2 dovrà scoprirlo. Detto questo, sembra possibile che possa funzionare per tutto tranne i file gz, che penso significhi solo backup.

Ma non avere backup s3 sembra un grosso sacrificio.

Sembra che tu non abbia la chiave giusta o l’endpoint giusto.

2 Mi Piace

Francamente, al momento sto usando Cloudflare sul mio sito Discourse e in generale è un bene avere tutto in un unico posto. Quindi avere a che fare con Amazon può essere un po’ stancante quando hai R2. Ho provato a installare Amazon S3 per un po’ e per qualche motivo non sono riuscito a caricare i file di stile. (ok, ci riproverò) ma sarebbe bene non ignorare Cloudflare, tanto più quando si utilizza il forum di supporto di Cloudflare Discourse :slight_smile:

1 Mi Piace

Questo di solito accade quando non aggiungi la strofa che invia gli asset a s3 (ti servirebbe anche per far funzionare qualsiasi servizio simile a s3 se imposti la variabile use_s3).

2 Mi Piace

Quindi hai provato qualcos’altro e ha funzionato? Cosa hai fatto? Puoi scriverlo come gli altri in Configura un provider di archiviazione oggetti compatibile con S3 per i caricamenti?

Funziona per i backup?

Ho provato tutto il possibile. Ho provato a farlo sperimentalmente cambiando le impostazioni. Ma ogni volta ricevo questo errore e quando lo guardo, sembra che l’immagine non sia stata caricata.

Non ho potuto vedere nulla nemmeno nei codici di errore. Sarebbe bello se potessi farlo funzionare, avere la maggior parte di tutto in un unico pannello (cloudflare) sarebbe entusiasmante ed efficace.

L’ho provato per il backup, mi dispiace. Quando ho fallito, sono tornato ad Amazon. Sarei molto felice se ci fosse qualcuno più bravo di me a riguardo :slight_smile:

Ho caricato un’immagine dal pannello R2 e posso accedervi. Tuttavia, non posso caricare un’immagine tramite discourse, mi dà l’errore sopra.

Quindi, forse non funziona come dice la documentazione che non funziona.

1 Mi Piace

O forse ti devo delle scuse. Sembra che ci sia riuscito, anche se non ho tempo di promettere che potrò scrivere istruzioni che ti permettano di farlo funzionare.

  DISCOURSE_USE_S3: true
  DISCOURSE_S3_REGION: 'auto'
  DISCOURSE_S3_ENDPOINT: https://=ACCOUNT_ID=.r2.cloudflarestorage.com
  DISCOURSE_S3_ACCESS_KEY_ID: '=ACCESS_KEY_ID='
  DISCOURSE_S3_SECRET_ACCESS_KEY: '=SECRET_ACCESS_KEY'
  DISCOURSE_S3_CDN_URL: '=S3_CDN_URL='
  DISCOURSE_CDN_URL: '=CDN_URL='
  DISCOURSE_S3_BUCKET: '=BUCKET='
  DISCOURSE_S3_BACKUP_BUCKET: '=BUCKET=/backups'
  DISCOURSE_BACKUP_LOCATION: 's3'

Non dimenticare la sezione che esegue l’attività rake per inviare caricamenti a S3.

Prova questo e vedi se funziona per te. Un rapido test mostra che funziona per caricamenti, asset e backup. Quindi, immagino che il problema con i file gzip non si applichi più.

4 Mi Piace

Dopo aver corretto la regione (auto) e l’ultimo URL, ha funzionato. Tuttavia, c’è un problema. Quando lo ricreo, i file di stile non vengono caricati e naturalmente il sito non si apre. Tuttavia, quando lo apro solo per il caricamento, posso caricare immagini dal sito e possiamo accedervi tramite l’URL CDN. L’unico problema è che voglio che i file di stile vengano serviti dalla CDN. Come possiamo farlo? Penso che questo sia il nostro unico problema.

Devi seguire le istruzioni per inviare gli asset a S3:

Cosa hai usato per la CDN? Se era Cloudflare, come l’hai configurata?

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

Ho aggiunto questo. Quando ricompilo, tutti i link sul sito cambiano con l’URL cdn. Tuttavia, questi file di stile non vengono caricati su cloudflare. Quindi ho semplicemente aggiunto l’impostazione della regione di caricamento al file app.yml e ho compilato in quel modo. Quando attivo S3 dall’amministratore, le immagini appena caricate vengono caricate su cloudflare R2 e viene fornito l’accesso.

L’unico problema è che quando aggiungo le impostazioni S3 prima di compilare il file app.yml, i file di stile appena creati non sembrano essere caricati. Ma gli URL e gli URL cdn cambiano sul sito.

CORS:

[
  {
    "AllowedOrigins": [
      "https://domain.com"
    ],
    "AllowedMethods": [
      "GET",
      "POST",
      "PUT",
      "HEAD",
      "DELETE"
    ]
  }
]

Questo problema potrebbe avere a che fare con Argo? Tuttavia, le immagini al momento si caricano senza problemi.

Per eseguire il debug, puoi entrare nel container e provare a eseguire le attività rake lì e vedere cosa succede.

Ho passato circa 4 ore su questo ieri, quindi temo che il mio supporto gratuito su questo progetto sia quasi esaurito.

Non so nulla riguardo al CORS. Consentirei tutto da ogni dove per assicurarmi che non sia questo il problema. Non ho fatto nulla riguardo al CORS sul mio sito di test.

Lo stai eseguendo su k8s?

1 Mi Piace

Mi dispiace di occupare il tuo tempo. Se potessi aiutare finanziariamente, lo farei. Rispetto il tuo tempo.

Non so cosa sia k8s. Sto lavorando sul mio server e ho attivato Argo. Anche R2 è attivo. Tutto funziona molto bene ora, solo dopo la nuova compilazione non carica i file di stile (js, css ecc.) in R2. Eseguirò nuovamente i test necessari più tardi e li aggiungerò qui. Se avrò successo, spiegherò in dettaglio come trovare il problema o farlo funzionare.

1 Mi Piace

Cos’è Argo?

Se si tratta di un’installazione standard, è possibile eseguire il comando rake all’interno del container

./launcher enter app
rake ...

Sei sicuro di includere la parte USE_S3? (Immagino di sì, dato che penso sia quello che fa sì che le risorse siano previste sulla CDN)

Argo: Overview · Cloudflare Argo Smart Routing docs

Ho aggiunto l’impostazione USE_S3 prima della compilazione, esempio qui sotto:

  DISCOURSE_USE_S3: true
  DISCOURSE_S3_REGION: 'auto'
  DISCOURSE_S3_ENDPOINT: 'https://xxxxxxxxxxxxxxxxx.eu.r2.cloudflarestorage.com'
  DISCOURSE_S3_ACCESS_KEY_ID: 'xxxxxxxxxxxxxxxxx'
  DISCOURSE_S3_SECRET_ACCESS_KEY: 'xxxxxxxxxxxxxxxxx'
  DISCOURSE_S3_CDN_URL: 'https://cdn.domain.com'
  DISCOURSE_CDN_URL: 'https://cdn.domain.com'
  DISCOURSE_S3_BUCKET: 'cloudflaredomain'
  DISCOURSE_S3_BACKUP_BUCKET: 'cloudflaredomain/backups'
  DISCOURSE_BACKUP_LOCATION: 's3'

Dopo la ricompilazione, tutti gli URL cambiano come previsto. URL CDN. L’unico problema è che questi asset non vengono caricati in R2. Avevo già aggiunto questa impostazione:

  after_code:
     - exec:
        cd: $home/plugins
        cmd:
          - git clone https://github.com/discourse/docker_manager.git

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

Ecco l’inizio di app.yml:

templates:
  #- "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.yml"
  ## Uncomment the next line to enable the IPv6 listener
  #- "templates/web.ipv6.template.yml"
  #- "templates/web.ratelimited.template.yml"
  ## Uncomment these two lines if you wish to add Lets Encrypt (https)
  # - "templates/web.ssl.template.yml"
  # - "templates/web.letsencrypt.ssl.template.yml"
  - "templates/cloudflare.template.yml"

## which TCP/IP ports should this container expose?
## If you want Discourse to share a port with another webserver like Apache or nginx,
## see https://meta.discourse.org/t/17247 for details
expose:
  - "80:80"   # http
  - "443:443" # https

Ora proverò ad entrare nel container e a caricare gli asset su S3.