Guida base per l'utilizzo del server di archiviazione MinIO gestito da te per la tua istanza Discourse

Utilizzare il server MinIO per l’archiviazione di oggetti compatibile con S3

MinIO è una soluzione di server per l’archiviazione di oggetti compatibile con S3, nativa del cloud per impostazione predefinita, ma facile da distribuire su server on-premise, VPS o server cloud come alternativa ad Amazon AWS S3 o ad altri sistemi, ed è compatibile con Discourse se configurata correttamente.

Questa sezione presuppone che nel tuo ambiente siano vere le seguenti condizioni:

  1. Hai un’istanza del server MinIO completamente configurata
  2. Il supporto dei domini è abilitato nella configurazione di MinIO
  3. La configurazione DNS per MinIO è impostata correttamente in modo che i sottodomini dei bucket risolvano correttamente verso il server MinIO
  4. Il bucket discourse-data esiste sul server MinIO e ha una policy “public” impostata su di esso
  5. Il bucket discourse-backups esiste sul server MinIO ed è un bucket privato in cui caricare i file (non raggiungibile pubblicamente - policy predefinita per i nuovi bucket)
  6. L’URL CDN S3 è una CDN correttamente configurata che punta al bucket e mette in cache le richieste, come indicato in precedenza in questo documento.

Se disponi di tutti i requisiti sopra elencati, sei pronto per iniziare.

Una configurazione di esempio sarebbe simile a questa:

DISCOURSE_USE_S3: true
DISCOURSE_S3_REGION: anything
DISCOURSE_S3_ENDPOINT: https://minio.example.com
DISCOURSE_S3_ACCESS_KEY_ID: myaccesskey
DISCOURSE_S3_SECRET_ACCESS_KEY: mysecretkey
DISCOURSE_S3_CDN_URL: https://discourse-data-cdn.example.com
DISCOURSE_S3_BUCKET: discourse-data
DISCOURSE_S3_BACKUP_BUCKET: discourse-backups
DISCOURSE_BACKUP_LOCATION: s3

Questo ti fornirà una configurazione MinIO di base con un server MinIO al posto di Amazon S3.

4 Mi Piace

È ottimo sapere che MinIO ora funziona correttamente con i bucket in stile sottodominio ed è di nuovo compatibile con Discourse.

Puoi modificare la wiki Utilizzo dello storage oggetti per i caricamenti (S3 e cloni) per includere le istruzioni per MinIO?

3 Mi Piace

Ha funzionato per un po’ sia con i bucket in stile sottodominio che in stile percorso. Tuttavia, il componente di configurazione DNS è il più doloroso: richiede regole DNS wildcard speciali per funzionare, oppure un server DNS personalizzato che sia attivamente consapevole di tutti i bucket reali o meno. L’ho fatto in bind9 con zone wildcard, ma farlo su Cloudflare o altri e con le parti in stile sottodominio causa gravi problemi.

SE ritieni che quanto sopra sia adatto per quella sezione, sarò felice di aggiungerlo. Ma includerà quella sezione ‘avvertenze’ e apprezzerei eventuali modifiche o revisioni che vorresti che facessi prima per la formulazione, ecc. (Nota: non ho incluso un URL CDN perché non ho un CDN nella mia distribuzione, poiché i soldi non sono qualcosa con cui posso sperimentare).

3 Mi Piace

Gli utenti che eseguono MinIO solo per Discourse possono anche creare manualmente le voci DNS per i 2 bucket di Discourse, giusto?

La precisazione in questo argomento dovrebbe essere sufficiente. La configurazione di MinIO è completamente fuori dallo scope di questo forum, ma dato un MinIO funzionante, far sì che Discourse lo utilizzi è un caso d’uso valido.

2 Mi Piace

Corretto, ma come hai detto, la configurazione è fuori ambito, quindi mi limiterò a affermare che i percorsi dei sottodomini dei bucket devono essere risolvibili (e lascerò la configurazione DNS agli ${ADMINS} dell’istanza)

