ERRO: Você está executando uma versão antiga da imagem do Discourse

Olá, este é o meu primeiro tópico! Sou Nelly Eggsy e estou construindo um site usando Ghost e Discourse.

Costumo apenas observar os fóruns e ler tópicos nas sombras. Se eu estiver travada, procuro nos fóruns por uma resposta e isso geralmente funciona. No entanto, estou travada agora e preciso de ajuda.

Após atualizar o Discourse pela interface de administração, apareceu a seguinte mensagem:

Você está executando uma versão antiga da imagem do Discourse.
As atualizações via interface web estão desativadas até que você execute a imagem mais recente.

Para isso, faça login no seu servidor usando SSH e execute:

    cd /var/discourse
    git pull
    ./launcher rebuild app

Segui o guia sobre como atualizar o Discourse e a imagem do Docker para a versão mais recente usando comandos de console. No entanto, não consegui concluir a atualização com sucesso devido a um erro.

Abaixo está a mensagem de erro que recebo ao executar o comando ./launcher rebuild app.

> FAILED
> --------------------
> Pups::ExecError: cd /var/www/discourse && su discourse -c 'bundle exec rake themes:update assets:precompile' failed with return #<Process::Status: pid 671 exit 1>
> Location of failure: /pups/lib/pups/exec_command.rb:112:in `spawn'
> exec failed with the params {"cd"=>"$home", "hook"=>"assets_precompile", "cmd"=>["su discourse -c 'bundle exec rake themes:update assets:precompile'"]}
> 9c3a1b4a72818216aaafa5de742f7d1a325aa61497ea49f5b4f1660c6e503fd0
> ** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.
> ./discourse-doctor may help diagnose the problem.

Meu droplet da Digital Ocean tem 2 GB de memória / 50 GB de disco + 50 GB / SFO2 - Discourse no Ubuntu 20.04.

Obrigada por dedicar seu tempo para ler meu post! Aguardo sua mensagem.

Bem-vindo, @nelly! Lamentamos que esteja tendo problemas! Isso é uma grande surpresa inesperada. EDIT: Isso é um pouco inesperado.

Você tem algum plugin ou tema personalizado?

Você poderia, por favor, rolar para cima e colar as mensagens de erro reais aqui?

Obrigado, @pfaffman! Agradeço sua resposta. Sim, tenho alguns temas e plugins personalizados.

Aqui estão os plugins que tenho:

      - git clone https://github.com/discourse/docker_manager.git
      - git clone https://github.com/paviliondev/discourse-custom-wizard.git
      - git clone https://github.com/discourse/discourse-spoiler-alert.git
      - git clone https://github.com/paviliondev/discourse-landing-pages.git
      - git clone https://github.com/discourse/discourse-patreon.git
      - git clone https://github.com/discourse/discourse-reactions.git

Não tenho certeza de como acessar/excluir os temas personalizados.

Rafael,

Aqui está o que vejo logo acima do erro “failed”:

rake aborted!
NameError: variável local ou método `name' não definido para main:Object
/var/www/discourse/lib/tasks/assets.rake:251:in `rescue in block (2 levels) in <main>'
/var/www/discourse/lib/tasks/assets.rake:240:in `block (2 levels) in <main>'

