Obrigado por montar este guia! Tive algum sucesso usando o Minio.
Para quem mais estiver tentando configurá-lo localmente com Docker Compose, você pode dizer ao Docker para adicionar um alias de hostname para que funcione como um subdomínio, assim:
minio:
image: minio/minio
command: server --console-address :9001 /data
ports:
- "9000:9000"
- "9001:9001"
volumes:
- ./data/minio:/data
environment:
MINIO_DOMAIN: minio.mydomain.com
networks:
default:
aliases:
- assets.minio.mydomain.com
Neste caso, você definiria DISCOURSE_S3_ENDPOINT=http://minio.mydomain.com:9000, DISCOURSE_S3_CDN_URL=//assets.minio.mydomain.com:9000, e definiria seu arquivo local /etc/hosts/ para apontar o subdomínio para localhost.
Isso funciona na maior parte do tempo, mas notei que o Discourse não consegue baixar arquivos de um endereço que não tenha a porta 80 ou 443, então o upload de uma imagem funcionará, mas quando ele tentar baixá-la para redimensioná-la, falhará.
Pensei que seria bom mencionar isso na seção do Minio ou no resumo, que o DISCOURSE_S3_CDN_URL deve estar na porta 80 ou 443.