Ricostruzione di Discourse fallisce durante l'avvio: timeout HTTPS Git, alla ricerca di un workaround pulito basato su SSH

Salve,

Sto eseguendo un’installazione standard di Discourse in self-hosted su Ubuntu utilizzando la configurazione ufficiale discourse_docker.

Ambiente

  • Ubuntu Server
  • Docker
  • discourse_docker ufficiale
  • Installazione a singolo contenitore (app.yml)
  • Ricostruzione eseguita tramite:
cd /var/discourse
./launcher rebuild app

Problema

Il processo di ricostruzione fallisce durante la fase di bootstrap quando Discourse tenta di aggiornare il codice sorgente dell’applicazione da GitHub.

Il fallimento si verifica a:

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

e produce:

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

seguito da:

FAILED
bootstrap failed with exit code 128

Riscontri Importanti

GitHub è raggiungibile via HTTPS

Sull’host:

curl -I https://github.com

funziona correttamente.

Inoltre:

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

funziona correttamente.

Git via HTTPS è inaffidabile nel mio ambiente

All’interno dell’ambiente Discourse:

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

fallisce con:

SSL connection timeout

Dalle mie indagini, sembra che ciò sia causato da problemi di connettività del mio provider Internet verso GitHub tramite HTTPS. Al momento, non sto cercando di risolvere il problema di rete in sé. Invece, sto cercando un modo per eseguire le ricostruzioni di Discourse utilizzando SSH, poiché la connettività SSH verso GitHub funziona correttamente nel mio ambiente.

L’autenticazione SSH di GitHub funziona

Ho generato una nuova chiave SSH, l’ho aggiunta a GitHub e ho verificato l’autenticazione:

ssh -T git@github.com

restituisce:

[“Hi ! You’ve successfully authenticated, but GitHub does not provide shell access.”]

Inoltre:

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

funziona correttamente dall’host.

URL del repository

Sull’host, ho modificato /var/discourse per utilizzare SSH:

[“origin git@github.com:discourse/discourse_docker.git”]

e le operazioni Git funzionano.

Tuttavia, all’interno del contenitore dell’applicazione Discourse:

cd /var/www/discourse
git remote -v

mostra:

[“origin GitHub - discourse/discourse: A platform for community discussion. Free, open, simple. · GitHub”]

Quindi, durante il bootstrap, Discourse tenta ancora di utilizzare HTTPS.

Cosa Vorrei Raggiungere

Il mio obiettivo principale è rendere affidabile la ricostruzione di Discourse in un ambiente in cui le connessioni HTTPS a GitHub sono instabili o si interrompono frequentemente.

Vorrei sapere:

  1. Esiste un metodo ufficialmente supportato per far sì che il bootstrap e la ricostruzione di Discourse utilizzino GitHub tramite SSH invece di HTTPS?
  2. In caso contrario, qual è l’approccio consigliato per ambienti in cui Git via HTTPS è inaffidabile ma SSH funziona correttamente?
  3. Esiste un metodo supportato per iniettare le credenziali SSH nella fase di bootstrap/build?
  4. Qualcuno ha configurato con successo discourse_docker per recuperare gli aggiornamenti del codice sorgente di Discourse tramite SSH?

Preferirei una soluzione che sopravviva ai futuri aggiornamenti, ma sono anche interessato a capire se il recupero basato su SSH durante il bootstrap sia tecnicamente supportato.

Qualsiasi indicazione sarebbe molto apprezzata.

Grazie.