Ciao,
Sono un po’ bloccato e confuso e spero che qualcuno possa aiutarmi.
Avevo prima un’installazione di Bitnami e mi sono reso conto di quanti problemi mi avrebbe causato lungo il percorso, ho reinstallato utilizzando l’installazione standard.
Sono stato in grado di ripristinare il mio backup e tutto è andato bene, anche se sono passato dalla versione beta 2.8 alla 2.9.
Ho testato di nuovo il mio backup sul mio bucket di Google e ha ancora funzionato alla grande.
Nota che tutta la configurazione S3 è stata fatta tramite l’interfaccia web e non tramite variabili d’ambiente.
Per motivi di GDPR, ho creato un nuovo bucket di backup in Europa (chiamiamolo discourse-backup-eu) e ora che sono stato in grado di modificare la variabile d’ambiente, ho impostato DISCOURSE_S3_ENDPOINT: https://storage.googleapis.com, ricostruito l’app, cambiato il nome del bucket di backup nell’interfaccia web, rieseguito il backup e sono stato molto contento di vedere i file di backup apparire nel mio nuovo bucket di backup in Europa.
Ora volevo che gli upload andassero in un altro bucket ed evitassi di riempire lo spazio su disco della mia VM.
Quindi ho configurato un nuovo bucket (chiamiamolo discourse-uploads), l’ho reso pubblico, ho aggiunto il ruolo Storage Legacy Bucket Owner al mio account di servizio su quel nuovo bucket.
Poi ho aggiunto una regola al mio load balancer esistente (chiamiamolo https://www.example.com) per utilizzare un bucket backend con Cloud CDN abilitato come indicato qui. La regola /discourse-uploads/* punta al bucket discourse-uploads.
Ho testato la mia CDN con un test.jpg nella root del bucket ma non sono riuscito a raggiungerlo tramite https://www.example.com/discourse-uploads/test.jpg e ho dovuto creare una sottocartella chiamata discourse-uploads all’interno del bucket, ho spostato il test.jpg all’interno e ora posso vedere la mia immagine di test tramite https://www.example.com/discourse-uploads/test.jpg.
Nell’interfaccia utente web, ho cambiato il nome del bucket fittizio sotto “s3 upload bucket” (che ero stato costretto a impostare in precedenza durante la configurazione del backup) in discourse-uploads, ho riempito l’URL della CDN con https://www.example.com/discourse-uploads e ho spuntato “enable s3 uploads”.
Da quel momento in poi, se provassi a caricare un’immagine, otterrei un popup che dice “Invalid Argument” nella finestra del browser (proveniente da un errore 422 con un contenuto JSON che dice fondamentalmente lo stesso).
Ho provato a rebake tutti i post, ma senza alcun effetto, ho ancora l’errore.
Quindi ho pensato che avrei dovuto provare a usare le variabili d’ambiente invece dell’interfaccia web.
e usare la seguente configurazione:
DISCOURSE_USE_S3: true
DISCOURSE_S3_REGION: whatever
DISCOURSE_S3_INSTALL_CORS_RULE: false
FORCE_S3_UPLOADS: 1
DISCOURSE_S3_ENDPOINT: https://storage.googleapis.com
DISCOURSE_S3_ACCESS_KEY_ID: MY_KEY_ID
DISCOURSE_S3_SECRET_ACCESS_KEY: MY_ACCESS_KEY
DISCOURSE_S3_CDN_URL: https://www.example.com/discourse-uploads
DISCOURSE_S3_BUCKET: discourse-uploads/discourse-uploads
DISCOURSE_S3_BACKUP_BUCKET: discourse-backup-eu
DISCOURSE_BACKUP_LOCATION: s3
Ho ricostruito l’app.
Poi non riesco più ad aprire discourse perché nessuna delle risorse è stata caricata nel bucket e ottengo un 404
https://www.example.com/discourse-uploads/assets/admin-31467dc73634cbfb81799737c43df0e2939307d893ef32713f1d0770bcb3532c.br.js
Ho pensato che provare a caricare direttamente in una sottocartella del bucket fosse un po’ esagerato, anche se l’OP suggerisce che funzioni (almeno per il bucket di backup)
ho cambiato la variabile d’ambiente in
DISCOURSE_S3_BUCKET: discourse-uploads
(Pensando che più tardi potrei giocare con la regola host invece di dover caricare in una sottocartella)
e ho ricostruito per vedere se qualcosa veniva caricato, ma nulla viene caricato nel bucket e discourse continua a non aprirsi a causa di 404.
Quindi le mie domande sono:
- L’interfaccia web e la variabile d’ambiente entrano in conflitto?
- Quando le risorse dovrebbero essere caricate nel bucket?
- Come posso eseguire il debug di questo? Non vedo errori nei log.
- È possibile impostare una sottocartella di un bucket nella configurazione?
- Una volta che questo funziona, le immagini precedentemente caricate vengono trasferite nel bucket? Se faccio il rebake, come saranno gli URL delle immagini precedentemente caricate?
Grazie!