Non sembra che io abbia il permesso di modificare la wiki, ma ho utilizzato con successo un altro provider.
OVHcloud
Nome del servizio: Object Storage
Le regioni corrispondono ai data center, identificati da un codice di tre lettere. Se non sai dove hai creato il tuo bucket, controlla nella scheda object storage del tuo portale clienti.
Inizialmente entrambi nella mia versione di test, ma sono passato in produzione solo con i backup, dato che la macchina di produzione ha moltissimo spazio comunque.
Ă molto compatibile con S3, ma ci sono alcune funzioni mancanti come le regole di ciclo di vita per eliminare i vecchi file o spostarli in archiviazione a freddo, che sono attivamente in sviluppo da parte di OVH. Tuttavia, funziona bene per servire i file.
Per i backup ho semplicemente usato lâopzione di Discourse di eliminare automaticamente i vecchi backup.
Questa è una risposta davvero deludente e completamente inutile. Qual è esattamente il problema? Collegarsi a un documento di supporto che cambia significa che nessuno può effettivamente dire quale sia lââorribile difettositĂ â menzionata in questo thread qui.
Menzioni âmetadatiâ e che il CDN ânon li conosceâ. Quali metadati? Sarebbe utile sapere cosa non funziona.
Volevo solo aggiungere a questo mio post con le istruzioni su come utilizzare E2 di iDrive.
Sembra che ci sia una cosa che iDrive ha recentemente attivato che causa il fallimento delle chiavi di accesso assegnate a un solo bucket, a meno che non venga bypassato un controllo di autenticazione del bucket.
Puoi aggirare questo problema quando usi rclone con no_check_bucket = true nel file rclone.conf, ma non sono sicuro che esista unâimpostazione ENV simile per la compilazione di Discourse.
Di conseguenza, con iDrive E2, attualmente devi utilizzare una chiave che abbia accesso in scrittura a tutti i tuoi bucket, piuttosto che a uno solo.
Come farebbe qualcun altro a conoscere il problema esatto per un provider che non utilizza?
Comunque, sembra che ci siamo quasi con Cloudflare R2. Per:
Quando ho inserito tutte le informazioni nellâinterfaccia utente web, i nuovi caricamenti sono andati correttamente nello storage S3 e anche i backup vanno correttamente su S3. I caricamenti correnti ovviamente non si sono spostati.
Quindi sono andato su app.yml e ho inserito queste informazioni:
## Questo set di righe consente di caricare e scaricare file ospitati su R2 S3.
DISCOURSE_CDN_URL: https://eufiles.technospider.com
DISCOURSE_USE_S3: true
DISCOURSE_S3_ENDPOINT: https://randomnumber.r2.cloudflarestorage.com
DISCOURSE_S3_CDN_URL: https://eufiles.technospider.com
DISCOURSE_S3_BACKUP_BUCKET: exotics-unlimited-backups
DISCOURSE_INCLUDE_S3_UPLOADS_IN_BACKUPS: true
DISCOURSE_BACKUP_LOCATION: s3
DISCOURSE_S3_BUCKET: exotics-unlimited
DISCOURSE_S3_REGION: auto
DISCOURSE_S3_ACCESS_KEY_ID: randomnumbers
DISCOURSE_S3_SECRET_ACCESS_KEY: randomnumbers
DISCOURSE_S3_INSTALL_CORS_RULE: false
## Il container Docker è stateless; tutti i dati sono memorizzati in /shared
volumes:
- volume:
host: /var/discourse/shared/standalone
guest: /shared
- volume:
host: /var/discourse/shared/standalone/log/var-log
guest: /var/log
## I plugin vanno qui
## vedi https://meta.discourse.org/t/19157 per i dettagli
hooks:
after_code:
- exec:
cd: $home/plugins
cmd:
- git clone https://github.com/discourse/docker_manager.git
# - git clone https://github.com/discourse/discourse-subscriptions.git
- git clone https://github.com/discourse/discourse-follow.git
- git clone https://github.com/discourse/discourse-solved.git
- git clone https://github.com/communiteq/discourse-private-topics.git
# - git clone https://github.com/discourse/discourse-assign.git
- git clone https://github.com/tknospdr/discourse-auto-remove-group.git
- git clone https://github.com/discourse/discourse-topic-voting.git
- git clone https://github.com/discourse/discourse-livestream.git
# - git clone https://github.com/discourse/discourse-calendar.git
- git clone https://github.com/jannolii/discourse-topic-trade-buttons.git
## - git clone https://github.com/tknospdr/force-tag-group-order.git
## Hook per S3
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 una ricostruzione il mio sito è stato interrotto a causa di molti file mancanti, quindi ho provato a trasferirli sul server e ho ottenuto questo errore per ogni file:
root@talk-app:/var/www/discourse# rake uploads:migrate_to_s3
Si prega di notare che la migrazione a S3 al momento non è reversibile!
[CTRL+c] per annullare, [ENTER] per continuare
Migrazione degli upload su S3 per 'default'...
Caricamento dei file su S3...
- Elenco dei file locali
=> 31 file
- Elenco dei file S3
. => 4 file
- Sincronizzazione dei file su S3
#<Thread:0x00007ff89dcbcb20 /var/www/discourse/lib/file_store/to_s3_migration.rb:212 run> terminato con eccezione (report_on_exception è true):
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.226.0/lib/seahorse/client/plugins/raise_response_errors.rb:17:in `call': You can only specify one non-default checksum at a time. (Aws::S3::Errors::InvalidRequest)
from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-s3-1.182.0/lib/aws-sdk-s3/plugins/sse_cpk.rb:24:in `call'
from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-s3-1.182.0/lib/aws-sdk-s3/plugins/dualstack.rb:21:in `call'
from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-s3-1.182.0/lib/aws-sdk-s3/plugins/accelerate.rb:43:in `call'
from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.226.0/lib/aws-sdk-core/plugins/checksum_algorithm.rb:169:in `call'
from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.226.0/lib/aws-sdk-core/plugins/jsonvalue_converter.rb:16:in `call'
from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.226.0/lib/aws-sdk-core/plugins/invocation_id.rb:16:in `call'
from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.226.0/lib/aws-sdk-core/plugins/idempotency_token.rb:19:in `call'
from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.226.0/lib/aws-sdk-core/plugins/param_converter.rb:26:in `call'
from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.226.0/lib/seahorse/client/plugins/request_callback.rb:89:in `call'
from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.226.0/lib/aws-sdk-core/plugins/response_paging.rb:12:in `call'
from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.226.0/lib/seahorse/client/plugins/response_target.rb:24:in `call'
from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.226.0/lib/aws-sdk-core/plugins/telemetry.rb:39:in `block in call'
from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.226.0/lib/aws-sdk-core/telemetry/no_op.rb:29:in `in_span'
from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.226.0/lib/aws-sdk-core/plugins/telemetry.rb:53:in `span_wrapper'
from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-core-3.226.0/lib/aws-sdk-core/plugins/telemetry.rb:39:in `call'
from /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/aws-sdk-s3-1.182.0/lib/aws-sdk-s3/client.rb:17315:in `put_object'
from /var/www/discourse/lib/file_store/to_s3_migration.rb:215:in `block (2 levels) in migrate_to_s3'
Mi piacerebbe ricevere qualche consiglio per finire una cosa o lâaltra.
I file mancanti sono probabilmente asset, quindi hai bisogno del rake task che li carichi su s3 (s3:upload_assets â è verso lâalto)
Ma i tuoi errori sono probabilmente dovuti alla nuova libreria aws s3 che rompe un sacco di servizi. Quindi dovrai trovare il modo di fare il downgrade della gemma aws o usare un altro servizio.
Penso che ci possa essere un argomento su come farlo. Lâho fatto su uno o due siti, ma non sono sicuro di come o dove sia stato documentato.
Devo eseguirla anche se fa parte delle modifiche che ho inserito nel file app.yml? Pensavo servisse a caricare automaticamente i file durante una ricostruzione.
Non dovresti, ma queste sono le cose che renderebbero il tuo sito ârottoâ (o per te ârottoâ significa âimmagini mancantiâ?) Il caricamento di immagini con migrate_to_s3 influisce solo sulle immagini.
Non riesco a spiegare come le risorse siano giĂ state caricate (cosa câera di rotto sul sito? Come sono state caricate se la tua configurazione S3 è rotta?)
Dato che tutto sembra essere nel mio bucket, probabilmente câè una variabile dâambiente che deve essere aggiornata per far funzionare tutto correttamente.
Se riusciamo a risolvere questo problema, possiamo dire che R2 è pronto per il grande momento.
Dove dovrebbe trovarsi âextra-localesâ? Non lo vedo sotto âpublicâ o âassetsâ nemmeno allâinterno del container. Dove dovrei cercare?
Scusa per le domande stupide, ma questa è unâavventura completamente nuova per me.
Cosâè il mio CDN o il mio bucket?
Con i trattini iniziali e tutte le virgolette singole e doppie? Non ho nessuno di questi nel mio file app.yml. Dovrei aggiungerli e ricostruire per testare?
Questo è esattamente come appare il mio file, indentato di 2 spazi ciascuno:
## Questo insieme di righe consente di caricare e scaricare file ospitati su R2 S3.
DISCOURSE_CDN_URL: https://eufiles.technospider.com
DISCOURSE_USE_S3: true
DISCOURSE_S3_ENDPOINT: https://randomnumber.r2.cloudflarestorage.com
DISCOURSE_S3_CDN_URL: https://eufiles.technospider.com
DISCOURSE_S3_BACKUP_BUCKET: exotics-unlimited-backups
DISCOURSE_INCLUDE_S3_UPLOADS_IN_BACKUPS: true
DISCOURSE_BACKUP_LOCATION: s3
DISCOURSE_S3_BUCKET: exotics-unlimited
DISCOURSE_S3_REGION: auto
DISCOURSE_S3_ACCESS_KEY_ID: randomnumbers
DISCOURSE_S3_SECRET_ACCESS_KEY: randomnumbers
DISCOURSE_S3_INSTALL_CORS_RULE: false
Ha funzionato quando ho inserito le impostazioni tramite lâinterfaccia web, poi quando ho inserito tutto nel file app.yml ho ottenuto quello che hai visto quando sei andato sul sito.
Ecco cosa vedo quando accedo a una delle tue risorse:
Questo oggetto non esiste o non è accessibile pubblicamente a questo URL. Controlla l'URL dell'oggetto che stai cercando o contatta il proprietario per abilitare l'accesso pubblico.
Puoi vedere se https://eufiles.technospider.com/extra-locales/ca382c69f8e6b85162b2ba58f2ce100bfe741966/en/mf.js?__ws=eu.technospider.com funziona se cambi lâhostname con il tuo endpoint Cloudflare.
Puoi trovare quel file nel tuo bucket? Puoi accedervi?
Non lo so, ma è un URL che ho copiato dagli strumenti per sviluppatori nel mio browser.
Quindi prima trova quel file nel tuo bucket e vedi se câè, e poi potrai capire perchĂŠ la CDN non riesce a trovarlo.
No. Uso uno strumento diverso per la configurazione, ma quelle sono le impostazioni ENV che sono abbastanza sicuro che abbiano funzionato per me una volta.
Questo file XML non sembra avere alcuna informazione di stile associata. L'albero del documento è mostrato di seguito.
<Errore>
<Codice>InvalidArgument</Codice>
<Messaggio>Autorizzazione</Messaggio>
</Errore>
Un bucket è quella âdirectory principaleâ che hai creato e dove si trovano tutti i file. CDN è un insieme di server in tutto il mondo che ricevono una copia di quel bucket. Il tuo è identificato tramite lâURL che hai fornito quando è stata creata quella connessione, ad esempio cdn.example.com.
Sembra che con R2 venga creato automaticamente il CDN se si assegna un dominio personalizzato al bucket. Questo è stato un poâ confusionario poichĂŠ non ho dovuto fare nulla con il CDN.
Questo file XML non sembra avere alcuna informazione di stile associata. L'albero del documento è mostrato di seguito.
<Error>
<Code>InvalidArgument</Code>
<Message>Authorization</Message>
</Error>
Mi restituisce:
PoichĂŠ lâerrore parla di autorizzazione, ho approfondito un poâ e ho trovato questo frammento:
Nota
Per impostazione predefinita, solo alcuni tipi di file vengono memorizzati nella cache. Per memorizzare nella cache tutti i file nel tuo bucket, devi impostare una regola della pagina âCache tuttoâ.
Per ulteriori informazioni sul comportamento predefinito della cache e su come personalizzarlo, fai riferimento a Comportamento predefinito della cache
Da questa pagina:
Ho creato una regola âCache tuttoâ, ma non è cambiato nulla.