Mesmo problema aqui. Temos arquivos JS que rodam em nosso próprio software, nada que faria algo em um navegador.
Conseguimos resolver o problema de download do Discourse movendo todos os uploads para um bucket S3 e definindo s3_use_cdn_url_for_all_uploads como true. Isso essencialmente contorna o controlador de URL curta, que parece ser o impeditivo para arquivos JS.
Em detalhes (do meu assistente de IA que me guiou nisso):
- Configure o armazenamento compatível com S3 (por exemplo, Cloudflare R2)
O Discourse não pode servir com segurança arquivos .js a partir do disco local. Mova-os para um bucket.
-
Bucket: Crie um bucket privado (por exemplo,
my-discourse-bucket). -
Chaves de API: Gere uma Access Key e uma Secret Key.
2. Configure um domínio CDN personalizado
No Cloudflare (ou em seu provedor), conecte um domínio personalizado ao seu bucket (por exemplo, cdn.example.com). Isso garante que os arquivos sejam servidos como ativos estáticos por meio de uma URL direta, contornando o “guardião de segurança” do Discourse.
3. Atualize as configurações do Discourse
Em Admin → Configurações, configure seus detalhes do S3. Crucialmente, ative as seguintes opções para garantir que o Discourse não tente “assinar” as URLs com cabeçalhos temporários que podem quebrar:
-
s3_use_cdn_url_for_all_uploads: Marque esta caixa (Esta é a etapa mais importante). -
s3_cdn_url: Defina comohttps://cdn.example.com. -
s3_region: Useus-east-1(para compatibilidade com R2).
4. Migre uploads existentes (opcional)
Nota: Isso NÃO funcionou para nós por motivos desconhecidos.
Para corrigir links antigos em postagens existentes, entre no seu contêiner e execute:
Bash
# Dentro de /var/discourse
./launcher enter app
rake uploads:migrate_to_s3
rake posts:rebake
Espero que isso ajude alguém.