Causado por:
OpenURI::HTTPError: 401 Error: Chave de licença inválida
/var/www/discourse/lib/file_helper.rb:63:in `block in download'
/var/www/discourse/lib/final_destination.rb:422:in `block (3 levels) in safe_get'
/var/www/discourse/lib/final_destination.rb:421:in `catch'
/var/www/discourse/lib/final_destination.rb:421:in `block (2 levels) in safe_get'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rack-mini-profiler-2.3.2/lib/patches/net_patches.rb:19:in `block in request_with_mini_profiler'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rack-mini-profiler-2.3.2/lib/mini_profiler/profiling_methods.rb:46:in `step'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rack-mini-profiler-2.3.2/lib/patches/net_patches.rb:18:in `request_with_mini_profiler'
/var/www/discourse/lib/final_destination.rb:393:in `block in safe_get'
/var/www/discourse/lib/final_destination.rb:437:in `block in safe_session'
/var/www/discourse/lib/final_destination.rb:434:in `safe_session'
/var/www/discourse/lib/final_destination.rb:385:in `safe_get'
/var/www/discourse/lib/final_destination.rb:134:in `get'
/var/www/discourse/lib/file_helper.rb:55:in `download'
/var/www/discourse/lib/discourse_ip_info.rb:39:in `mmdb_download'
/var/www/discourse/lib/tasks/assets.rake:242:in `block (3 levels) in <main>'
/var/www/discourse/lib/tasks/assets.rake:241:in `each'
/var/www/discourse/lib/tasks/assets.rake:241:in `block (2 levels) in <main>'
Tarefas: TOP => assets:precompile
(Veja o rastro completo executando a tarefa com --trace)
I, [2021-05-02T20:17:42.823237 #1]  INFO -- : Baixando MaxMindDB...
Comprimindo Javascript e Gerando Mapas de Origem

Espero que isso ajude. Obrigado antecipadamente!

Acho que você vai precisar rolar um pouco mais para cima. Essa mensagem sobre a chave de licença é para o Maxmind, e não acho que seja esse o problema.

Jay,

Aqui está a saída. Eu a reduzi bastante para que o fórum me permita postá-la.

2021-05-03 00:32:20.635 UTC [63] postgres@postgres ERROR:  database "discourse" already exists
2021-05-03 00:32:20.635 UTC [63] postgres@postgres STATEMENT:  CREATE DATABASE discourse;
createdb: error: database creation failed: ERROR:  database "discourse" already exists
I, [2021-05-03T00:32:20.639714 #1]  INFO -- : 
I, [2021-05-03T00:32:20.640335 #1]  INFO -- : > su postgres -c 'psql discourse -c "create user discourse;"' || true
2021-05-03 00:32:20.760 UTC [74] postgres@discourse ERROR:  role "discourse" already exists
2021-05-03 00:32:20.760 UTC [74] postgres@discourse STATEMENT:  create user discourse;
ERROR:  role "discourse" already exists

I, [2021-05-03T00:32:21.634456 #1]  INFO -- : File > /etc/service/redis/run  chmod: +x  chown: 
I, [2021-05-03T00:32:21.640838 #1]  INFO -- : File > /etc/service/redis/log/run  chmod: +x  chown: 
I, [2021-05-03T00:32:21.646998 #1]  INFO -- : File > /etc/runit/3.d/10-redis  chmod: +x  chown: 
I, [2021-05-03T00:32:21.648588 #1]  INFO -- : Replacing daemonize yes with  in /etc/redis/redis.conf
I, [2021-05-03T00:32:21.650175 #1]  INFO -- : Replacing (?-mix:^pidfile.*$) with  in /etc/redis/redis.conf
I, [2021-05-03T00:32:21.651303 #1]  INFO -- : > install -d -m 0755 -o redis -g redis /shared/redis_data
I, [2021-05-03T00:32:21.656597 #1]  INFO -- : 
I, [2021-05-03T00:32:21.657900 #1]  INFO -- : Replacing (?-mix:^logfile.*$) with logfile "" in /etc/redis/redis.conf
I, [2021-05-03T00:32:21.659157 #1]  INFO -- : Replacing (?-mix:^bind .*$) with  in /etc/redis/redis.conf
I, [2021-05-03T00:32:21.660353 #1]  INFO -- : Replacing (?-mix:^dir .*$) with dir /shared/redis_data in /etc/redis/redis.conf
I, [2021-05-03T00:32:21.661652 #1]  INFO -- : Replacing (?-mix:^protected-mode yes) with protected-mode no in /etc/redis/redis.conf
I, [2021-05-03T00:32:21.662825 #1]  INFO -- : Replacing # io-threads 4 with io-threads $redis_io_threads in /etc/redis/redis.conf
I, [2021-05-03T00:32:21.663908 #1]  INFO -- : > echo redis installed
I, [2021-05-03T00:32:21.668192 #1]  INFO -- : redis installed
I, [2021-05-03T00:32:21.669144 #1]  INFO -- : > cat /etc/redis/redis.conf | grep logfile
I, [2021-05-03T00:32:21.679111 #1]  INFO -- : logfile ""
I, [2021-05-03T00:32:21.680077 #1]  INFO -- : > exec chpst -u redis -U redis /usr/bin/redis-server /etc/redis/redis.conf
I, [2021-05-03T00:32:21.683045 #1]  INFO -- : > sleep 10
167:C 03 May 2021 00:32:21.698 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
167:C 03 May 2021 00:32:21.698 # Redis version=6.2.1, bits=64, commit=00000000, modified=0, pid=167, just started
167:C 03 May 2021 00:32:21.699 # Configuration loaded
167:M 03 May 2021 00:32:21.700 * monotonic clock: POSIX clock_gettime
167:M 03 May 2021 00:32:21.702 * Running mode=standalone, port=6379.
167:M 03 May 2021 00:32:21.702 # Server initialized
167:M 03 May 2021 00:32:21.703 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
I, [2021-05-03T00:32:41.096190 #1]  INFO -- : > cd /var/www/discourse && bash -c "touch -a           /shared/log/rails/{production,production_errors,unicorn.stdout,unicorn.stderr,sidekiq}.log"
terser '/var/www/discourse/public/assets/_vendor-892d5a1f7dfb58e3f80950989c67133fd6062344153d17e67db8ba3d126c7a1a.js' -m -c -o '/var/www/discourse/public/assets/vendor-892d5a1f7dfb58e3f80950989c67133fd6062344153d17e67db8ba3d126c7a1a.js' --source-map "base='/var/www/discourse/public/assets',root='/assets',url='/assets/vendor-892d5a1f7dfb58e3f80950989c67133fd6062344153d17e67db8ba3d126c7a1a.js.map'"
****************************************************************************************************
#<Thread:0x000055a7feb17780 /var/www/discourse/lib/tasks/assets.rake:239 run> terminated with exception (report_on_exception is true):
/var/www/discourse/lib/tasks/assets.rake:251:in `rescue in block (2 levels) in <main>': undefined local variable or method `name' for main:Object (NameError)
	from /var/www/discourse/lib/tasks/assets.rake:240:in `block (2 levels) in <main>'
/var/www/discourse/lib/file_helper.rb:63:in `block in download': 401 Error: Invalid license key (OpenURI::HTTPError)

Espero que ajude!

Seu app.yml tem uma linha para a chave de licença do MaxMind? Tente removê-la e reconstruir.

Obrigado! Isso parece ter funcionado, de certa forma. Quando acesso a página inicial do fórum, ele me leva para a página “Parabéns, você instalou o Discourse!”. Aqui estão minhas perguntas:

Devo reinstalar o fórum? Meu conteúdo existente permanecerá ou tudo foi excluído?

Parece que tudo foi excluído, mas provavelmente ainda está lá. Foi sua primeira atualização após um tempo? Seu PostgreSQL foi atualizado? Minha melhor suposição é que algo deu errado na atualização do PostgreSQL e você precisa renomear postgres_old e começar novamente. Há alguns detalhes em Atualização do PostgreSQL 13.

Jay, eu (acabei de) me lembrar de que havia tentado mover os uploads e backups para o DigitalOcean Block Storage. Há momentos, tentei fazer isso novamente e recebi a mensagem de erro “Oops” ao visitar a página inicial:

Oops
O software que impulsiona este fórum de discussões encontrou um problema inesperado. Pedimos desculpas pelo inconveniente.

Informações detalhadas sobre o erro foram registradas e uma notificação automática foi gerada. Vamos analisar isso.

Nenhuma ação adicional é necessária. No entanto, se a condição de erro persistir, você pode fornecer detalhes adicionais, incluindo etapas para reproduzir o erro, postando um tópico de discussão na categoria de feedback do site.

Aqui estão os comandos que executei:

mv /var/discourse/shared/standalone/postgres_data /var/postgres_data_discourse
mv /var/discourse/shared /mnt/discourse-sfo2-01

No app.yml, adicionei isso:

## O contêiner Docker é stateless; todos os dados são armazenados em /shared
volumes:
  - volume:
      host: /mnt/discourse-sfo2-01/shared/standalone
      guest: /shared
  - volume:
      host: /mnt/discourse-sfo2-01/shared/standalone/log/var-log
      guest: /var/log
  - volume:
      host: /var/postgres_data_discourse
      guest: /shared/postgres_data

Todos os comandos foram executados com ./launcher rebuild app sem incidentes.

Peço desculpas a todos. Eu havia esquecido que fiz isso. Tenho certeza de que isso provavelmente está causando os problemas.

Isso funcionou para mim também após uma reconstrução falha — qual é o problema aqui? Obrigado!