Falha na compilação, impossível baixar o banco de dados de geolocalização MaxMind

Olá!
Instalei o Discourse em uma máquina DigitalOcean nova usando estas instruções há dois dias e tudo funcionou bem.
Ontem, tentei instalar o aplicativo mais uma vez, em uma nova máquina DigitalOcean (Ubuntu 18.03, 1 GB). As VPSs são idênticas, mas desta vez não funcionou.

Executei ./discourse-setup, respondi às perguntas e esperei. Meu terminal travou na linha #<Thread:0x00005621595f3360@/var/www/discourse/lib/tasks/assets.rake:215 run> terminated with exception (report_on_exception is true):. A única maneira de liberar o terminal foi fechar a conexão SSH e reconectar.

Tenho apenas conhecimento básico sobre Linux.
Atualizar o sistema com apt-get não fez diferença.
Percebi que o instalador fica pendente na tarefa assets:precompile. A exceção foi gerada em /var/www/discourse/lib/tasks/assets.rake:227:in rescue in block (2 levels) in <top (required)>': undefined local variable or method 'name' for main:Object (NameError).
A configuração escreve dados binários no console, por isso o travamento. Investigando mais a fundo, percebi que ocorre um erro 403, mas não consegui encontrar a URL de destino.

Alguém tem alguma dica?

Em qual plano você estava, em termos de RAM/CPU?

  • 1 GB de RAM
  • 1 vCPU compartilhada de 2,3 GHz
  • 25 GB de SSD ROM

Você pode colocar o backtrace completo aqui? Além disso, você tem algum plugin personalizado?

Executei o setup em um terminal screen e gravei a sessão. Em seguida, abri o log com xdd. Substituí dois trechos de dados binários por <BINARY_DATA>

#<Thread:0x000055c07c7e8cf8@/var/www/discourse/lib/tasks/assets.rake:215 run> terminated with exception (report_on_exceptionis true):
/var/www/discourse/lib/tasks/assets.rake:227:in `rescue in block (2 levels) in <top (required)>':undefined local variable or method`name' for main:Object (NameError)
from /var/www/discourse/lib/tasks/assets.rake:216:in `block (2 levels) in <top (required)>' /var/www/discourse/lib/file_helper.rb:55:in `block in download':
403 Error:<BINARY_DATA> (OpenURI::HTTPError) <BINARY_DATA>
from /var/www/discourse/lib/final_destination.rb:400:in `block (3 levels) in safe_get'
from /var/www/discourse/lib/final_destination.rb:399:in `catch'
from /var/www/discourse/lib/final_destination.rb:399:in `block (2 levels) in safe_get'
from /usr/local/lib/ruby/2.6.0/net/http.rb:1518:in `block in transport_request'
from /usr/local/lib/ruby/2.6.0/net/http/response.rb:165:in `reading_body'
from /usr/local/lib/ruby/2.6.0/net/http.rb:1517:in `transport_request'
from /usr/local/lib/ruby/2.6.0/net/http.rb:1479:in `request'
from /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rack-mini-profiler-1.0.2/lib/patches/net_patches.rb:9:in `block in request_with_mini_profiler'
from /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rack-mini-profiler-1.0.2/lib/mini_profiler/profiling_methods.rb:39:in `step'
from /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rack-mini-profiler-1.0.2/lib/patches/net_patches.rb:8:in `request_with_mini_profiler'
from /var/www/discourse/lib/final_destination.rb:371:in `block in safe_get'
from /var/www/discourse/lib/final_destination.rb:415:in `block in safe_session'
from /usr/local/lib/ruby/2.6.0/net/http.rb:920:in `start'
from /usr/local/lib/ruby/2.6.0/net/http.rb:605:in `start'
from /var/www/discourse/lib/final_destination.rb:412:in `safe_session'
from /var/www/discourse/lib/final_destination.rb:363:in `safe_get'
from /var/www/discourse/lib/final_destination.rb:129:in `get'
from /var/www/discourse/lib/file_helper.rb:47:in `download'
from /var/www/discourse/lib/discourse_ip_info.rb:30:in `mmdb_download'
from /var/www/discourse/lib/tasks/assets.rake:218:in `block (3 levels) in <top (required)>'
from /var/www/discourse/lib/tasks/assets.rake:217:in `each'
from /var/www/discourse/lib/tasks/assets.rake:217:in `block (2 levels) in <top (required)>'

O instalador executou algumas tarefas sem problemas. No final do processo, apareceu:

FAILED--------------------
Pups::ExecError: cd /var/www/discourse && su discourse -c 'bundle exec rake assets:precompile'
failed with return #<Process::Status: pid 384 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 assets:precompile'"]}
f534324ceedf6b1a8a5cc89f38e1c12c2418fb69c71f93f21c0dd2f5ef51483d
** 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.

O comando ./discourse-doctor não ajudou. O Doctor percebeu que o aplicativo não está rodando, tentou reconstruir e também travou.
Não instalei nenhum plugin, pois nunca executei este aplicativo nesta máquina :frowning:

Sua IP está bloqueado para baixar o banco de dados MaxMind.

Edite o arquivo app.yml e adicione, sob a chave de ambiente DISCOURSE_REFRESH_MAXMIND_DB_DURING_PRECOMPILE_DAYS: 365, e então tente uma reconstrução.

Isso funciona! :boom::fire::tada:
Muito, muito obrigado! Preciso deixar essa linha no app.yml ou devo removê-la após a primeira chamada bem-sucedida?

Falhará novamente assim que você o remover, pois seu servidor não conseguirá baixar um banco de dados mais recente.

Ter isso definido como 365 significa, efetivamente, que você receberá a atualização quando lançarmos uma nova imagem base, o que ocorre duas vezes por ano.

Com certeza deveríamos ter um erro melhor aqui; esse erro é completamente incompreensível.