こんにちは、
公式の 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 の再構築を確実に実行できるようにすることです。
以下の点について知りたいです:
- Discourse のブートストラップおよび再構築を HTTPS ではなく GitHub 経由の SSH で実行する、公式にサポートされている方法はありますか?
- ない場合、Git HTTPS が不安定だが SSH が正常に動作する環境において、推奨されるアプローチは何ですか?
- ブートストラップ/ビルド段階に SSH 認証情報を注入する、サポートされた方法はありますか?
discourse_dockerを設定して、Discourse ソースの更新を SSH 経由で取得することに成功した事例はありますか?
将来のアップグレードでも生存するソリューションを希望していますが、ブートストラップ中の SSH ベースの取得が技術的にサポートされているかどうかについても理解したいです。
ご助言をいただければ幸いです。
よろしくお願いいたします。