Discourse のブートストラップ中リビルド失敗:Git HTTPS タイムアウト、SSH ベースのクリーンな回避策を探しています

こんにちは、

公式の discourse_docker 構成を使用して、Ubuntu 上で標準的なセルフホスト型の Discourse インストールを実行しています。

環境

  • Ubuntu Server
  • Docker
  • 公式の discourse_docker
  • シングルコンテナ構成(app.yml
  • 再構築コマンド:
cd /var/discourse
./launcher rebuild app

問題

再構築プロセスは、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 over HTTPS が不安定

Discourse 環境内では:

git ls-remote https://github.com/discourse/discourse.git

が以下のエラーで失敗します:

SSL connection timeout

調査の結果、これはインターネットプロバイダーによる GitHub への HTTPS 接続に問題があることが原因のようです。現在、私はこのネットワーク問題自体の解決を試みていません。代わりに、GitHub への SSH 接続が正常に動作する環境で、SSH を使用して Discourse の再構築を行う方法を探しています。

GitHub への SSH 認証は動作する

新しい 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 を使用しようとしています。

達成したいこと

私の主な目的は、GitHub への HTTPS 接続が不安定で頻繁にタイムアウトする環境でも、Discourse の再構築を確実に実行できるようにすることです。

以下の点について知りたいです:

  1. Discourse のブートストラップおよび再構築を HTTPS ではなく GitHub 経由の SSH で実行する、公式にサポートされている方法はありますか?
  2. ない場合、Git HTTPS が不安定だが SSH が正常に動作する環境において、推奨されるアプローチは何ですか?
  3. ブートストラップ/ビルド段階に SSH 認証情報を注入する、サポートされた方法はありますか?
  4. discourse_docker を設定して、Discourse ソースの更新を SSH 経由で取得することに成功した事例はありますか?

将来のアップグレードでも生存するソリューションを希望していますが、ブートストラップ中の SSH ベースの取得が技術的にサポートされているかどうかについても理解したいです。

ご助言をいただければ幸いです。

よろしくお願いいたします。