Файл конфигурации containers/app.yml уже существует! Остановка существующего контейнера через 5 секунд или Control-C для отмены

При подключении по SSH к виртуальной машине я сразу получил сообщение:

Файл конфигурации containers/app.yml уже существует!
Старый файл сохранён как app.yml.2024-12-25-193919.bak
Остановка существующего контейнера через 5 секунд или нажмите Control-C для отмены.

Не совсем понятно, что именно оно пытается сделать?

Жалею, что установил Right Sidebar Blocks, хотя не уверен, что эта проблема с ним связана. https://meta.discourse.org/t/issues-when-i-enable-component-maybe-right-sidebar-blocks/343964/13

Я выполнил пересборку приложения, надеясь, что это поможет, но теперь при каждом входе в виртуальную машину я получаю:

Файл конфигурации containers/app.yml уже существует!
Старый файл сохранён как app.yml.2024-12-25-xxxxxx.bak
Остановка существующего контейнера через 5 секунд или нажмите Control-C для отмены.

Если я не прерву процесс, кажется, что система хочет выполнить полную первоначальную настройку? У меня был недавний снимок, и я восстановил его.

Я выполнил команду: ./launcher rebuild app
и она успешно завершилась.
Я могу пинговать внешние ресурсы, сайт работает и доступен…

но при входе в виртуальную машину я сразу получаю эту проблему.

Если я убиваю процесс в течение 5 секунд, всё кажется в порядке, сайт работает нормально. Так что же вызывает эту проблему и как отключить это при входе в виртуальную машину?

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

Очень странно!

Словно у вас запущен какой-то пользовательский bash-скрипт входа.

Как вы установили Discourse? Строго через стандартную установку?

Нет, дело точно не в компоненте темы.

Это сообщение появляется, если вы запускаете discourse-setup после первого выполнения. Вы можете запустить его снова, чтобы изменить настройки. Обычно вам достаточно выполнить команду

./launcher rebuild app

который запускается сразу же автоматически при входе в систему?

Тогда, возможно, именно это делает установка Discourse в один клик от DigitalOcean.

Именно поэтому рекомендуется стандартная установка, так как она этого не делает. Думаю, в их документации указано, что вы можете удалить или отредактировать .bashrc или аналогичный файл.

Вы можете просто нажать Ctrl+C при входе в систему, хотя у вас всё равно останется множество файлов, которые не нанесут вреда, но будут довольно раздражать.

Да, это звучит более правдоподобно.

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

Я не запускал discourse-setup (хотя однажды на 5 секунд запустился скрипт установки, но я его прервал и восстановил систему из снимка). Я запускал ./launcher rebuild app.

Да: «запускается ли это сразу автоматически при входе?» Как только я вхожу в систему и выполняю sudo su для перехода к root, оно запускается автоматически.

Я не использую Digital Ocean.

Я только что посмотрел файл .bashrc для root; последняя строка:

/opt/hostinger/scripts/discourse_conf.sh

Давайте посмотрим, что он делает. Если он появился не всегда, отмечу, что я его не добавлял.

#!/bin/bash
clear
cd /var/discourse

if ./discourse-setup; then
  clear
  echo "Discourse теперь установлен. Войдите в свою учетную запись администратора в браузере, чтобы продолжить"
  echo "настройку Discourse."

  cp -f /etc/skel/.bashrc /root/.bashrc
else
  echo ""
  echo "-----------------------------------------------------------------------------"
  echo "Скрипт установки не удался с предоставленными данными Discourse."
  echo "Он будет запущен повторно. Пожалуйста, устраните указанные выше проблемы."
  echo "-----------------------------------------------------------------------------"
  echo "Когда будете готовы, нажмите Enter"
  echo "Чтобы отменить установку, нажмите Ctrl+C, и этот скрипт будет запущен повторно при следующем входе"
  read wait
fi

Виртуальную машину размещает Hostinger. Давайте удалим эту строку и попробуем снова войти в систему и выполнить su. Не знаю, как эта строка попала в файл .bashrc, я точно не добавлял её вручную.

