Errore fatale: impossibile leggere il nome utente per 'https://github.com'

Ho provato ad aggiornare il mio forum a 2 contenitori, ma non riesce. Qualche idea sul perché?

x86_64 arch detected.                                                                                                                                                    
2.0.20260803-0122: Pulling from discourse/base                                                                                                                           
Digest: sha256:ab1e7217470759e63313a16bc5b71b9f2dd7d3ae8303286e5985f563ad12b7b3                                                                                          
Status: Image is up to date for discourse/base:2.0.20260803-0122                                                                                                         
docker.io/discourse/base:2.0.20260803-0122                                                                                                                               
/usr/local/lib/ruby/gems/3.4.0/gems/pups-1.4.0/lib/pups.rb                                                                                                               /usr/local/bin/pups --stdin                                                                                                                                              
I, [2026-09-02T16:49:46.027794 #1]  INFO -- : Reading from stdin                                                                                                         
I, [2026-09-02T16:49:46.066073 #1]  INFO -- : > thpoff echo "thpoff is installed!"                                                                                       thpoff is installed!                                                                                                                                                     
I, [2026-09-02T16:49:46.079514 #1]  INFO -- : > /usr/local/bin/ruby -e 'if (ENV["DISCOURSE_SMTP_ADDRESS"] == "smtp.example.com" && ENV["DISCOURSE_SKIP_EMAIL_SETUP"] != "
1"); puts "Aborting! Mail is not configured!"; exit 1; end'                                                                                                              
I, [2026-09-02T16:49:46.242618 #1]  INFO -- : > /usr/local/bin/ruby -e 'if ENV["DISCOURSE_HOSTNAME"] == "discourse.example.com"; puts "Aborting! Domain is not configured!"; exit 1; end'                                                                                                                                                         I, [2026-09-02T16:49:46.351184 #1]  INFO -- : > /usr/local/bin/ruby -e 'if (ENV["DISCOURSE_CDN_URL"] || "")[0..1] == "//"; puts "Aborting! CDN must have a protocol specified. Once fixed you should rebake your posts now to correct all posts."; exit 1; end'                                                                                   I, [2026-09-02T16:49:46.497030 #1]  INFO -- : > rm -f /etc/cron.d/anacron                                                                                                I, [2026-09-02T16:49:46.504864 #1]  INFO -- : File > /etc/cron.d/anacron  chmod:   chown:                                                                                I, [2026-09-02T16:49:46.512848 #1]  INFO -- : File > /etc/runit/1.d/copy-env  chmod: +x  chown:  I, [2026-09-02T16:49:46.525056 #1]  INFO -- : File > /etc/service/unicorn/run  chmod: +x  chown: 
I, [2026-09-02T16:49:46.533676 #1]  INFO -- : File > /etc/service/nginx/run  chmod: +x  chown:  
I, [2026-09-02T16:49:46.542104 #1]  INFO -- : File > /etc/runit/3.d/01-nginx  chmod: +x  chown:   
I, [2026-09-02T16:49:46.557772 #1]  INFO -- : File > /etc/runit/3.d/02-unicorn  chmod: +x  chown:            
I, [2026-09-02T16:49:46.566700 #1]  INFO -- : > cd /var/www/discourse && sudo -H -E -u discourse git clean -f
I, [2026-09-02T16:49:46.797286 #1]  INFO -- : > cd /var/www/discourse && sudo -H -E -u discourse bash -c '
  set -o errexit                                                                    
  git fetch --tags --prune-tags --prune --force origin                                                                                                                   
  if [[ $(git symbolic-ref --short HEAD) == latest ]] ; then                                                                                                             
      git pull                                                                      
  else                                                                              
      git -c advice.detachedHead=false checkout latest                                                                                                                   
  fi                                                                                
'                                                                                   
fatal: could not read Username for 'https://github.com': No such device or address                                                                                       
fatal: expected flush after ref listing                                             


FAILED                                                                              
--------------------                                                                
Pups::ExecError: cd /var/www/discourse && sudo -H -E -u discourse bash -c '                                                                                              
  set -o errexit                                                                    
  git fetch --tags --prune-tags --prune --force origin                                                                                                                   
  if [[ $(git symbolic-ref --short HEAD) == latest ]] ; then                                                                                                             
      git pull                                                                      
  else                                                                              
      git -c advice.detachedHead=false checkout latest                                                                                                                   
  fi                                                                                
' failed with return #<Process::Status: pid 34 exit 128>                                                                                                                 
Location of failure: /usr/local/lib/ruby/gems/3.4.0/gems/pups-1.4.0/lib/pups/exec_command.rb:138:in 'Pups::ExecCommand#spawn'
exec failed with the params {"cd" => "$home", "tag" => "build", "hook" => "code", "cmd" => ["sudo -H -E -u discourse git clean -f", "sudo -H -E -u discourse bash -c '\n 
 set -o errexit\n  git fetch --tags --prune-tags --prune --force origin\n  if [[ $(git symbolic-ref --short HEAD) == $version ]] ; then\n      git pull\n  else\n      gi
t -c advice.detachedHead=false checkout $version\n  fi\n'", "sudo -H -E -u discourse git config user.discourse-version $version", "mkdir -p tmp", "chown discourse:www-da
ta tmp", "mkdir -p tmp/pids", "mkdir -p tmp/sockets", "touch tmp/.gitkeep", "mkdir -p                    /shared/log/rails", "bash -c \"touch -a           /shared/log/ra
ils/{production,production_errors,unicorn.stdout,unicorn.stderr,sidekiq}.log\"", "bash -c \"ln    -s           /shared/log/rails/{production,production_errors,unicorn.st
dout,unicorn.stderr,sidekiq}.log $home/log\"", "bash -c \"mkdir -p           /shared/{uploads,backups}\"", "bash -c \"ln    -s           /shared/{uploads,backups} $home/
public\"", "bash -c \"mkdir -p           /shared/tmp/{backups,restores}\"", "bash -c \"ln    -s           /shared/tmp/{backups,restores} $home/tmp\"", "chown -R discours
e:www-data /shared/log/rails /shared/uploads /shared/backups /shared/tmp", "[ ! -d public/plugins ] || find public/plugins/ -maxdepth 1 -xtype l -delete"]}
bootstrap failed with exit code 128                                                 
** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.
./discourse-doctor may help diagnose the problem.                                                                                                                        
f21423e74889e97cf80d8d237c4ca8bb1d4674e6e3a0a30527d1b4394d5d8c98

Sì, anche io sono ufficialmente offline.

Prima di tutto ho ricevuto un errore Oops The software powering this discussion forum encountered an unexpected problem

Non l’avevo mai visto prima. Quindi mi sono disconnesso e ho riavviato il sistema cercando di capire cosa stesse succedendo.

Non ha aiutato. Ok, ho nuovi utenti che stanno arrivando e non possiamo restare offline. Quindi non ho aggiornato da qualche mese. Ma immagino di dover almeno rifare la build dell’app.

Il che poi fallisce alla domanda sul nome utente.

Ho provato ./discourse-doctor ma alla fine ho ottenuto lo stesso errore di GitHub.

Proverò a guardare i log.

Nota: Ho anche uno spazio su disco di circa 5 GB residuo, ma di solito sono riuscito ad aggiornare con poco margine. Raddoppiare lo spazio su disco raddoppierebbe il costo e non ho mai avuto il tempo di spostare tutto sul mio server.

Ho provato a guardare i log ma noto solo un gran numero di connessioni rifiutate come:
/usr/local/lib/ruby/3.4.0/socket.rb:1639:in ‘Socket#__connect_nonblock’: Connection refused - connect(2) for 127.0.0.1:6379 (Errno::ECONNREFUSED)

Immagino che sia correlato?

Non riesco ad aggiornare i componenti del mio forum e, durante la ricostruzione, ricevo un errore inaspettato:

./launcher rebuild app
arm64 arch detected.
WARNING: This output is designed for human readability. For machine-readable output, please use --format.
Ensuring launcher is up to date
Username for 'https://github.com':

Il mio forum utilizza un dominio discourse.diy.

Probabilmente sì. Così sembra.

È iniziato più tardi oggi, e immagino che sia successo quando Voice è stato aggiunto al core. Ma è solo un’impressione.

Dovremo semplicemente aspettare :man_shrugging:

Adesso mi piace davvero la soluzione a due container…

Sembra che si tratti di un problema con GitHub, ho trovato una discussione qui: Unauthenticated clone of a public repo intermittently returns 401 (prompts for Username) from CI workers · community · Discussion #206581 · GitHub

Ciao a tutti! :waving_hand: Grazie per aver segnalato questo problema. Lo abbiamo condiviso con i nostri team interni per un’indagine - se avessimo aggiornamenti, li pubblicheremo qui e nelle discussioni appropriate :sparkles:

Come possibile soluzione temporanea, ma vi consiglio di attendere prima, questo funziona:

cd /var/discourse
git config --global http.version HTTP/1.1
./launcher rebuild app

(potrebbe essere necessario effettuare la ricostruzione due volte a causa dell’aggiornamento di PostgreSQL)

Oggi ho aggiornato circa 10 siti senza errori (a parte quelli relativi allo spazio su disco).

Sembra un aggiornamento da riga di comando, ma se non lo fosse, lo consiglierei comunque vivamente.

5 GB non sono “beni”, sono appena sufficienti per creare un nuovo container. Hai eseguito di recente ./launcher cleanup?

Sarebbe logico. E probabilmente non sta colpendo tutti allo stesso modo.

Un’alternativa che potrebbe essere molto meno invasiva è modificare l’impostazione in questo modo:

# docker exec -i -u discourse app git config --global http.version HTTP/1.1

(a tuo rischio e pericolo, ovviamente.)

Come faccio di solito, apro un po’ di più il problema, quasi una storia divertente su 3-5 punti di fallimento.
Non così divertente dopo 4 ore di indagini intorno a mezzanotte. Alcune di queste parti potrebbero essere tecnicamente errate, ma è una lettura più divertente con possibili errori.

Fatti di base (scusate le spiegazioni): Il mio SSO reindirizza al mio server domestico (dopo che Gandi non è riuscito a risolvere alcune cose alcuni anni fa e sono passato a Dynadot). Funziona anche meglio reindirizzando dopo che Hostpapa ha acquistato l’hosting LFC, molto affidabile, e non si poteva essere sicuri che non stessero aggiornando qualcosa in silenzio, facendo crollare l’intera infrastruttura.

Ora, per i 3 (o potrei persino contarli come un fallimento a 5 punti, sarebbe un nuovo record)

1*) Opera si è aggiornata oggi, di nuovo, aggiungendo apparentemente del codice che non ama affatto (o lo odia) i reindirizzamenti 301/302 e li mette in cache in modo aggressivo (qualcosa di Chromium).
2*) Dynadot aveva apparentemente un ritardo di oltre 30 secondi stasera (che è ciò che serve per scatenare il problema di Chromium, che ora è in cache, uh oh).
3*) Discourse è crollato (il “oops” menzionato sopra) perché non poteva accedere a SSO entro 30 secondi. L’app ha dovuto essere riavviata, ma in realtà non sono sicuro se Discourse fosse giù fino al riavvio o no (ero in modalità panico :wink: ). Gemini mi ha fatto girare in loop intorno a sso/rails/redis ecc. in base ai log. Questo è dopo che ho provato a fare un aggiornamento, ma lo menziono sotto questo punto per mantenere la coerenza.
4*) Poiché non riesco a capire cosa stia andando storto, riavvio Linux per sicurezza e inizio ad aggiornare Discourse. Che fallisce a causa del problema di github. E sì, ho dovuto ripulire un po’ i dischi prima, come al solito, ma non ero mai a 0G, che sarebbe potuto essere un’altra possibile causa per i problemi di redis. E sì, II, ora che le cose sembrano stabili, aggiungerò 10G nel cloud e forse un aggiornamento di Arkshine.
5*) In parte è il 1° problema, ma mentre cercavo di risolvere tutto questo, ho continuato a fare hard refresh della pagina per vedere se qualcosa fosse stato risolto da qualche parte. Stimo di essere sempre a sbattere contro il reindirizzamento in cache dal fallimento iniziale, il che significa che non posso nemmeno vedere se il problema è stato risolto, nemmeno dopo il primo riavvio.

  1. Posso accedere al mio SSO senza problemi.
  2. Un altro sito con dominio diverso che non usa SSO funziona anche bene.
  3. Disabilitando SSO per Discourse, il forum viene mostrato, ma non ho mai avuto login normali funzionanti, quindi non è di molto aiuto. Ma almeno ora so che è davvero SSO a creare i problemi.
  4. Gemini suggerisce di testare in una finestra di navigazione in incognito, quindi accendo effettivamente Firefox e, cosa, il forum funziona perfettamente. Ottimo, tranne che per… che cosa?
  5. Opera fallisce ancora. Sì, probabilmente continua a mettere in cache il reindirizzamento, ma non era qualcosa che sapevo all’epoca. Non ho ancora pulito i cookie del sito, le cache ecc.
  6. Poiché le cose funzionano, ho fatto il lavoro necessario che intendevo effettivamente fare usando Firefox per mezz’ora.
  7. Ho riavviato Opera ed ecco fatto, il forum viene mostrato. Potrei aver riavviato Opera prima, non ricordo, ma forse la cache è scaduta e ha fatto un refresh appropriato.

Sorpresa, mi sono svegliato stamattina e Opera ha fatto un altro aggiornamento. Forse questo aggiornamento di cache aggressiva ha creato molti altri problemi altrove :slight_smile: .

Nota aggiuntiva: il punto 3) è ovviamente la parte più interessante per noi. Forse può ancora essere trovato dai log (posso scavare se necessario). Se Discourse crolla, cerca di riavviarsi usando qualche timer? O l’intero sito era giù fino a quando non sono entrato e ho riavviato l’app?

Ho due istanze Discourse self-hosted che al momento sono offline. Nei log vedo righe come questa:

I, [2026-09-03T06:02:41.640393 #80]  INFO -- : reaped unknown subprocess #<Process::Status: pid 3079826 exit 128>
I, [2026-09-03T06:03:10.006495 #80]  INFO -- : reaped unknown subprocess #<Process::Status: pid 3079864 exit 128>
I, [2026-09-03T06:03:10.394732 #80]  INFO -- : reaped unknown subprocess #<Process::Status: pid 3079871 exit 128>
E, [2026-09-03T06:03:10.518338 #722] ERROR -- : worker=0 gen=0 pid=722 timed out, exiting
I, [2026-09-03T06:03:10.530245 #722]  INFO -- : worker=0 gen=0 pid=722 exiting

Il codice di uscita 128 sembra sospettosamente legato a Git.

Potrebbe essere correlato? E in tal caso, perché un lookup GitHub fallito dovrebbe causare il crash di un’istanza?

Mi chiedo se questo sia correlato​:thinking:

Ciao,

sembra che ora funzioni. La prima ricostruzione ha dato un errore, ma al secondo tentativo l’aggiornamento è andato a buon fine e Discourse è di nuovo online. Anche la verifica della versione funziona ora.