Acabei de tentar atualizar minha instalação do Discourse para a versão mais recente de beta (2.4.0 beta 11) via atualização web e agora ela está inacessível (tente você mesmo, retorna erros HTTP 500).
Contexto
Minha versão instalada ainda era a 2.4.0 beta 6; eu estava tentando atualizar para a 2.4.0 beta 11.
Acho que fiz uma instalação bastante padrão. Não me lembro se tinha plugins personalizados (e não consigo verificar agora), mas no máximo 1 ou 2. Mantive a maioria das configurações padrão do Discourse.
O que fiz
Cliquei no link de atualização de um clique no e-mail de notificação de atualização que recebi, o que me levou para /admin/upgrade.
De acordo com o atualizador web, eu precisava primeiro fazer uma atualização do gerenciador Docker antes de poder atualizar a versão real do Discourse, então selecionei essa opção. Algumas coisas foram executadas e, após cerca de metade do progresso, uma mensagem apareceu acima da tela de saída do log da web informando que algo deu errado durante a atualização e que eu deveria verificar os logs. Rolei pelos logs, mas nada chamou minha atenção diretamente. Infelizmente, não salvei o log e simplesmente recarreguei a página, esperando poder tentar a instalação novamente, assumindo que o erro tivesse causado o retorno automático da atualização.
Curiosamente, a página admin/upgrade/ então me informou que o docker_manager estava atualizado e não precisava mais ser atualizado, então eu (provavelmente por engano) assumi que a atualização realmente funcionou e que a mensagem de erro era um bug. Também verifiquei se meu fórum ainda estava em execução e ele estava, sem parecer ter problemas.
Fui então apresentado à opção de atualizar a instalação do Discourse em si (que anteriormente estava desabilitada), então fiz isso. Novamente, coisas foram registradas na saída do log, às quais não prestei muita atenção, e após cerca de metade da barra de progresso ser preenchida, uma mensagem de erro semelhante foi exibida acima da saída do log sobre algo ter dado errado.
Pensei em fazer o mesmo que antes: recarregar a página (novamente, infelizmente não salvei o log). E como esperado, o Discourse agora estava listado como “atualizado”.
É isso que vejo atualmente em admin/upgrade/:
Mas o fórum real não está mais funcionando e apenas retorna erros 500.
O que ainda funciona
/admin/upgrade/ainda funciona e exibe que o Discourse está atualizado.- Também posso clicar na aba “Processos” e obter uma lista de processos em execução.
Mas até a aba Backups já retorna um erro 500, assim como /admin. Não encontrei nenhuma parte do fórum que funcione exceto as duas abas em /admin/upgrade/.
Como recuperar?
Não tenho uma boa ideia do que deu errado e também não sei por onde começar. Nem mesmo sei como acessar os logs para descobrir qual foi o erro sem a interface web. A instalação do Discourse está hospedada na Digital Ocean e posso fazer SSH na máquina e provavelmente no contêiner, mas não sei onde procurar os logs.
Um apontamento sobre onde procurar os logs seria muito apreciado.
Por enquanto, minha melhor ideia é voltar para um backup e perder qualquer coisa publicada após o último backup (felizmente não há muito tráfego, então perder um dia de conteúdo é aceitável).
Meu plano atual e o que me falta
Configurei a Digital Ocean para fazer backups semanais do Droplet e acredito que minha instalação do Discourse estava configurada para backups diários. Nunca configurei o S3, então eles devem ainda estar salvos localmente. O backup do Droplet da Digital Ocean tem 5 dias de idade, no entanto, preferiria não perder o conteúdo dos últimos dias.
Meu plano básico é basicamente voltar via backups para um estado conhecido como funcional agora, fazendo o seguinte:
- Baixar o backup do Discourse de hoje/ontem.
- Reverter todo o Droplet via Digital Ocean para o último backup de 5 dias atrás, para que eu tenha uma instalação funcional do Discourse novamente.
- Importar o backup baixado para recuperar o conteúdo (menos o que aconteceu após o último backup do Discourse).
Posso fazer a reversão via DO (passo 2) e vou descobrir como importar o backup existente quando chegar lá (passo 3), mas não sei como acessar o backup sem a interface web e com /admin/backups/ retornando erros HTTP 500.
Onde tenho que procurar para encontrar o backup via SSH/o que preciso para poder restaurá-lo após reverter para o backup antigo do Droplet via DO?
Pesquisando nos fóruns, encontrei apenas tópicos sobre hospedar backups no S3, mas não onde eles estão quando armazenados localmente.
