Utilización del servidor MinIO para almacenamiento de objetos compatible con S3
MinIO es una solución de servidor de almacenamiento de objetos compatible con S3 que es nativa de la nube por defecto, pero fácil de implementar en servidores locales, VPS o servidores en la nube para su uso como alternativa a Amazon AWS S3 u otros sistemas, y es compatible con Discourse cuando se configura correctamente.
Esta sección asume que en su entorno se cumplen las siguientes condiciones:
Tiene una instancia de servidor MinIO completamente configurada.
Tiene el soporte de dominios habilitado en la configuración de MinIO.
Tiene la configuración de DNS correctamente establecida para MinIO, de modo que los subdominios de los buckets se resuelvan correctamente al servidor MinIO.
El bucket discourse-data existe en el servidor MinIO y tiene una política “pública” asignada.
El bucket discourse-backups existe en el servidor MinIO y es un bucket privado para subir archivos (y no es accesible públicamente; esta es la política predeterminada para los buckets nuevos).
Su URL de CDN de S3 es una CDN correctamente configurada que apunta al bucket y almacena en caché las solicitudes, como se mencionó anteriormente en este documento.
Si cumple con todos los requisitos anteriores, ya estará listo para comenzar.
Ha funcionado tanto con buckets de estilo subdominio como de estilo de ruta durante un tiempo. Sin embargo, el componente de configuración de DNS es el más doloroso: requiere reglas de DNS comodín especiales para funcionar, o un servidor DNS personalizado que esté activamente al tanto de todos los buckets reales o no. Lo he hecho en bind9 con zonas comodín, pero al hacerlo en Cloudflare u otros, los fragmentos de estilo de subdominio fallan estrepitosamente.
SI consideras que lo anterior es adecuado para esa sección, estaré encantado de incluirlo. Pero incluirá esa sección de ‘advertencias’, y agradecería cualquier revisión o sugerencia que desees que haga primero sobre la redacción, etc. (Y ten en cuenta que no incluí una URL de CDN porque no tengo una CDN en mi implementación (porque el dinero $$$ no es algo con lo que pueda experimentar).
Los usuarios que ejecutan MinIO solo para Discourse también pueden crear manualmente las entradas de DNS para los dos buckets de Discourse, ¿verdad?
La advertencia en este tema debería ser suficiente. La configuración de MinIO está completamente fuera del alcance de este foro, pero, dado un MinIO funcional, hacer que Discourse lo utilice es un caso de uso válido.
Correcto, pero como dijiste, la configuración está fuera del alcance, así que simplemente indicaré que las rutas de subdominio de los buckets deben resolverse (y dejaré la configuración DNS a los ${ADMINS} de la instancia).
Sí, y he editado la wiki en consecuencia. Sin embargo, que yo sepa, MinIO no ejecuta un servicio en la nube, por lo que dejé en blanco el ‘Nombre del servicio’ en el índice de la wiki al principio; ajústalo si lo deseas.
También lo ajusté: el proveedor es autoalojado, pero la sección de MinIO sigue vinculada. Eso debería resolver el hecho de que no tengan una solución en la nube que haya podido encontrar por el momento. (Puedes cerrar este hilo ahora si lo deseas, ya que está integrado en la publicación del wiki).
También descubrí (¡gracias al código de código abierto y a la buena documentación de MinIO!) que CORS ya está activado por defecto en todos los verbos de acción HTTP de MinIO, por lo que no es necesario instalar las reglas de CORS; ya están presentes. También actualicé la sección de MinIO autoalojado, junto con algunos ajustes gramaticales.
Gracias a @Falco por su ayuda para rastrear el problema que noté durante la construcción/reconstrucción de la aplicación, y por las orientaciones básicas sobre la configuración de CDN con StackPath (ya que quería una prueba totalmente funcional y, de todos modos, tengo una CDN de StackPath para otra cosa, así que usar la pila de CDN confirmó que todo funcionaba).
No entiendo cómo configurar el estilo de ruta de fuerza. Cuando configuro la versión 2.6.8 con minio a través de la configuración de S3, siempre antepone el nombre del bucket al punto final de s3, donde debería añadirlo como ruta después del punto final de s3.
También parece, por la muestra de configuración en github, que la opción s3_force_path_style ha sido eliminada. ¿Me estoy perdiendo algo? Gracias.
Discourse usa el modo DNS, no el modo de ruta, para S3. Ha sido así DURANTE MUCHO TIEMPO, por eso no especifico nada sobre el modo de ruta en el manual o en la página del manual de almacenamiento S3. También deberías aprender a crear nuevos hilos en lugar de revivir un hilo antiguo para algo no relacionado.
@teward Gracias por tus comentarios. Disculpa por revivir el hilo, estoy acostumbrado a la forma de escribir de los issues de GitHub Comenzaré un nuevo hilo sobre cómo podemos usar discourse S3 en modo de ruta.
Tienes habilitado el soporte de dominio en la configuración de MinIO, para URL de bucket dirigidas por dominio. Esto es obligatorio y no es una opción, no hay soporte basado en rutas en Discourse para rutas de bucket.
Hace mucho tiempo, cuando trabajé por primera vez con Discourse, tenían esa opción, luego la eliminaron y tuve que dejar de usar MinIO como backend. AHORA, dado que hay documentación en MinIO sobre cómo hacer que el modo DNS funcione (es decir, rutas bucket[.]server[.]com ahora como lo hace S3), funciona cuando se configura MinIO correctamente. (Gracias al personal/moderadores/sistema por aumentar mi nivel de confianza para editar el wiki ahora).