2 Mi Piace

Sì, e ho modificato di conseguenza il wiki. Tuttavia, per quanto ne sappia, MinIO non gestisce un servizio cloud, quindi ho lasciato il campo ‘Nome del servizio’ nel sommario del wiki all’inizio vuoto. Modificalo se lo desideri.

2 Mi Piace

Fantastico! Grazie per il contributo!

1 Mi Piace

Prego!

L’ho modificato anch’io: il Provider è Self-hosted, ma la sezione MinIO rimane collegata. Questo dovrebbe risolvere il fatto che non ho trovato al momento una soluzione fornita dal cloud. (Puoi chiudere questo thread ora se vuoi, dato che è integrato nel post del wiki)

3 Mi Piace

Ho anche scoperto (grazie al codice open source e alla documentazione decente di MinIO!) che CORS è già attivo di default su tutti i verbi delle azioni HTTP di MinIO: quindi non è necessario installare le regole CORS, sono già presenti. Ho anche aggiornato la sezione relativa a MinIO self-hosted, oltre a qualche ritocco grammaticale.

Grazie a @Falco per l’aiuto nel tracciare il problema che avevo notato durante la compilazione/ricompilazione dell’app e per le indicazioni di base sulla configurazione CDN con StackPath (poiché volevo un test pienamente funzionante e, avendo già StackPath CDN per altro, ho utilizzato lo stack CDN per verificare che tutto funzionasse!).

2 Mi Piace

Non capisco come impostare lo stile del percorso di forza. Quando configuro la versione 2.6.8 con minio tramite le impostazioni S3, antepone sempre il nome del bucket all’endpoint S3, mentre dovrebbe aggiungerlo come percorso dopo l’endpoint S3.

Sembra anche, dal campione di configurazione su GitHub, che l’opzione s3_force_path_style sia stata rimossa. Mi sfugge qualcosa? Grazie.

@ceelian
Discourse usa la modalità DNS, non la modalità percorso, per S3. È così da MOLTO tempo, è per questo che non specifico nulla sulla modalità percorso nella guida O nella pagina della guida per l’archiviazione S3. Dovresti anche imparare a creare nuovi thread invece di rianimare un vecchio thread per qualcosa di non correlato.

1 Mi Piace

@teward Grazie per il feedback. Mi scuso per aver riesumato la discussione, sono abituato al modo di scrivere di GitHub issues :slight_smile: Avvierò un nuovo thread su come possiamo usare discourse S3 in modalità percorso.

Per tua informazione: non puoi. Non credo che la modalità percorso sia più supportata, motivo per cui l’opzione per forzare la modalità percorso per Discourse è stata rimossa. È anche il motivo per cui la sezione che originariamente ho aggiunto alla pagina delle istruzioni per lo storage di oggetti compatibile con S3 ora dice sotto avvertenze e requisiti:

  1. Hai abilitato il supporto del dominio nella configurazione MinIO, per URL di bucket basati sul dominio. Questo è obbligatorio e non un’opzione, non esiste supporto basato su percorso in Discourse per i percorsi dei bucket.

Molto tempo fa, quando ho iniziato a lavorare con Discourse, avevano quell’opzione, poi è stata rimossa e ho dovuto smettere di usare MinIO come backend. ORA, poiché ci sono documentazioni in MinIO su come far funzionare la modalità DNS (cioè percorsi bucket[.]server[.]com ora come fa S3), funziona quando si configura correttamente MinIO. (Grazie allo staff/moderatori/sistema per aver aumentato il mio livello di fiducia per poter modificare il wiki stesso ora).

2 Mi Piace

Grazie per il chiarimento e per l’indizio su come risolvere il problema!

Questo argomento è stato chiuso automaticamente 24 ore dopo l’ultima risposta. Non sono più consentite nuove risposte.