Configurar um provedor de armazenamento de objetos compatível com S3 para uploads

Alguém já usou o SeaweedFS? Com a incerteza sobre o MinIO, tenho considerado essa opção e vou experimentá-la para ver se há algum problema de compatibilidade com o Discourse.

Consegui fazer o R2 funcionar corretamente usando este conjunto de regras:

  ## Este conjunto de linhas permite que arquivos hospedados no R2 S3 sejam enviados e baixados..
  DISCOURSE_USE_S3: true
  DISCOURSE_S3_REGION: auto
  DISCOURSE_S3_ACCESS_KEY_ID: access-key-id
  DISCOURSE_S3_SECRET_ACCESS_KEY: access-key
  DISCOURSE_S3_CDN_URL: https://eufiles.technospider.com
  DISCOURSE_S3_BUCKET: exotics-unlimited
  DISCOURSE_S3_BACKUP_BUCKET: exotics-unlimited-backups
  DISCOURSE_BACKUP_LOCATION: s3
#  DISCOURSE_CDN_URL: https://eufiles.technospider.com
  DISCOURSE_S3_ENDPOINT: https://71*****5d4976.r2.cloudflarestorage.com
#  DISCOURSE_INCLUDE_S3_UPLOADS_IN_BACKUPS: true
  DISCOURSE_S3_INSTALL_CORS_RULE: false

Assim que comentei a linha CDN_URL, as coisas funcionaram. Acho que pela natureza do fato de o R2 criar o CDN automaticamente, você não precisa dessa linha e, na verdade, adicioná-la quebra as coisas.
Eu comentei a linha de inclusão de imagens apenas para manter meus tamanhos de backup baixos. Estou usando o nível gratuito no R2 e não quero exceder meu limite.

Certo. Você realmente não deve usar DISCOURSE_INCLUDE_S3_UPLOADS_IN_BACKUPS, a menos que esteja migrando para longe do S3. Não faz sentido baixar todas as imagens do S3 para incluí-las em um backup armazenado . . . no S3. Uma vez deixei isso ativado em um bucket da AWS e tive uma conta alta por baixar todas as imagens todos os dias.

Este deve ser um CDN separado que aponta para o seu servidor Discourse, e não para o bucket S3. Algumas coisas, como avatares, e não tenho certeza sobre o que mais, são servidas do seu servidor. O motivo pelo qual não funcionou é que você incluiu o CDN do seu S3, e não o CDN do site.

Você quer dizer se você usa 2 empresas diferentes? Uma para o bucket e outra para a CDN? Eu não sou muito versado nisso, então preciso da informação como se eu tivesse 3 anos…
Eu sei que quando você cria um “domínio personalizado” na interface R2, ele atua como uma CDN, e é por isso que inicialmente tentei adicionar aquela linha.

De qualquer forma, tem funcionado perfeitamente para o meu site de teste e, a menos que haja algo mais que deveria estar fazendo e não está, eu recomendaria que a postagem original fosse atualizada para mostrar que o Cloudflare agora funciona com o Discourse.

Não. Você não pode fazer isso. Existe apenas uma chave/segredo do S3. Eu estava tentando criar um motivo para usar uploads S3, mas não há nenhum.

[quote=“tknospdr, post:499, topic:148916”]
Eu sei que quando você cria um “domínio personalizado” na interface do R2, ele atua como um CDN, e é por isso que inicialmente tentei adicionar essa linha.
[/quote] Isso é para o Bucket S3, não para o seu site. Existem duas variáveis diferentes DISCOURSE_S3_CDN_URL e DISCOURSE_CDN_URL. Você as está tratando como se fossem a mesma coisa. Você não pode usar um CDN para o site, mas o motivo pelo qual não funcionou quando você definiu essa variável é que você forneceu o CDN errado.

Ok, eu pensei que tinha um leve entendimento do que estava fazendo, mas agora acho que estou completamente perdido.

Então, qual é a diferença entre S3 CDN e CDN?

Ainda funcionaria se eu invertesse qual desses 2 eu comentei?

Notei um problema estranho com a imagem de fundo do meu banner de boas-vindas também, isso tem alguma relação com algo disso?

14 publicações foram movidas para um novo tópico: Problemas com AWS CDN e S3

