Здравствуйте,
Я запускаю стандартную установку Discourse с самостоятельным размещением на Ubuntu, используя официальный набор discourse_docker.
Окружение
- Ubuntu Server
- Docker
- Официальный
discourse_docker - Установка в одном контейнере (
app.yml) - Пересборка выполняется с помощью:
cd /var/discourse
./launcher rebuild app
Проблема
Процесс пересборки завершается неудачей на этапе начальной загрузки (bootstrap), когда Discourse пытается обновить исходный код приложения из GitHub.
Ошибка возникает при выполнении:
git fetch --tags --prune-tags --prune --force origin
и сопровождается сообщением:
fatal: unable to access 'https://github.com/discourse/discourse.git/': SSL connection timeout
после чего следует:
FAILED
bootstrap failed with exit code 128
Важные выводы
GitHub доступен через HTTPS
На хосте:
curl -I https://github.com
работает корректно.
Также:
curl -I https://raw.githubusercontent.com
работает корректно.
Git по HTTPS ненадежен в моей среде
Внутри окружения Discourse:
git ls-remote https://github.com/discourse/discourse.git
завершается ошибкой:
SSL connection timeout
Согласно моим исследованиям, это, вероятно, вызвано проблемами с подключением моего интернет-провайдера к GitHub по протоколу HTTPS. В данный момент я не пытаюсь решить саму проблему с сетью. Вместо этого я ищу способ выполнять пересборку Discourse через SSH, так как подключение к GitHub по SSH в моей среде работает корректно.
Аутентификация через SSH на GitHub работает
Я сгенерировал новый SSH-ключ, добавил его в GitHub и проверил аутентификацию:
ssh -T git@github.com
возвращает:
Hi <username>! You've successfully authenticated, but GitHub does not provide shell access.
Также:
git ls-remote git@github.com:discourse/discourse.git
успешно выполняется на хосте.
URL-адреса репозитория
На хосте я изменил /var/discourse на использование SSH:
origin git@github.com:discourse/discourse_docker.git
и операции Git работают.
Однако внутри контейнера приложения Discourse:
cd /var/www/discourse
git remote -v
показывает:
origin https://github.com/discourse/discourse.git
Таким образом, во время начальной загрузки Discourse все еще пытается использовать HTTPS.
Чего я хочу добиться
Моя главная цель — обеспечить надежную пересборку Discourse в среде, где соединения с GitHub по HTTPS нестабильны или часто приводят к тайм-аутам.
Мне хотелось бы узнать:
- Существует ли официально поддерживаемый способ заставить Discourse использовать GitHub по SSH вместо HTTPS при начальной загрузке и пересборке?
- Если нет, какой рекомендуемый подход для сред, где Git по HTTPS ненадежен, но SSH работает корректно?
- Существует ли поддерживаемый метод внедрения SSH-учетных данных на этапе начальной загрузки/сборки?
- Удавалось ли кому-либо успешно настроить
discourse_dockerдля получения обновлений исходного кода Discourse по SSH?
Я предпочитаю решение, которое сохранится при будущих обновлениях, но мне также интересно понять, поддерживается ли технически получение данных через SSH во время начальной загрузки.
Любые рекомендации будут очень кстати.
Спасибо.