Configura un fornitore di storage di oggetti compatibile con S3 per gli upload

Scaleway ha cambiato qualcosa? Ha funzionato per me fino a 48 ore fa, ma non funziona più.

1 Mi Piace

La tua bolletta è pagata? Cosa c’è che non va? Funzionano delle immagini? Sono tutte sparite o non riesci proprio ad aggiungerne di nuove?

1 Mi Piace

Puoi aggiungere un po’ più di supporto? Ad esempio, Tencent COS dalla Cina è più comodo per gli utenti cinesi e COS di Tencent Cloud ha nodi CDN in tutto il mondo, il che è molto veloce da accedere.

L’hai provato? Funziona?

L’ho usato nell’ambiente di test, ma posso eseguire il backup solo su Tencent COS e spero che il team di Discourse possa aggiungere il supporto per Tencent COS per facilitare gli sviluppatori dalla Cina.

1 Mi Piace

Penso che dovrai condividere ciò che hai fatto e quali errori o problemi hai avuto. Poi qualcuno potrebbe essere in grado di suggerire come farlo funzionare. Potresti guardare gli altri esempi e vedere se puoi usarli per farlo funzionare.

Penso che sia improbabile che apportino modifiche al core per supportarlo.

1 Mi Piace

Backblaze:

  • Ho configurato un bucket B2 nel mio account
  • Aggiunti i dettagli nella sezione env di app.yml
  • Eseguito ./launcher rebuild app

…ma non vedo alcuna conferma nella dashboard della mia istanza Discourse che queste impostazioni abbiano avuto effetto. Dove dovrei guardare?

1 Mi Piace

Ciao,

Sono riuscito a testare e utilizzare Cloudflare R2 sia per i caricamenti che per i backup. Post dettagliato qui Cloudflare R2: Navigating Setup and Handling Configuration Errors - #40 by kamaljain

Ti chiederei gentilmente di testarlo anche tu e di rivedere “Funziona con Discourse” su Sì per Cloudflare R2. In effetti è più facile di S3 e più economico, gratuito se si hanno meno di 10 GB di spazio di archiviazione.

2 Mi Piace

Anch’io ho testato una configurazione su multisito e penso che funzioni.

Ho visto qualcosa che mi fa chiedere se sia possibile ottenere un elenco di backup. Cercherò di controllare la mia configurazione.

1 Mi Piace

Posso vedere i backup elencati. Non ho ancora provato il ripristino.

1 Mi Piace

Ciao amico, posso chattare con te? Ho qualche problema durante la configurazione con MinIO.
Grazie.

Configurazione iDrive

Volevo solo segnalare che l’utilizzo della versione E2 di iDrive per lo storage s3 funziona perfettamente con queste impostazioni:

Impostazioni ENV nel file yaml

Assicurati che il tuo bucket abbia almeno i permessi Pubblico e Lettura nelle impostazioni di iDrive.

Queste sono le impostazioni che uso per un bucket che condivide uploads e backups.

DISCOURSE_USE_S3: true
DISCOURSE_S3_REGION: tua-regione
DISCOURSE_S3_ENDPOINT: https://il-tuo-endpoint-idrive.dev
DISCOURSE_S3_ACCESS_KEY_ID: la-tua-chiave-di-accesso
DISCOURSE_S3_SECRET_ACCESS_KEY: la-tua-chiave-segreta
DISCOURSE_S3_CDN_URL: https://il-tuo-cdn-personalizzato.com/uploads
DISCOURSE_S3_BUCKET: il-tuo-nome-bucket/uploads
DISCOURSE_S3_BACKUP_BUCKET: il-tuo-nome-bucket/backups
DISCOURSE_BACKUP_LOCATION: s3
DISCOURSE_S3_INSTALL_CORS_RULE: false

Per impostazione predefinita, iDrive ha Condividi tutto in questa regione con ogni origine… quindi dovrebbe funzionare subito indipendentemente dalle origini. Bloccalo sui tuoi domini se vuoi.

Utilizzo un certificato di origine Cloudflare per creare un CNAME che punta all’endpoint iDrive.


Sincronizza allegati esistenti

Ricostruisci

Ricostruisci l’app dopo aver modificato queste impostazioni ENV.


Carica e Ricodifica

