Quebrei minha instalação com uma atualização fracassada - como posso recuperar?

TLDR: Cliquei no botão de atualização no meu painel de administração do Discourse, e a atualização falhou. Decidi reiniciar tudo e tentar o processo de atualização novamente. Infelizmente, meu painel de administração do Discourse não carrega. Gostaria de fazer as coisas funcionarem novamente.

Informações de apoio: Isso está em uma VM DigitalOcean que serve um site WordPress. Eu a configurei anos atrás e esqueci muitos detalhes, mas de alguma forma o Nginx olha para a URL solicitada e decide se ativa o WP para o conteúdo principal ou o Discourse para as conversas. O lado do WP ainda funciona.

Dada a abordagem ingênua e casual sugerida na minha introdução, não será surpresa que eu não consiga identificar a natureza exata do erro de instalação que me colocou neste estado lamentável. Eu nem sei onde encontrar os arquivos de log que podem conter pistas sobre como colocar o processo de atualização de volta nos trilhos.

Qualquer dica seria muito bem-vinda. Não tenho experiência em “web admin lore”, mas me sinto confortável com a linha de comando em sistemas baseados em Debian. O software mencionado está rodando no Ubuntu 20.04.6 LTS, e tenho acesso SSH à plataforma relevante. Obrigado!

Olá, tente reconstruir o contêiner

1 curtida

Você pode tentar

cd /var/discourse
./launcher rebuild app

Isso pode resolver. Se não resolver, provavelmente será difícil adivinhar.

2 curtidas

Muito obrigado pelas suas respostas. Seguirei a sugestão do Jay e darei um retorno. (Mas pode levar várias horas antes que eu o faça. Primeiro, tenho que fazer pizza e alimentar meus convidados. :slight_smile:

1 curtida

Infelizmente, minha VM DigitalOcean parece ser muito pequena. Se eu digitar du -sh após um login recente, ele diz que meu disco atribuído /dev/vda1 tem cerca de 7 GiB livres. Depois que eu dou o comando launcher rebuild app, acontece um monte de download e descompactação e então o script aborta, dizendo que ele vê apenas 3,3G disponíveis e que se recusa a continuar a menos que haja 5G ou mais para usar.

Claro que fiz o que pude para localizar e excluir coisas extras, mas encontrar mais 1,7G para purgar será uma tarefa difícil. Existem dicas de especialistas para esta situação? (Ou na categoria de alvos enormes prontos para exclusão, ou no reino de pedir ao launcher para ser menos exigente.)

PS: Alternativamente, posso reconstruir o aplicativo em alguma máquina mais forte e depois apenas fazer o upload de um arquivo adequado para esta VM pequena e subdimensionada? Ou isso é magia negra excessivamente arcana?

Tente executar o comando ./launcher cleanup. Essa operação pode ajudar a limpar o espaço de armazenamento consumido pelo Docker.

Além disso, se você tiver certeza de que seguiu o guia de instalação oficial anteriormente, poderá executar ./launcher destroy app para remover o contêiner anterior quebrado. No entanto, é fundamental garantir que seu banco de dados e uploads estejam armazenados no sistema de arquivos do host, em vez de dentro do próprio contêiner.

De fato, você pode realizar a reconstrução em uma máquina separada e, posteriormente, transferir a imagem do Docker para sua VM. No entanto, você precisará executar manualmente o comando rake db:migrate em sua VM. Não tenho certeza se essa abordagem pode introduzir outros problemas.

1 curtida

Apenas migre para um novo VPS com mais espaço.

Leva cerca de 30 minutos, se tanto.

2 curtidas

Não tenho 100% de certeza, mas gostaria de tentar. Como posso realizar o passo imperativo de preservar meu banco de dados e uploads? Seria suficiente copiar os arquivos no diretório /var/discourse/shared/standalone para um local seguro antes de fazer qualquer coisa séria? (Existe um guia para o tipo de projeto de restauração prático que isso iniciaria?)

Acho que a resposta pragmática do @Robert seria a melhor escolha para a maioria das pessoas em uma situação semelhante. Estou tomando um rumo diferente porque meu contexto é único de várias maneiras. Dentre elas, a maior é: minha instalação é um projeto de hobby em pequena escala onde perder tudo seria decepcionante, mas não devastador.

Obrigado novamente.

Se os arquivos estiverem no diretório shared/standalone, você está seguro.

Se você tem WordPress e Discourse, provavelmente precisa fazer o upgrade para uma VM de 2gb/50gb. Se você excluiu todos os backups e fez uma limpeza do launcher, então você provavelmente tem algum espaço livre (ah, você também pode limpar o cache do apt se pesquisar no Google).

1 curtida

Pode ou não ser o mesmo problema que acabamos de encontrar: Estávamos usando a API da MaxMind para fazer a conversão de IP para geolocalização. A versão antiga exigia a chave da API da MaxMind no arquivo app.yml. Uma alteração recente (não documentada?) exige a chave da API da MaxMind E o nome de usuário no app.yml. A falta do nome de usuário faz com que o fórum falhe na compilação.

2 curtidas

Obrigado, @Frully, mas acho que este é um problema diferente. Aqui está a mensagem de erro que me impede:

Status: Downloaded newer image for discourse/base:2.0.20240602-0023
docker.io/discourse/base:2.0.20240602-0023
Você tem menos de 5 GB de espaço livre no disco onde /var/lib/docker está localizado. Você precisará de mais espaço para continuar
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        25G   21G  3.5G  86% /

Continuarei minha aventura de solução de problemas esta noite depois do trabalho.

Amigos, vou mudar de tática e seguir a ideia do @merefield de migrar toda a minha configuração para um VPS maior. Descobrir como transferir meus ativos da configuração quebrada para a nova que funciona será um desafio nesta atividade, com certeza, mas vou tentar alguns métodos de bom senso e iniciar um novo tópico se nenhum deles funcionar. Com agradecimentos a todos que contribuíram, acho seguro considerar este tópico encerrado.

4 curtidas

Epílogo: O processo de migração para um novo servidor me ensinou algo útil sobre a execução de comandos shell diretamente dentro do contêiner do Discourse, agora descrito em outro tópico. Há um pouco mais de informação sobre como economizar espaço em disco nesse outro tópico também.

2 curtidas