Fatal: não foi possível ler o nome de usuário para 'https://github.com'

Tentei atualizar meu fórum de 2 contêineres, mas falhou. Alguma ideia do porquê?

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

Cara, agora eu também estou oficialmente fora do ar.

Primeiro, apareceu um erro Oops The software powering this discussion forum encountered an unexpected problem

Nunca tinha visto isso antes. Então, entrei no sistema e reiniciei enquanto procurava o que estava acontecendo.

Não ajudou. Ok, eu só tenho novos usuários entrando e não podemos ficar fora do ar. Por isso, não faço upgrade há alguns meses. Mas acho que terei que reconstruir o app, pelo menos.

E isso falha na questão do nome de usuário.

Tentei o ./discourse-doctor, mas acabei com o mesmo erro do GitHub.

Vou tentar olhar os logs.

Nota: Também tenho um bom espaço de 5 GB em disco, mas geralmente tenho conseguido fazer o upgrade na ponta da língua. Dobrar o espaço em disco dobraria o custo e nunca tive tempo de migrar tudo para o meu próprio servidor.

Tentei olhar os logs, mas só notei muitas recusas de conexão, 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)

Acho que está relacionado?

Não consigo atualizar meus componentes no meu fórum e, ao fazer o rebuild, recebo uma mensagem inesperada:

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

Meu fórum usa um domínio discourse.diy.

Provavelmente é. Parece que sim.

Começou mais cedo hoje, e eu apostaria que surgiu quando o Voice foi adicionado ao núcleo. Mas isso é só uma impressão.

Vamos ter que esperar :man_shrugging:

agora eu realmente gosto da solução de 2 contêineres…

Parece ser um problema com o GitHub. Encontrei uma discussão sobre isso aqui: Unauthenticated clone of a public repo intermittently returns 401 (prompts for Username) from CI workers · community · Discussion #206581 · GitHub

Olá, pessoal! :waving_hand: Obrigado por reportarem isso. Compartilhamos a questão com nossas equipes internas para investigação — se tivermos alguma atualização, publicaremos aqui e nas discussões apropriadas :sparkles:

Como possível solução alternativa, mas recomendo aguardar primeiro, o seguinte funciona:

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

(você pode precisar reconstruir duas vezes devido à atualização do PostgreSQL)

Hoje atualizei cerca de 10 sites sem erros (que não fossem de espaço em disco).

Parece uma atualização pela linha de comando, mas, se não for, eu definitivamente recomendaria isso.

5 GB não é “bom”, é mal o suficiente para construir um novo container. Você fez um ./launcher cleanup recentemente?

Isso faria sentido. E provavelmente não está afetando todo mundo da mesma forma.

Uma alternativa que pode ser muito menos disruptiva seria alterar a configuração da seguinte forma:

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

(por sua conta e risco, é claro.)

Como de costume, vou abrir um pouco mais o problema, quase como uma história divertida sobre 3 a 5 pontos de falha.
Não tão divertida depois de 4 horas de investigações perto da meia-noite. Parte disso provavelmente está tecnicamente incorreta, mas é uma leitura mais divertida, mesmo que contenha possíveis erros.

Fatos básicos (desculpem as explicações): Meu SSO redireciona para meu servidor pessoal (depois que a Gandi falhou em resolver algumas coisas há alguns anos e eu migrei para a Dynadot). Também funciona melhor redirecionando após a Hostpapa comprar o hospedagem LFC, que era muito confiável, e você não podia ter certeza de que eles fariam alguma atualização silenciosa e toda a sua infraestrutura cairia.

Agora, para os 3 (ou eu poderia até contar isso como uma falha de 5 pontos, seria um novo recorde)

1*) O Opera atualizou hoje, novamente, aparentemente adicionando algum código que realmente (des)gosta de redirecionamentos 301/302 e faz cache rígido deles (alguma coisa do Chromium).
2*) A Dynadot aparentemente teve um atraso de mais de 30 segundos esta noite (que é o necessário para disparar o problema do Chromium, que agora ficou em cache, uh oh).
3*) O Discourse travou (o oops mencionado acima) porque não conseguiu acessar o SSO dentro de 30 segundos. O aplicativo teve que ser reiniciado, mas na verdade não tenho certeza se o Discourse estava fora do ar até a reinicialização ou não (eu estava em modo pânico :wink: ). A Gemini me fez rodar em loops ao redor de sso/rails/redis etc com base nos logs. Isso foi depois que eu tentei fazer uma atualização, mas estou mencionando neste ponto para manter a coerência.
4*) Como não consigo descobrir o que está errado, eu reinicio o Linux apenas por precaução e começo a atualizar o Discourse. O que falha por causa do problema do github. E sim, tive que limpar um pouco os discos primeiro, como de costume, mas nunca estive em 0G, o que teria sido uma possível razão também para problemas de redis. E sim, agora que as coisas parecem estáveis, vou adicionar 10G na nuvem e talvez uma atualização do Arkshine.
5*) Quase o 1º problema, mas enquanto tentava resolver tudo isso, eu atualizava a página com força continuamente para ver se algo teria sido corrigido em algum lugar. Estou adivinhando que estou atingindo o redirecionamento em cache da falha inicial o tempo todo, o que significa que eu nem consigo ver se o problema foi corrigido, mesmo após a primeira reinicialização.

  1. Consigo acessar meu SSO sem problemas.
  2. Outro site de domínio que não usa SSO também funciona bem.
  3. Desativar o SSO para o Discourse mostra o fórum, mas eu nunca tive logins normais funcionando, então não ajuda muito. Mas pelo menos agora sei que realmente é o SSO bagunçando as coisas.
  4. A Gemini sugere testar em uma janela privada, então eu abro o Firefox em vez disso e, o quê, o fórum funciona perfeitamente. Ótimo, exceto… whaaaat?
  5. O Opera ainda falha. Sim, ainda em cache o redirecionamento, suspeito, mas não era algo que eu soubesse na época. Não vou limpar cookies do site, caches etc ainda.
  6. Como as coisas funcionam, fiz o trabalho necessário que eu realmente pretendia fazer usando o Firefox por meia hora.
  7. Reiniciei o Opera e hey presto, o fórum aparece. Talvez eu tenha reiniciado o Opera mais cedo, não lembro, mas talvez o cache tenha expirado agora e feito uma atualização adequada.

Engraçadamente, acordei hoje de manhã e o Opera fez outra atualização. Talvez essa atualização de cache rígido tenha criado muitos problemas em outros lugares também :slight_smile: .

Nota adicional: 3) é, claro, a parte mais interessante para nós. Talvez ainda possa ser encontrada nos logs (posso investigar se necessário). Se o Discourse travar, ele tenta se reiniciar usando algum timer? Ou o site inteiro estava fora do ar até eu entrar e reiniciar o aplicativo?

Tenho duas instâncias do Discourse auto-hospedadas que estão fora do ar no momento. Nos logs, vejo linhas 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

O código de saída 128 parece suspeitamente relacionado ao Git.

Isso poderia estar relacionado? E, se for, por que uma falha na consulta ao GitHub causaria a queda de uma instância?

Me pergunto se isso está relacionado​:thinking:

Oi,

parece que agora está funcionando. A primeira reconstrução encontrou um erro, mas na segunda tentativa a atualização funcionou e o Discourse está online novamente. A verificação de versão também está funcionando agora.