Quindi entra nel container ed esegui

rake uploads:migrate_to_s3

Guardalo caricare, quindi esegui

rake posts:rebake_uncooked_posts

Esci dal container


Aggiungi alla sezione hooks del file yaml

Nella sezione hooks

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

Questo assicura che js/css vengano caricati su iDrive dopo i tuoi allegati, altrimenti otterrai un sacco di errori nella console del browser poiché mancano tutti.


Ricostruisci

Ricostruisci di nuovo dopo che il comando degli asset è stato inserito.


Tutto dovrebbe andare bene!

2 Mi Piace

Forse il servizio Hetzner Object Storage dovrebbe essere aggiunto alla tabella?

2 Mi Piace

Sono riuscito a usare Contabo per i caricamenti di file. Sia i file vecchi (migrati) che i nuovi caricamenti hanno funzionato bene. Nel mio caso l’URL del bucket era https://eu2.contabostorage.com/mybucket.
Il trucco è stato impostare EU2 come nome del bucket e https://contabostorage.com/mybucket come endpoint.
L’unico problema è che quando si carica il sito, richiede anche altri file come i js dei plugin dal bucket e non vengono caricati perché i file non sono disponibili. Bene, ho capito che questo accade perché ho impostato l’URL della CDN uguale al bucket. Questo non mi è ancora molto chiaro, qualcuno può dirmi come configurarlo? Da quello che ho capito devo creare un indirizzo cname che punti al dominio principale (server discourse) e inoltrarlo con cloudflare, è corretto?

1 Mi Piace

Ti sei perso questo pezzo:

1 Mi Piace

Sono sicuro di averlo fatto, ma forse ho commesso un errore. Alla fine ho ripristinato un backup, quindi vado un po’ a memoria… Ma allora mi chiedo, perché è sconsigliato impostare un CDN come Bucket? Quali problemi può causare? Riproverò domani.
Grazie

1 Mi Piace

Non credo che il problema che descrivi sia dovuto all’impostazione dell’URL del CDN come URL del bucket (cioè, se i caricamenti funzionano, ma gli asset no).

2 Mi Piace

Ti aggiorno domani, grazie

1 Mi Piace

E ha funzionato :partying_face:
Passo dopo passo di quello che ho fatto sperando di aiutare gli altri:

modificato app.yml e aggiunto

  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

dopo hooks: (subito dopo git clone plugins…)
e

  DISCOURSE_USE_S3: true
  DISCOURSE_S3_REGION: EU
  DISCOURSE_S3_ENDPOINT: https://contabostorage.com/bucketname
  DISCOURSE_S3_ACCESS_KEY_ID: accesskey
  DISCOURSE_S3_SECRET_ACCESS_KEY: secretaccesskey
  DISCOURSE_S3_CDN_URL: https://eu2.contabostorage.com/randomlettersthatcontaboaddstothelinks:bucketname
  DISCOURSE_S3_BUCKET: eu2
  DISCOURSE_BACKUP_LOCATION: s3
  DISCOURSE_S3_INSTALL_CORS_RULE: false

dopo le impostazioni email
poi ho impostato gli stessi valori nel menu di discourse e abilitato i caricamenti S3.
Ricostruito l’app con

cd /var/discourse
sudo ./launcher rebuild app

poi

./launcher enter app
rake uploads:migrate_to_s3

Ci vuole un po’, nel mio caso qualche ora (80k file, 100GB)

Quando finito

rake posts:rebake_uncooked_posts
4 Mi Piace

Aggiornamento: alcuni utenti non sono riusciti a caricare il sito (asset e file). Abbiamo scoperto che il dominio contabostorage.com era presente in alcune blocklist come sito di phishing. La soluzione è stata semplice:

configura un sottodominio files.mydomain.com come descritto qui Can I Setup a Custom Domain for My Object Storage? : Contabo

Aggiornato DISCOURSE_S3_CDN_URL: https://files.mydomain.com in app.yml

Poi

cd /var/discourse
sudo ./launcher rebuild app

e per completare il lavoro

./launcher enter app
rake posts:rebake

Ora tutti gli asset e i caricamenti vengono caricati da https://files.mydomain.com/pathtofile/file.ext

Fatto

2 Mi Piace