Сбой сборки: не удалось загрузить базу геолокации MaxMind

Привет!
Я установил Discourse на свежую машину DigitalOcean, следуя этой инструкции, два дня назад, и всё прошло хорошо.
Вчера я попытался установить приложение ещё раз на новую машину DigitalOcean (Ubuntu 18.04, 1 ГБ). VPS-серверы идентичны, но на этот раз установка не удалась.

Я запустил ./discourse-setup, ответил на вопросы и стал ждать. Мой терминал завис на строке #<Thread:0x00005621595f3360@/var/www/discourse/lib/tasks/assets.rake:215 run> terminated with exception (report_on_exception is true):. Единственный способ освободить терминал — закрыть SSH-соединение и подключиться заново.

У меня есть только базовые знания о Linux.
Обновление системы через apt-get ничего не изменило.
Я выяснил, что установщик зависает на задаче assets:precompile. Исключение возникает в /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).

Установка выводит бинарные данные в консоль, из-за чего происходит зависание. При более глубоком анализе я понял, что возникает ошибка 403, но я не могу найти целевой URL.

Есть ли у кого-нибудь советы?

По какому тарифному плану вы работали с точки зрения RAM/CPU?

  • 1 ГБ ОЗУ
  • 1 общий vCPU 2,3 ГГц
  • 25 ГБ SSD

Можешь выложить полный backtrace здесь? Также, есть ли у тебя какие-либо кастомные плагины?

Я запустил setup в screen и записал процесс. Затем открыл лог с помощью xdd. Я заменил два фрагмента бинарных данных на <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)>'

Установщик выполнил затем несколько задач без проблем. В конце процесса появились сообщения:

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.

Команда ./discourse-doctor не помогла. Doctor определил, что приложение не работает, попытался пересобрать его, но также завис.
Я не устанавливал никаких плагинов, так как никогда ранее не запускал это приложение на этой машине :frowning:

Ваш IP-адрес заблокирован при загрузке базы данных MaxMind.

Отредактируйте файл app.yml и добавьте под ключом env параметр DISCOURSE_REFRESH_MAXMIND_DB_DURING_PRECOMPILE_DAYS: 365, а затем попробуйте выполнить пересборку.

Отлично! :boom::fire::tada:
Огромное спасибо! Нужно ли мне оставить эту строку в app.yml или удалить её после первого успешного вызова?

Оно снова выйдет из строя, как только вы его удалите, потому что ваш сервер не сможет загрузить более новую базу данных.

Установка значения 365 фактически означает, что обновление будет получено при выпуске нового базового образа, что происходит дважды в год.

Здесь определённо должно быть более понятное сообщение об ошибке, текущее совершенно непонятно.