Да, это исправляет проблему. Мне и в голову не приходило, что файл rc может быть изменён таким образом, поэтому я даже не подумал его проверить. Спасибо всем за помощь, это очень ценно!

После закомментирования этой строки в bashrc:

cd /var/discourse
if ./discourse-setup; then  echo 'found it'; else  echo 'not found'; fi

возвращает: not found.

Для меня странно, что оно вообще когда-либо находилось.

Однако, если я сейчас (спустя около 15 минут) выполню ls -al ./discourse-setup, получу: -rwxr-xr-x 1 root root 28715 Dec 23 23:24 ./discourse-setup.

Если я сейчас выполню if ./discourse-setup; then echo 'found it'; else echo 'not found'; fi, запустится та же проблема, с которой я столкнулся: ...Остановка существующего контейнера через 5 секунд или нажмите Control-C для отмены.

Я убрал комментарий, снова вошёл в систему, выполнил sudo su, и система захотела запустить процесс установки, но скрипт discourse-setup не был создан. Так как же создаётся скрипт discourse-setup?

Как создаётся скрипт discourse-setup, и могу ли я удалить его вручную? Если я переименую его, то при входе в систему он не создаётся заново, независимо от наличия строки /opt/hostinger/scripts/discourse_conf.sh в .bashrc root.

Отмечу, что я никогда не видел:

  echo "Скрипт установки не удался с предоставленными данными Discourse."
  echo "Он будет запущен повторно. Пожалуйста, устраните указанные выше проблемы."

Экран очищался, и единственные сообщения, которые я видел, были:

Файл конфигурации containers/app.yml уже существует!
Сохранение старого файла как app.yml.2024-12-25-193919.bak
Остановка существующего контейнера через 5 секунд или нажмите Control-C для отмены.
 diff ./.bashrc /etc/skel/.bashrc
118d117
< # /opt/hostinger/scripts/discourse_conf.sh

Не знаю, как эта строка попала в .bashrc, и текст, который я вижу в проблеме, не соответствует описанию в файле /opt/hostinger/scripts/discourse_conf.sh, но проблема, похоже, исчезла.

Также отмечу, что теперь, когда я выполняю ./launcher rebuild app или перезагружаю виртуальную машину, если попытаться получить доступ к веб-сайту слишком быстро, возникает ошибка 502. Сайт становится доступным примерно через минуту. Раньше я этого не помню, но возможно, я никогда не пытался получить доступ к сайту сразу после перезагрузки. Есть какие-то мысли по этому поводу?

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

Насколько мне известно, стандартная установка их не изменяет, но вот мы и здесь.

Вы что-то сделали, что привело к его установке.

О, ты расширил свой пост, нарушив хронологию

Отлично!

Извините, это было около 2:00 ночи.

Спасибо всем за помощь. Некоторые из проблем, которые я указал выше, всё ещё не до конца ясны, но, похоже, проблема исчезла после удаления последней строки в файле .bashrc.

Отвечаю сам на свой вопрос: Как создаётся скрипт discourse-setup и могу ли я удалить его вручную?

Скрипт discourse-setup должен находиться в /var/discourse. Он поставляется в составе базового кода.

502 в течение минуты — я с этим смирюсь, если не услышу обратного.

Но вы этого не сделали. Вы использовали какой-то образ Hostinger, который автоматически запускает настройку Discourse при входе в систему.

Вам нужно удалить строку, которая запускает скрипт Hostinger, из файла .bashrc.

Вам не нужно удалять discourse-setup, но вы также не хотите его запускать.

Да, именно так я и поступил в отношении .bashrc и discourse-setup, но я не помню, чтобы запускал установку автоматически, и не понимаю, почему она вдруг снова запустилась спустя много месяцев.

Кажется, я следовал инструкциям на GitHub, но могу ошибаться.

В любом случае, я удалил эту строку из файла .bashrc.

Спасибо.