Discourse-Rebuild während des Bootstraps fehlgeschlagen: Git-HTTPS-Timeout, Suche nach einer sauberen SSH-basierten Lösung

Hallo,

ich betreibe eine Standard-Installation von Discourse auf Ubuntu im Self-Hosted-Modus mit dem offiziellen discourse_docker-Setup.

Umgebung

  • Ubuntu Server
  • Docker
  • Offizielles discourse_docker
  • Installation mit einem einzigen Container (app.yml)
  • Neuaufbau durchgeführt mit:
cd /var/discourse
./launcher rebuild app

Problem

Der Neuaufbau schlägt während der Bootstrap-Phase fehl, wenn Discourse versucht, die Anwendungsquelle von GitHub zu aktualisieren.

Der Fehler tritt auf bei:

git fetch --tags --prune-tags --prune --force origin

und führt zu:

fatal: unable to access 'https://github.com/discourse/discourse.git/': SSL connection timeout

gefolgt von:

FAILED
bootstrap failed with exit code 128

Wichtige Erkenntnisse

GitHub ist über HTTPS erreichbar

Auf dem Host:

curl -I https://github.com

funktioniert einwandfrei.

Ebenso:

curl -I https://raw.githubusercontent.com

funktioniert ebenfalls.

Git über HTTPS ist in meiner Umgebung unzuverlässig

Innerhalb der Discourse-Umgebung:

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

schlägt fehl mit:

SSL connection timeout

Meinen Untersuchungen zufolge liegt dies an Verbindungsproblemen meines Internetanbieters zu GitHub über HTTPS. Derzeit versuche ich nicht, dieses Netzwerkproblem selbst zu lösen. Stattdessen suche ich nach einer Möglichkeit, Discourse-Neuaufbauten über SSH durchzuführen, da die SSH-Verbindung zu GitHub in meiner Umgebung einwandfrei funktioniert.

GitHub-SSH-Authentifizierung funktioniert

Ich habe einen neuen SSH-Schlüssel generiert, zu GitHub hinzugefügt und die Authentifizierung überprüft:

ssh -T git@github.com

liefert:

Hi <username>! You've successfully authenticated, but GitHub does not provide shell access.

Ebenso:

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

funktioniert vom Host aus erfolgreich.

Repository-URLs

Auf dem Host habe ich /var/discourse so geändert, dass es SSH verwendet:

origin git@github.com:discourse/discourse_docker.git

und Git-Operationen funktionieren.

Innerhalb des Discourse-Anwendungscontainers zeigt jedoch:

cd /var/www/discourse
git remote -v

folgendes an:

origin https://github.com/discourse/discourse.git

Während des Bootstraps versucht Discourse daher weiterhin, HTTPS zu verwenden.

Was ich erreichen möchte

Mein Hauptziel ist es, Discourse-Neuaufbauten in einer Umgebung zuverlässig durchzuführen, in der HTTPS-Verbindungen zu GitHub instabil sind oder häufig timeouten.

Ich möchte Folgendes wissen:

  1. Gibt es eine offiziell unterstützte Möglichkeit, dass Discourse-Bootstrap und -Neuaufbau GitHub über SSH statt über HTTPS verwenden?
  2. Wenn nein, was ist der empfohlene Ansatz für Umgebungen, in denen Git über HTTPS unzuverlässig ist, SSH aber einwandfrei funktioniert?
  3. Gibt es eine unterstützte Methode, SSH-Anmeldedaten in die Bootstrap-/Build-Phase einzuspeisen?
  4. Hat jemand discourse_docker erfolgreich so konfiguriert, dass Discourse-Quellaktualisierungen über SSH abgerufen werden?

Ich bevorzuge eine Lösung, die auch bei zukünftigen Upgrades bestehen bleibt, interessiere mich aber auch dafür, ob das Abrufen über SSH während des Bootstraps technisch unterstützt wird.

Jeder Hinweis wäre sehr willkommen.

Vielen Dank.