Olá,
Estou um pouco preso e confuso e espero que alguém possa me ajudar.
Primeiro, tive uma instalação do Bitnami e percebi o quanto isso me daria trabalho, então reinstalei usando a instalação padrão.
Consegui restaurar meu backup e tudo ficou bem, mesmo tendo passado da versão 2.8 para a beta 2.9.
Testei meu backup novamente no meu Google Bucket e ele ainda funcionou perfeitamente.
Note que toda a configuração do S3 foi feita através da interface web e não via variáveis de ambiente.
Por motivos de GDPR, criei um novo bucket de backup na Europa (vamos chamá-lo de discourse-backup-eu) e, como consegui alterar a variável de ambiente, defini DISCOURSE_S3_ENDPOINT: https://storage.googleapis.com, reconstruí o aplicativo, alterei o nome do bucket de backup na interface web, executei o backup novamente e fiquei muito satisfeito ao ver os arquivos de backup aparecendo em meu novo bucket de backup na Europa.
Agora eu queria que os uploads fossem para outro bucket e evitar encher o espaço em disco da minha VM.
Então configurei um novo bucket (vamos chamá-lo de discourse-uploads), o tornei público, adicionei a função Storage Legacy Bucket Owner à minha conta de serviço nesse novo bucket.
Em seguida, adicionei uma regra ao meu balanceador de carga existente (vamos chamá-lo de https://www.example.com) para usar um bucket de backend com Cloud CDN ativado, conforme instruído aqui. A regra sendo /discourse-uploads/* aponta para o bucket discourse-uploads.
Testei meu CDN com um test.jpg na raiz do bucket, mas não consegui acessá-lo via https://www.example.com/discourse-uploads/test.jpg e tive que criar uma subpasta chamada discourse-uploads dentro do bucket, movi o test.jpg para dentro e agora consigo ver minha imagem de teste via https://www.example.com/discourse-uploads/test.jpg.
Na interface web, alterei o nome do bucket dummy em “s3 upload bucket” (fui forçado a definir anteriormente enquanto configurava o backup) para discourse-uploads, preenchi a URL do CDN com https://www.example.com/discourse-uploads e marquei “enable s3 uploads”.
A partir daí, se eu tentasse fazer upload de uma imagem, receberia um pop-up dizendo Argumento Inválido na janela do navegador (vindo de um erro 422 com um conteúdo JSON dizendo basicamente o mesmo).
Tentei refazer todos os posts, mas não teve efeito, ainda tive o erro.
Então pensei que deveria tentar usar as variáveis de ambiente em vez da interface web.
e usar a seguinte configuração:
DISCOURSE_USE_S3: true
DISCOURSE_S3_REGION: qualquer
DISCOURSE_S3_INSTALL_CORS_RULE: false
FORCE_S3_UPLOADS: 1
DISCOURSE_S3_ENDPOINT: https://storage.googleapis.com
DISCOURSE_S3_ACCESS_KEY_ID: MY_KEY_ID
DISCOURSE_S3_SECRET_ACCESS_KEY: MY_ACCESS_KEY
DISCOURSE_S3_CDN_URL: https://www.example.com/discourse-uploads
DISCOURSE_S3_BUCKET: discourse-uploads/discourse-uploads
DISCOURSE_S3_BACKUP_BUCKET: discourse-backup-eu
DISCOURSE_BACKUP_LOCATION: s3
Reconstruí o aplicativo.
Então não consigo mais abrir o discourse porque nenhum dos assets foi carregado no bucket e recebo um 404
https://www.example.com/discourse-uploads/assets/admin-31467dc73634cbfb81799737c43df0e2939307d893ef32713f1d0770bcb3532c.br.js
Pensei que tentar fazer upload diretamente para uma subpasta no bucket era um pouco exagerado, embora o OP sugira que funciona (pelo menos para o bucket de backup)
alterei a variável de ambiente para
DISCOURSE_S3_BUCKET: discourse-uploads
(Pensando que mais tarde posso brincar com a regra do host em vez de ter que fazer upload para uma subpasta)
e reconstruí para ver se algo era carregado, mas nada é carregado no bucket e o discourse ainda falha ao abrir por causa de 404s.
Então minhas perguntas são:
- A interface web e a variável de ambiente colidem?
- Quando os assets deveriam ser carregados no bucket?
- Como posso depurar isso? Não vejo nenhum erro nos logs.
- É possível definir uma subpasta de um bucket na configuração?
- Uma vez que isso funcione, as imagens previamente carregadas serão transferidas para o bucket? Se eu refizer, como ficará a URL das imagens previamente carregadas?
Obrigado!