Fatal : impossible de lire le nom d'utilisateur pour 'https://github.com'

J’ai essayé de mettre à jour mon forum en 2 conteneurs, mais cela échoue. Avez-vous des idées sur la cause ?

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

Ouais, je suis officiellement hors ligne moi aussi maintenant.

D’abord, je reçois un message d’erreur : Oops The software powering this discussion forum encountered an unexpected problem

Je n’avais jamais vu ça avant. J’ai donc fait une recherche en ligne pour comprendre ce qui se passait, tout en me reconnectant et en redémarrant le serveur.

Ça n’a pas aidé. Bon, j’ai des nouveaux utilisateurs qui arrivent et on ne peut pas rester hors ligne. Je n’avais donc pas mis à jour depuis quelques mois. Mais je suppose que je vais au moins devoir reconstruire l’application.

Ce qui échoue ensuite sur la question du nom d’utilisateur.

J’ai essayé ./discourse-doctor mais j’ai obtenu la même erreur github.

Je vais essayer de regarder les journaux (logs).

Note : Il me reste aussi un joli espace disque de 5 Go, mais j’ai généralement réussi à faire les mises à jour de justesse. Doubler l’espace disque doublerait le coût, et je n’ai jamais eu le temps de tout migrer sur mon propre serveur.

J’ai essayé de regarder les journaux, mais je ne vois qu’un tas de refus de connexion comme :
/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)

Je suppose que c’est lié ?

Je ne parviens pas à mettre à jour mes composants sur mon forum, et lors d’une reconstruction, je reçois un message inattendu :

./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':

Mon forum utilise un domaine discourse.diy.

Probablement. Ça a l’air d’être le cas.

Cela a commencé plus tôt aujourd’hui, et je parierais que c’est arrivé lorsque Voice a été ajouté au cœur du système. Mais ce n’est qu’une impression.

Il faudra juste attendre :man_shrugging:

maintenant, j’aime vraiment la solution à 2 conteneurs…

Il semble qu’il s’agisse d’un problème avec GitHub, j’ai trouvé une discussion ici : Unauthenticated clone of a public repo intermittently returns 401 (prompts for Username) from CI workers · community · Discussion #206581 · GitHub

Bonjour à tous ! :waving_hand: Merci de l’avoir signalé. Nous avons transmis cette information à nos équipes internes pour qu’elles l’examinent - si nous avons des mises à jour, nous les posterons ici et dans les discussions appropriées :sparkles:

En tant que solution de contournement possible, mais je vous encourage à attendre d’abord, ceci fonctionne :

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

(vous devrez peut-être reconstruire deux fois en raison de la mise à niveau de PostgreSQL)

J’ai mis à jour environ 10 sites aujourd’hui sans erreur (à part ceux liés à l’espace disque).

Cela ressemble à une mise à jour en ligne de commande, mais si ce n’était pas le cas, je le recommanderais vivement.

5 Go, ce n’est pas confortable, c’est à peine suffisant pour construire un nouveau conteneur. As-tu récemment effectué un ./launcher cleanup ?

Cela aurait du sens. Et cela n’affecte probablement pas tout le monde de la même manière.

Une alternative, potentiellement beaucoup moins perturbante, consisterait à modifier le paramètre de la manière suivante :

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

(sous votre propre responsabilité, bien sûr.)

Comme je le fais d’habitude, j’élargis un peu le sujet, avec presque une histoire amusante sur 3 à 5 points de défaillance.
Pas si amusant après 4 heures d’investigations vers minuit. Une partie de ce qui suit est probablement techniquement incorrecte, mais c’est une lecture plus agréable, avec d’éventuelles erreurs.

Facts de base (désolé pour les explications) : Mon SSO redirige vers mon serveur domestique (après que Gandi a échoué à résoudre certains problèmes il y a quelques années et que je suis passé à Dynadot). Cela fonctionne aussi mieux en redirigeant après que Hostpapa a racheté l’hébergement LFC très fiable, car on ne pouvait pas être sûr qu’ils ne fassent pas de mises à jour silencieuses qui ne finiraient pas par faire tomber toute votre infrastructure.

Passons maintenant aux 3 (ou devrais-je même compter cela comme une défaillance à 5 points, ce qui serait un nouveau record)

