Ativos S3 quebrados após mover o fórum

Olá,

Fui obrigado a migrar um fórum Discourse abandonado. Felizmente, tínhamos vários administradores, o que tornou possível realizar a migração e baixar um backup. Utilizávamos um bucket S3 para nossos ativos, o que acabou sendo um problema. Vou fazer um pedido de recurso neste ponto:

Permitir incluir ativos do S3 nos backups

Descobri (não tenho certeza se foi antes ou depois de recriar as postagens) que as URLs dos ativos do S3 foram reescritas para URLs internas. Então, extraí todas as URLs do S3 original e optimized do arquivo do banco de dados e as baixei (mais ou menos) manualmente. Após movê-las para o local correto, todas as imagens faltantes foram exibidas. … Seria ótimo ter um recurso automático para isso.

Até agora, encontrei três bugs:

  1. Imagens de pré-visualização quebradas, imagens ampliadas funcionando
  1. Imagens de pré-visualização funcionando, sem efeito de mouse-over para ampliar imagens
  • /t/microlongrange-openhd-edition/379 … Só consigo colocar 2 links na minha primeira postagem
  1. Gravatars quebrados (talvez não relacionado):
    -

Não encontrei problemas em novas postagens.

Obrigado por este ótimo projeto,
Limitless Green

Isso parece ser uma má configuração, não um bug. Você configurou o mesmo bucket S3 no novo host antes de restaurar?

Restorei o backup, que também contém a configuração. Após fazer isso (e forçar HTTPS), não estou recebendo mais imagens do bucket S3.

Agora removi completamente a configuração do S3.

Isso não seria uma substituição total da configuração?

Exceto a configuração do S3, caso ela tenha sido configurada anteriormente usando variáveis de ambiente no app.yml

Existe uma configuração oculta que faz exatamente isso. O Cdck a ativa para clientes que planejam migrar sua hospedagem.

A configuração do S3 é melhor feita por meio de variáveis de ambiente, conforme descrito em Usando Armazenamento de Objetos para Uploads (S3 e Clones).

Após a restauração, configurei as configurações em: s3 upload bucket e s3 cdn url.
Não tenho acesso ao app.yml (do servidor antigo).

Ah, legal! :grinning: Onde?
A única opção adequada que encontrei na seção backup foi:
grafik
(que estava marcada)

Não tenho certeza se está claro: não quero o S3 por enquanto. E precisei obter os ativos de lá. Ninguém sabe quanto tempo esse servidor vai ficar. :sweat_smile:

Se você não tiver acesso ao servidor via SSH, não poderá alterar a configuração oculta.

Tudo bem. E o que deve ser feito agora no meu caso?
O que pode causar essa prévia de imagem quebrada?

Se não for tarde demais (ou seja, se houver atividade no fórum que você não deseja perder) e você tiver as credenciais do S3, provavelmente eu colocaria essas credenciais no app.yml e executaria novamente a restauração. A partir daí, você provavelmente poderia configurar a opção oculta, fazer um backup e restaurá-lo em um servidor sem S3.

Mas acho que não é esse o caso. E não está claro quais podem ser os problemas, já que até você não se lembra exatamente do que fez e quando.

Se houver dados faltando (e você tiver as credenciais do S3), talvez eu tente usar alguma ferramenta do S3 para baixar todos os uploads e depois fazer alterações no banco de dados para apontá-los para eles. Mas não sou suficientemente bom nisso para explicar aqui como fazer.

É, infelizmente não tenho as credenciais do S3 :frowning:

Consigo reproduzir os passos:

  1. Instalei um novo fórum Discourse com discourse_docker atrás do Traefik
  2. Fiz um backup do fórum antigo (incluindo alguns assets antigos)
  3. Restaurei o backup no novo fórum
  4. Forcei o HTTPS
  5. Extraí as URLs dos assets do dump.sql (do backup)
  • egrep -o 'discuss-openhdfpv.eu-central-1.linodeobjects.com\\/original\\/1X\\/[0-9a-z_]{0,}\\.[0-9a-zA-Z]{0,}' ./dump.sql \u003e\u003e original.txt
  • egrep -o 'discuss-openhdfpv.eu-central-1.linodeobjects.com\\/optimized\\/1X\\/[0-9a-z_]{0,}\\.[0-9a-zA-Z]{0,}' ./dump.sql \u003e\u003e optimized.txt
  1. Baixei os assets: cat optimized.txt | parallel --gnu "wget -nc -P ./optimized/1X/ {}" (o mesmo para original)
  2. Removi as configurações do S3
  3. rake posts:rebake

Consigo fazer manipulações SQL no banco de dados, quando sei o que procurar.