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?
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 ![]()
Idem
il mio bucket è attivo ma forse discourse non ha ancora il supporto ma spero di sÏ.
Questa pagina descrive come ottenere le chiavi: Authentication ¡ Cloudflare R2 docs
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?
Ă 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.
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 ![]()
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).
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 ![]()
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.
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Ăš.
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?
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.
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.