1*) Opera a été mis à jour aujourd’hui, encore une fois, apparemment en ajoutant du code qui n’aime vraiment pas (ou déteste) les redirections 301/302 et les met en cache de manière agressive (quelque chose lié à Chromium).
2*) Dynadot avait apparemment un retard de plus de 30 secondes ce soir (c’est ce qu’il faut pour déclencher le problème Chromium, qui est maintenant mis en cache, oh non).
3*) Discourse a planté (le « oops » mentionné plus haut) car il ne pouvait pas accéder au SSO en moins de 30 secondes. L’application a dû être relancée, mais je ne suis pas vraiment sûr que Discourse était hors ligne jusqu’à la relance ou non (j’étais en mode panique :wink: ). Gemini m’a fait tourner en rond autour du SSO/rails/redis etc. en me basant sur les journaux. C’est après avoir essayé de faire une mise à jour, mais je le mentionne sous ce point pour garder la cohérence.
4*) Comme je n’arrivais pas à comprendre ce qui clochait, j’ai redémarré Linux juste au cas où et j’ai commencé à mettre à jour Discourse. Cela a échoué à cause du problème GitHub. Et oui, j’ai dû nettoyer un peu les disques d’abord comme d’habitude, mais je n’étais jamais à 0 Go, ce qui aurait pu être une raison possible pour les problèmes redis. Et oui, maintenant que les choses semblent stables, j’ajouterai 10 Go dans le cloud et peut-être la mise à jour Arkshine.
5*) C’est un peu le 1er problème, mais en essayant de résoudre tout cela, je rafraîchis constamment la page de manière agressive pour voir si quelque chose avait été corrigé quelque part. Je suppose que je tombe constamment sur la redirection mise en cache de la défaillance initiale, ce qui signifie que je ne peux même pas voir si le problème a été corrigé, même après la première relance.

  1. J’accède à mon SSO sans aucun problème.
  2. Un autre site de domaine n’utilisant pas le SSO fonctionne également bien.
  3. Désactiver le SSO pour Discourse affiche le forum, mais je n’ai jamais eu de connexions normales qui fonctionnent, donc pas grand-chose à y faire. Mais au moins, je sais maintenant que c’est vraiment le SSO qui cause les problèmes.
  4. Gemini suggère de tester dans une fenêtre privée, alors je lance Firefox et, eh bien, le forum fonctionne parfaitement. Super, sauf que… qu’est-ce que c’est ?
  5. Opera échoue toujours. Oui, je soupçonne qu’il met toujours la redirection en cache, mais ce n’était pas quelque chose que je savais à l’époque. Je ne vais pas encore effacer les cookies, les caches, etc. du site.
  6. Comme les choses fonctionnent, j’ai fait le travail nécessaire que je voulais réellement faire en utilisant Firefox pendant une demi-heure.
  7. J’ai redémarré Opera et hop, le forum s’affiche. J’ai peut-être redémarré Opera plus tôt, je ne m’en souviens plus, mais peut-être que le cache a expiré et a fait un vrai rafraîchissement.

Bizarrement, je me suis réveillé ce matin et Opera a fait une autre mise à jour. Peut-être que cette mise à jour du cache agressif a créé beaucoup de problèmes ailleurs aussi :slight_smile: .

Note supplémentaire : le point 3) est bien sûr la partie la plus intéressante pour nous. Peut-être qu’on peut encore le trouver dans les journaux (je peux fouiller si nécessaire). Si Discourse plante, essaie-t-il de se relancer à l’aide d’un minuteur ? Ou le site entier était-il hors ligne jusqu’à ce que je me connecte et relance l’application ?

J’ai deux instances Discourse auto-hébergées qui sont actuellement en panne. Dans les journaux, je vois des lignes comme celles-ci :

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

Le code de sortie 128 ressemble beaucoup à celui de Git.

Cela pourrait-il y être lié ? Et si c’est le cas, pourquoi une recherche GitHub échouée ferait-elle tomber une instance ?

Je me demande si cela est lié :thinking:

Salut,

Ça semble fonctionner maintenant. La première reconstruction a rencontré une erreur, mais la deuxième tentative a réussi et l’update a fonctionné ; Discourse est de nouveau en ligne. La vérification de la version fonctionne également désormais.