Ciao Team e Community di Discourse,
Ho provato a configurare la mia istanza Discourse self-hosted per utilizzare uno storage di oggetti compatibile con S3 esterno, ma mi sono imbattuto in un problema molto persistente e insolito. Sarei molto grato per qualsiasi aiuto.
Il mio ambiente:
Versione di Discourse: Installazione Docker standard, ultima
tests-passed.Host:
[IL TUO PROVIDER VPS e OS](请在这里填入您的服务商和系统)Reverse Proxy: Caddy
Obiettivo: Il mio obiettivo è spostare tutti i caricamenti (caricamenti utente e asset del sito) dallo storage locale a un provider esterno.
Riepilogo del problema: Dopo aver configurato
app.ymlper S3 (Cloudflare R2 o Google Cloud Storage) ed eseguito./launcher rebuild app, il sito si blocca nella schermata di caricamento iniziale (lo spinner blu). Gli strumenti per sviluppatori del browser mostrano che la maggior parte degli asset JavaScript principali non riesce a caricarsi dall’URL CDN esterno con un errore di rete generico (net::ERR_...).Passaggi di debug eseguiti:
Tentativo con Cloudflare R2:
Ho configurato un bucket Cloudflare R2, creato un Token API (Object Read & Write) e collegato un dominio personalizzato (
s3.ryzelan.sbs) tramite Cloudflare DNS.Ho configurato
app.ymlcon le credenziali R2, il dominio personalizzato come endpoint/URL CDN e impostatoDISCOURSE_FORCE_HTTPS: trueeDISCOURSE_S3_FORCE_PATH_STYLE: true.Test cruciale - Passaggio a Google Cloud Storage:
Per escludere un problema specifico di Cloudflare, ho annullato tutte le modifiche e ho eseguito una nuova configurazione con Google Cloud Storage utilizzando chiavi di interoperabilità S3.
Dopo la ricostruzione con la configurazione GCS, ho riscontrato esattamente lo stesso schema di errore di caricamento JavaScript che con R2.
Stato attuale:
Il processo
./launcher rebuild appsi completa senza errori visualizzati nel terminale.Il container
appè in esecuzione correttamente dopo la ricostruzione (verificato condocker ps).Il comando
./launcher logs appnon mostra errori; tutti i servizi interni (unicorn, redis, postgres) sembrano funzionare normalmente.Il problema sembra essere un errore a livello di rete quando il browser tenta di recuperare gli asset JS dall’URL CDN esterno configurato, e questo accade indipendentemente dal provider (R2 o GCS) utilizzato.
Ecco il blocco di configurazione finale di
app.ymlche abbiamo utilizzato per R2 (quello per GCS era simile):— Cloudflare R2 S3 Configuration START (Final Version) —
DISCOURSE_FORCE_HTTPS: true
DISCOURSE_USE_S3: true
DISCOURSE_S3_REGION: “us-east-1”
DISCOURSE_S3_ENDPOINT: “https://s3.ryzelan.sbs”
DISCOURSE_S3_CDN_URL: “https://s3.ryzelan.sbs”
DISCOURSE_S3_ACCESS_KEY_ID: “REDACTED”
DISCOURSE_S3_SECRET_ACCESS_KEY: “REDACTED”
DISCOURSE_S3_BUCKET: “ryzelan-discourse”
DISCOURSE_S3_FORCE_PATH_STYLE: true— Cloudflare R2 S3 Configuration END —
La mia domanda: Cosa potrebbe causare il fallimento coerente di una ricostruzione Discourse appena eseguita nel caricare i propri asset da due diversi provider cloud importanti con un errore di rete? Esiste un problema noto con determinati ambienti di rete VPS, networking Docker o Caddy che potrebbe causare questo?
Grazie per il tuo tempo e per qualsiasi intuizione che puoi fornire.
Hai incluso il codice per caricare tali risorse su S3?
Se non lo fai, nessuna delle risorse sarà su S3 e il sito non verrà caricato.
@Ryze_Chen sei riuscito a risolvere il tuo problema?
Questo argomento è stato chiuso automaticamente 7 giorni dopo l’ultima risposta. Non sono più consentite nuove risposte.
