Восстановление дискуссии после добавления недействительного репозитория GitHub

У меня возникла проблема с моим сайтом Discourse после того, как я по ошибке добавил недопустимый репозиторий GitHub в файл app.yml. При запуске команды ./launcher rebuild app процесс завершился неудачей, и теперь сайт не может быть пересобран. К сожалению, у меня есть резервные копии, но они не восстанавливаются в процессе восстановления. Ниже приведены детали проблемы, включая полный лог ошибок.

Выполненные шаги:

  1. Я попытался добавить DeepSeek LLM в свою установку Discourse, следуя инструкциям из этого поста.
  2. Я добавил URL репозитория https://github.com/deepseek-ai/DeepSeek-LLM в файл app.yml.
  3. Запустил ./launcher rebuild app, что привело к ошибке и сделало сайт неработоспособным.

Полный лог ошибок:

plaintext

CopyEdit

(Для получения полного трассировочного лога запустите задачу с флагом --trace)
I, [2025-01-21T02:32:16.599723 #1]  INFO -- : gem install multipart-post -v 2.4.0 -i /var/www/discourse/plugins/discourse-ai-topic-summary/gems/3.3.6 --no-document --ignore-dependencies --no-user-install
Успешно установлен multipart-post-2.4.0
Установлен 1 gem
gem install faraday-multipart -v 1.0.4 -i /var/www/discourse/plugins/discourse-ai-topic-summary/gems/3.3.6 --no-document --ignore-dependencies --no-user-install
Успешно установлен faraday-multipart-1.0.4
Установлен 1 gem
gem install event_stream_parser -v 1.0.0 -i /var/www/discourse/plugins/discourse-ai-topic-summary/gems/3.3.6 --no-document --ignore-dependencies --no-user-install
Успешно установлен event_stream_parser-1.0.0
Установлен 1 gem
gem install ruby-openai -v 7.0.0 -i /var/www/discourse/plugins/discourse-ai-topic-summary/gems/3.3.6 --no-document --ignore-dependencies --no-user-install
Успешно установлен ruby-openai-7.0.0
Установлен 1 gem
gem install tokenizers -v 0.4.4 -i /var/www/discourse/plugins/discourse-ai/gems/3.3.6 --no-document --ignore-dependencies --no-user-install
Успешно установлен tokenizers-0.4.4-x86_64-linux
Установлен 1 gem
gem install tiktoken_ruby -v 0.0.9 -i /var/www/discourse/plugins/discourse-ai/gems/3.3.6 --no-document --ignore-dependencies --no-user-install
Успешно установлен tiktoken_ruby-0.0.9-x86_64-linux
Установлен 1 gem
gem install ed25519 -v 1.2.4 -i /var/www/discourse/plugins/discourse-ai/gems/3.3.6 --no-document --ignore-dependencies --no-user-install
Сборка нативных расширений. Это может занять некоторое время...
Успешно установлен ed25519-1.2.4
Установлен 1 gem
... (еще логи установки gems) ...
I, [2025-01-21T02:32:16.600035 #1]  INFO -- : Завершение асинхронных процессов
I, [2025-01-21T02:32:16.600051 #1]  INFO -- : Отправка сигнала INT процессу HOME=/var/lib/postgresql USER=postgres exec chpst -u postgres:postgres:ssl-cert -U postgres:postgres:ssl-cert /usr/lib/postgresql/13/bin/postmaster -D /etc/postgresql/13/main pid: 39
I, [2025-01-21T02:32:16.600103 #1]  INFO -- : Отправка сигнала TERM процессу exec chpst -u redis -U redis /usr/bin/redis-server /etc/redis/redis.conf pid: 107
2025-01-21 02:32:16.600 UTC [39] LOG:  получен запрос на быстрое завершение работы
107:signal-handler (1737426736) Получен сигнал SIGTERM, планирование завершения работы...
2025-01-21 02:32:16.602 UTC [39] LOG:  прерывание всех активных транзакций
2025-01-21 02:32:16.604 UTC [39] LOG:  фоновый рабочий "запускатель логической репликации" (PID 54) завершился с кодом выхода 1
2025-01-21 02:32:16.605 UTC [49] LOG:  завершение работы
107:M 21 Jan 2025 02:32:16.612 # Пользователь запросил завершение работы...
107:M 21 Jan 2025 02:32:16.612 * Сохранение финального снимка RDB перед выходом.
2025-01-21 02:32:16.634 UTC [39] LOG:  система баз данных завершена
107:M 21 Jan 2025 02:32:16.667 * База данных сохранена на диск
107:M 21 Jan 2025 02:32:16.667 # Redis теперь готов к выходу, до свидания...
> FAILED
--------------------
Pups::ExecError: cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate' завершилась с ошибкой, код возврата #<Process::Status: pid 837 exit 1>
Место ошибки: /usr/local/lib/ruby/gems/3.3.0/gems/pups-1.2.1/lib/pups/exec_command.rb:132:in `spawn'
Ошибка выполнения с параметрами {"cd"=>"$home", "tag"=>"migrate", "hook"=>"db_migrate", "cmd"=>["su discourse -c 'bundle exec rake db:migrate'"]}
Загрузка не удалась с кодом выхода 1
** НЕ УДАЛОСЬ ЗАГРУЗИТЬСЯ ** пожалуйста, прокрутите вверх и поищите более ранние сообщения об ошибках, их может быть несколько.
./discourse-doctor может помочь диагностировать проблему.

Трудности:

  • Я не могу восстановить сайт из резервной копии.
  • Пересборка постоянно завершается неудачей, оставляя сайт неработоспособным.

Запрос помощи:

  1. Как мне подойти к решению этих проблем? Возможно, запуск rebuild app создал ошибочный плагин или что-то подобное?
  2. Существуют ли какие-либо ручные шаги для восстановления?
  3. Есть ли предложения по безопасной пересборке сайта из этого состояния?

Я зарегистрировался на размещенном экземпляре Discourse и загрузил резервную копию, но опция восстановления не отображается, хотя файл загрузился нормально.

Я очень благодарен за любые советы или рекомендации о том, как действовать. Пожалуйста, дайте знать, если потребуются дополнительные детали!

Если вы удалите плагин, пересборки всё равно будут завершаться с ошибкой?

Кроме того, этот репозиторий не является плагином. Это исходный код Deepseek. Я думаю, что Сэм имел в виду создание на его основе плагина?

А шаг ручной восстановления — ./launcher start app, если последний живой контейнер не уничтожен. После этого удалите этот репозиторий из app.yml и выполните пересборку.

Выше приведено сообщение об ошибке? Вам нужно включить также предыдущую часть, где показано, какая именно миграция не удаётся.

Я предполагаю, что у вас либо всё ещё есть неработающий плагин, либо ошибка форматирования в вашем YAML-файле, но с предоставленной вами информацией это невозможно точно определить.

Чтобы восстановить резервную копию, вам нужно написать на адрес team@discourse.org и попросить их выполнить восстановление.

Уберите это как можно скорее.

GitHub - deepseek-ai/DeepSeek-LLM: DeepSeek LLM: Let there be answers · GitHub не является плагином для Discourse, поэтому он никогда не должен появляться в файле app.yml.

Благодарю всех за обратную связь. Я не могу объяснить, как именно это было решено, но, похоже, всё работает. Первое, что я сделал, когда осознал свою ошибку — разместил репозиторий GitHub, не являющийся плагином, в файле app.yml, из-за чего Discourse упал, — это удалить эту строку и попытаться пересобрать систему, но без успеха. Я перезагружал сервер несколько раз, но это не помогло. После перезагрузки сайт снова начинал работать, но попытка пересобрать его через админку или SSH приводила к новому сбою. Затем внезапно — БАМ! — система успешно пересобралась через SSH, а позже обновилась и пересобралась через админ-панель после обновления плагинов. Теперь я обновил Ubuntu, и, похоже, всё в порядке. Проблема, кажется, решена, но до сих пор остаётся загадкой. :partying_face: