Не удалось восстановить Discourse

Каждый раз, когда я пытаюсь выполнить ./launcher rebuild app, возникает ошибка.

root@amsaal:~# cd /var/discourse/
root@amsaal:/var/discourse# ./launcher rebuild app
Обнаружена архитектура x86_64.
fatal: Нет такой ссылки: HEAD
fatal: Нет такой ссылки: HEAD
Остановка старого контейнера

  • /usr/bin/docker stop -t 600 app
    app
    2.0.20241203-0251: Получение образа из discourse/base
    Хэш-сумма: sha256:d5d4e6d361d56745e37f2609db58a6970cc9b3fcd26d0b2dcba23d0cb581f067
    Статус: Образ discourse/base:2.0.20241203-0251 уже актуален
    docker.io/discourse/base:2.0.20241203-0251
    /usr/local/lib/ruby/gems/3.3.0/gems/pups-1.2.1/lib/pups.rb
    /usr/local/bin/pups --stdin
    docker: Неверный формат ссылки: имя репозитория (library/#) должно быть в нижнем регистре.
    См. ‘docker run --help’.
    cat: cids/app_bootstrap.cid: Нет такого файла или каталога
    Инициализация завершена с кодом выхода 125
    ** ОШИБКА ИНИЦИАЛИЗАЦИИ ** Пожалуйста, прокрутите вверх и найдите сообщения об ошибках, возникших ранее; их может быть несколько.
    Утилита ./discourse-doctor может помочь в диагностике проблемы.
    Имя контейнера не может быть пустым
    root@amsaal:/var/discourse#

Проверили ли вы статус репозитория лаунчера?

git status

root@amsaal:/var/discourse# git status

Коммитов ещё нет

Неотслеживаемые файлы:
(используйте “git add <файл>…”, чтобы включить их в будущий коммит)
.github/
.gitignore
LICENSE
README.md
discourse-doctor
discourse-setup
image/
launcher
rebuild.log
samples/
scripts/
templates/
tests/

Ничего не добавлено в коммит, но есть неотслеживаемые файлы (используйте “git add” для отслеживания)
root@amsaal:/var/discourse#

Вы должны были увидеть что-то подобное:

# git status
On branch main
Your branch is up to date with 'origin/main'.

nothing to commit, working tree clean

Похоже, что ваша директория /var/discourse каким-то образом повреждена — она больше не связана с репозиторием. Не удаляли ли вы случайно, не потеряли или не переименовали ли подпапку .git?

Я на самом деле ничего не трогал. Как это исправить?

Извините, я не знаю. У вас есть подкаталог .git? Что в нём находится?

В моём случае файл конфигурации выглядит так:

# cat .git/config 
[core]
	repositoryformatversion = 0
	filemode = true
	bare = false
	logallrefupdates = true
[remote "origin"]
	url = https://github.com/discourse/discourse_docker.git
	fetch = +refs/heads/*:refs/remotes/origin/*
[branch "main"]
	remote = origin
	merge = refs/heads/main

Но это приведено для справки. Я не думаю, что решение заключается в редактировании файла конфигурации!

у меня тот же результат

root@amsaal:/var/discourse# cat .git/config
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
[remote “origin”]
url = GitHub - discourse/discourse_docker: A Docker image for Discourse · GitHub
fetch = +refs/heads/:refs/remotes/origin/
[branch “main”]
remote = origin
merge = refs/heads/main

А вот статус git

root@amsaal:/var/discourse# git status
На ветке main
Ваша ветка основана на ‘origin/main’, но удалённый источник отсутствует.
(используйте “git branch --unset-upstream”, чтобы исправить)

Изменения, не добавленные в индекс:
(используйте “git add <файл>…”, чтобы обновить то, что будет закоммичено)
(используйте “git restore <файл>…”, чтобы отменить изменения в рабочей директории)
изменён: .github/workflows/build.yml
изменён: LICENSE
изменён: README.md
изменён: templates/postgres.13.template.yml
изменён: templates/postgres.15.template.yml
изменён: templates/postgres.template.yml
изменён: templates/web.ssl.template.yml
изменён: templates/web.template.yml

Неотслеживаемые файлы:
(используйте “git add <файл>…”, чтобы включить их в коммит)
rebuild.log

Изменений, добавленных в коммит, нет (используйте “git add” и/или “git commit -a”)

Похоже, вы что-то изменили — ваш последний git status показывает совершенно другие результаты по сравнению с предыдущим отчётом. Это загадочно!

Так, переустановка Discourse может решить проблему. Можете ли вы посоветовать, как это сделать через SSH?

Для полной переустановки вам понадобится полная резервная копия (включая файл app.yml) и свежая ОС на вашем экземпляре.

Инструкции здесь: INSTALL-cloud

Возможно, лучше попробовать установку на новом экземпляре. Вам нужно будет добавить новый IP-адрес во временный поддомен в вашей DNS. Или, если вас устраивает простой, просто обновите DNS, указав новый IP-адрес.

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