Olá pessoal - só para avisar que o armazenamento de objetos da Hetzner parece funcionar muito bem. Estas são as configurações que adicionei ao meu app.yaml

DISCOURSE_USE_S3: true
DISCOURSE_S3_REGION: whatever
DISCOURSE_S3_INSTALL_CORS_RULE: false
DISCOURSE_S3_ENDPOINT: https://nbg1.your-objectstorage.com
DISCOURSE_S3_ACCESS_KEY_ID: xxxx
DISCOURSE_S3_SECRET_ACCESS_KEY: xxxx
DISCOURSE_S3_CDN_URL: xxxx
DISCOURSE_S3_BUCKET: discourseuploads
DISCOURSE_S3_BACKUP_BUCKET: discoursebackups
DISCOURSE_BACKUP_LOCATION: s3

Obviamente, substitua o seguinte pelas suas próprias configurações:

DISCOURSE_S3_ENDPOINT: (use a URL do painel de controle da Hetzner para a localização onde você criou seu bucket de armazenamento de objetos)
DISCOURSE_S3_ACCESS_KEY_ID: (autoexplicativo)
DISCOURSE_S3_SECRET_ACCESS_KEY: (autoexplicativo)
DISCOURSE_S3_CDN_URL: (use a URL do CDN que puxa do URL do seu bucket Hetzner aqui)

Vou ficar de olho nisso nas próximas semanas/meses no meu servidor de teste, mas até agora tudo bem.

4 curtidas

Apenas uma observação: isso não é mais verdade. A Cloudflare corrigiu o problema e os buckets R2 agora são compatíveis com o S3. Tenho backups externos para o Cloudflare R2 e acabei de realizar uma restauração completa bem-sucedida em outro servidor. (Além disso, é gratuito até 10 GB/mês)

Basta obter o nome do bucket (para o bucket de backup S3), o ID da chave de acesso, a chave de acesso secreta e o endpoint específico da jurisdição do armazenamento de objetos Cloudflare R2 para inserir nas configurações S3 do Discourse ou nos arquivos app.yml/web_only.yml, etc.

1 curtida

Essa é uma ótima notícia! Alguém deveria editar a OP de acordo.

não tenho ideia de como funciona a atualização de documentação (mais ou menos) nova — aparentemente eles estão armazenados em algum lugar aqui? discourse/docs at main · discourse/discourse · GitHub, mas não vejo documentação para auto-hospedagem. :woman_shrugging: esquece, vi o link de edições sugeridas na página de edição da wiki. Vou sugerir uma atualização.

edição: a atualização para o armazenamento de objetos Cloudflare R2 foi enviada

Uma mensagem foi dividida em um novo tópico: As avatares demoram muito para carregar após a migração para o R2 compatível com S3

sugeri uma atualização: corrigi todos os links quebrados para as várias seções no conteúdo do OP e atualizei as notas de configuração do Cloudflare R2.

3 curtidas

Obrigado :folded_hands:

Isso poderia ter sido um impulso para que eu não precisasse digitar mais caracteres

1 curtida

@chapoi @Lilly

Na Europa, também é possível usar armazenamento compatível com S3 e em conformidade com o RGPD da UE com a hetzner.de . Dentro da UE, eles operam data centers certificados ISO/IEC 27001:2022 na Alemanha e na Finlândia. Talvez essas informações possam ser adicionadas à lista principal acima.

Exemplo de Configuração para hetzner.de

Configuração Valor
Endpoint S3 https://[datacenter].your-objectstorage.com
Data center do endpoint S3 [datacenter] = hel1 (Helsínquia), fsn1 (Falkenstein), nbg1 (Nuremberg)
ID da chave de acesso S3 Chave de acesso S3 da Hetzner
Chave secreta de acesso S3 Chave secreta S3 da Hetzner (exibida apenas uma vez durante a criação do armazenamento S3)
Bucket de upload S3 Nome do bucket S3 da Hetzner
Habilitar uploads S3 true

Observe que o aviso sobre “O servidor está configurado para fazer upload de arquivos para o S3, mas não há CDN S3 configurado” deve ser ignorado. A hetzner.de ainda não oferece funcionalidade de CDN global. Consulte https://docs.hetzner.com/storage/general/which-storage-is-right-for-me para mais detalhes.