Error fatal: no se pudo leer el nombre de usuario para 'https://github.com'

Intenté actualizar mi foro de 2 contenedores, pero falla. ¿Alguna idea de por qué?

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í, oficialmente yo también estoy caído ahora.

Primero me aparece Oops The software powering this discussion forum encountered an unexpected problem

Nunca había visto eso. Así que inicié sesión y reinicié mientras buscaba qué estaba pasando.

No sirvió de nada. Vale, tengo nuevos usuarios entrando y no podemos estar caídos. Así que no he actualizado en unos pocos meses. Pero supongo que al menos tengo que reconstruir la app.

Lo cual luego falla en la pregunta del nombre de usuario.

Probé ./discourse-doctor pero terminé con el mismo error de github.

Voy a intentar revisar los registros.

Nota: También tengo un bonito espacio libre de 5G en disco, pero normalmente he logrado actualizar apenas. Duplicar el espacio en disco duplicaría el coste y nunca he tenido tiempo de mover todo esto a mi propio servidor.

Intenté revisar los registros, pero solo noto muchos rechazos de conexión como:
/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)

Supongo que está relacionado.

No puedo actualizar mis componentes en mi foro, y al reconstruir recibo un mensaje inesperado:

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

Mi foro utiliza un dominio discourse.diy.

Probablemente sí. Así parece.

Empezó a principios de hoy, y supongo que ocurrió cuando Voice se añadió al núcleo. Pero eso es solo una sensación.

Tendremos que esperar :man_shrugging:

ahora me gusta mucho la solución de dos contenedores…

Parece ser un problema con GitHub. Encontré una discusión al respecto aquí: Unauthenticated clone of a public repo intermittently returns 401 (prompts for Username) from CI workers · community · Discussion #206581 · GitHub

¡Hola a todos! :waving_hand: Gracias por reportarlo. Hemos compartido esto con nuestros equipos internos para investigar; si tenemos alguna novedad, la publicaremos aquí y en las discusiones correspondientes :sparkles:

Como posible solución temporal, aunque te animo a esperar primero, esto funciona:

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

(es posible que tengas que reconstruir dos veces debido a la actualización de PostgreSQL)

Hoy actualicé unos 10 sitios sin errores (salvo los relacionados con el espacio en disco).

Parece una actualización desde la línea de comandos, pero si no lo era, definitivamente la recomendaría.

5 GB no es agradable, es apenas suficiente para construir un nuevo contenedor. ¿Has ejecutado ./launcher cleanup recientemente?

Tiene sentido. Y probablemente no afecta a todos por igual.

Una alternativa que podría ser mucho menos disruptiva sería cambiar la configuración de esta manera:

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

(bajo tu propio riesgo, por supuesto.)

Como de costumbre, voy a abrir un poco más el problema, casi como una divertida historia sobre 3-5 puntos de fallo.
No tan divertida después de 4 horas de investigaciones a medianoche. Parte de esto probablemente sea técnicamente incorrecto, pero es una lectura más amena, con posibles errores.

Hechos base (perdón por las explicaciones): Mi SSO redirige a mi servidor en casa (después de que Gandi no pudiera resolver ciertas cosas hace unos años y yo me cambiara a Dynadot). También funciona mejor redirigir después de que Hostpapa comprara el muy fiable hosting de LFC y no pudieras estar seguro de que actualizaran algo en silencio y toda tu infraestructura colapsara.

Ahora, para los 3 (¿o podría incluso contar esto como un fallo de 5 puntos, sería un nuevo récord?)

1*) Opera se actualizó hoy, de nuevo, aparentemente añadiendo algún código que realmente (no) le gusta las redirecciones 301/302 y las cachea de forma agresiva (algo de Chromium).
2*) Dynadot aparentemente tuvo un retraso de más de 30 segundos esta noche (que es lo necesario para desencadenar el problema de Chromium, que ahora quedó en caché, uh oh).
3*) Discourse se cayó (el oops mencionado anteriormente) porque no podía acceder al SSO dentro de los 30 segundos. La aplicación tuvo que ser reiniciada, pero en realidad no estoy seguro de si Discourse estuvo caído hasta el reinicio o no (estaba en modo pánico :wink: ). Gemini me hizo dar vueltas alrededor de sso/rails/redis etc. basándome en los registros, sin embargo. Esto fue después de que intentara actualizar, pero lo menciono bajo este punto para mantener la coherencia.
4*) Como no puedo averiguar qué está fallando, reinicio Linux por si acaso y comienzo a actualizar Discourse. Esto falla debido al problema de github. Y sí, tuve que limpiar un poco los discos primero como de costumbre, pero nunca estuve en 0G, lo que habría sido una posible razón también para los problemas de redis. Y sí, ahora que las cosas parecen estables, agregaré 10G en la nube y tal vez una actualización de Arkshine.
5*) Algo así como el primer problema, pero mientras intentaba resolver todo esto, actualizo la página de forma agresiva continuamente para ver si algo se hubiera arreglado en algún lugar. Supongo que estoy golpeando la redirección en caché del fallo inicial todo el tiempo, lo que significa que no puedo ni siquiera ver si el problema se ha corregido, incluso después del primer reinicio.

  1. Puedo acceder a mi SSO sin problema.
  2. Otro sitio de dominio que no usa SSO también funciona bien.
  3. Deshabilitar SSO para Discourse muestra el foro, pero nunca he tenido que los inicios de sesión normales funcionen, así que no ayuda mucho. Pero al menos ahora sé que realmente es el SSO el que está causando problemas.
  4. Gemini sugiere probar en una ventana privada, así que realmente abro Firefox y, ¿qué?, el foro funciona perfectamente. Genial, excepto… ¿qué?
  5. Opera sigue fallando. Sí, sigo sospechando que está en caché la redirección, pero no era algo que supiera en ese momento. No voy a limpiar las cookies del sitio, cachés, etc. todavía.
  6. Como las cosas funcionan, hice el trabajo necesario que realmente pretendía hacer usando Firefox durante media hora.
  7. Reinicié Opera y, hey presto, el foro aparece. Podría haber reiniciado Opera antes, no lo recuerdo, pero tal vez la caché haya expirado ahora y haya hecho una actualización adecuada.

Curiosamente, me desperté esta mañana y Opera hizo otra actualización. Tal vez esta actualización de caché agresiva haya creado muchos problemas en otros lugares también :slight_smile: .

Nota adicional: 3) es, por supuesto, la parte más interesante para nosotros. Quizás todavía pueda encontrarse en los registros (puedo buscar si es necesario). Si Discourse se cae, ¿intenta reiniciarse usando algún temporizador? ¿O estuvo todo el sitio caído hasta que inicié sesión y reinicié la aplicación?

Tengo dos instancias de Discourse autoalojadas que están caídas en este momento. En los registros, veo líneas como estas:

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

El código de salida 128 parece sospechosamente similar al de Git.

¿Podría estar relacionado? Y si es así, ¿por qué un fallo en la búsqueda de GitHub haría que una instancia se cayera?

Me pregunto si esto está relacionado :thinking:

Hola,

parece que ahora funciona. La primera reconstrucción dio un error, pero en el segundo intento la actualización funcionó y Discourse volvió a estar en línea. La verificación de la versión también funciona ahora.