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:
- Gibt es eine offiziell unterstützte Möglichkeit, dass Discourse-Bootstrap und -Neuaufbau GitHub über SSH statt über HTTPS verwenden?
- Wenn nein, was ist der empfohlene Ansatz für Umgebungen, in denen Git über HTTPS unzuverlässig ist, SSH aber einwandfrei funktioniert?
- Gibt es eine unterstützte Methode, SSH-Anmeldedaten in die Bootstrap-/Build-Phase einzuspeisen?
- Hat jemand
discourse_dockererfolgreich 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.