Novos usuários não conseguem se cadastrar, erros 404 no console

Não tenho certeza se isto é um bug ou um problema com a minha configuração.

Quando tento criar um novo usuário usando o cadastro com Discourse ID, a parte de verificação do Discourse ID funciona bem, mas ao retornar para a minha instância em keppari.discourse.diy, o cadastro falha silenciosamente, mesmo com um e-mail verificado pelo Discourse ID logado no navegador. O botão de cadastro está disponível, mas não faz nada ao ser clicado e não há aviso na página. Eu consegui criar outros usuários com Discourse ID anteriormente.

Nas minhas configurações de login e autenticação, a única configuração que sobrescrevi é desabilitar a 2FA (autenticação de dois fatores) e permitir o Discourse ID. Eu sou auto-hospedado e não tenho SMTP configurado. Entre a criação dos usuários anteriores e esta tentativa, eu desabilitei brevemente os logins locais porque pensei que, como não tinha SMTP configurado, isso tornava o formulário de login confuso, mas agora reativei o login local.

Não sei se está relacionado, mas no console para todas as visualizações de página de usuários anônimos, há um monte de erros 404 para meus plugins, mas também para /assets/vendor.map e /assets/start-discourse.map. Um usuário logado não tem esses erros no console. Eu não vejo nada recente em meus /logs.

Agradeceria qualquer orientação sobre outras configurações para alterar se for um erro de configuração da minha parte! Eu sou auto-hospedado, versão 2026.3.0-latest.

Então, o usuário está preso na tela de inscrição com um botão de inscrição desativado? Você pode compartilhar uma captura de tela? Há algum erro em seus /logs?

1 curtida

O botão de inscrição nem está desabilitado, ele está habilitado, mas não faz nada quando clicado. A primeira captura de tela abaixo é de antes de tentar clicar em inscrever-se, mas ela parece a mesma depois de clicar.

Estes são meus logs agora; eu tentei me inscrever às 10:25 nestes logs. Eu pensei que não havia erros nos logs quando postei pela primeira vez, mas esses erros a partir das 10:25 são novos.

Estou no celular agora, então não consigo copiar/colar logs mais antigos, mas posso postar os logs completos mais tarde hoje, se for útil. Obrigado!

1 curtida

Sim, por favor, poste o backtrace e o ambiente (env) para o erro can’t alloc thread (não é possível alocar thread), que parece estar causando o caos em sua instância.

1 curtida

Aqui está o backtrace para o erro mais recente de can't alloc thread:

Message (159137 copies reported)

Job exception: can't alloc thread

Backtrace

/usr/local/lib/ruby/3.4.0/socket.rb:712:in 'Thread.new'
/usr/local/lib/ruby/3.4.0/socket.rb:712:in 'block in Socket.tcp_with_fast_fallback'
/usr/local/lib/ruby/3.4.0/socket.rb:710:in 'Array#map'
/usr/local/lib/ruby/3.4.0/socket.rb:710:in 'Socket.tcp_with_fast_fallback'
/usr/local/lib/ruby/3.4.0/socket.rb:661:in 'Socket.tcp'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/redis-client-0.26.1/lib/redis_client/ruby_connection.rb:122:in 'RedisClient::RubyConnection#connect'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/redis-client-0.26.1/lib/redis_client/ruby_connection.rb:48:in 'RedisClient::RubyConnection#initialize'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/redis-client-0.26.1/lib/redis_client.rb:815:in 'Class#new'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/redis-client-0.26.1/lib/redis_client.rb:815:in 'block in RedisClient#connect'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/redis-client-0.26.1/lib/redis_client/middlewares.rb:12:in 'RedisClient::BasicMiddleware#connect'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/redis-client-0.26.1/lib/redis_client.rb:814:in 'RedisClient#connect'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/redis-client-0.26.1/lib/redis_client.rb:800:in 'RedisClient#raw_connection'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/redis-client-0.26.1/lib/redis_client.rb:759:in 'RedisClient#ensure_connected'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/redis-client-0.26.1/lib/redis_client.rb:352:in 'RedisClient#call_v'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/redis-5.4.0/lib/redis/client.rb:90:in 'Redis::Client#call_v'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/rack-mini-profiler-4.0.1/lib/mini_profiler/profiling_methods.rb:90:in 'block in Redis::Client#profile_method'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/redis-5.4.0/lib/redis.rb:152:in 'block in Redis#send_command'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/redis-5.4.0/lib/redis.rb:151:in 'Monitor#synchronize'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/redis-5.4.0/lib/redis.rb:151:in 'Redis#send_command'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/redis-5.4.0/lib/redis/commands/keys.rb:256:in 'Redis::Commands::Keys#del'
/var/www/discourse/lib/discourse_redis.rb:168:in 'block in DiscourseRedis#del'
/var/www/discourse/lib/discourse_redis.rb:29:in 'DiscourseRedis.ignore_readonly'
/var/www/discourse/lib/discourse_redis.rb:165:in 'DiscourseRedis#del'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/mini_scheduler-0.18.0/lib/mini_scheduler/distributed_mutex.rb:48:in 'MiniScheduler::DistributedMutex#synchronize'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/mini_scheduler-0.18.0/lib/mini_scheduler/distributed_mutex.rb:15:in 'MiniScheduler::DistributedMutex.synchronize'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/mini_scheduler-0.18.0/lib/mini_scheduler/manager.rb:365:in 'MiniScheduler::Manager#lock'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/mini_scheduler-0.18.0/lib/mini_scheduler/manager.rb:316:in 'MiniScheduler::Manager#tick'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/mini_scheduler-0.18.0/lib/mini_scheduler.rb:74:in 'block (2 levels) in MiniScheduler.start'

Este é outro

Message (2661 copies reported)

Job exception: can't alloc thread

Backtrace

/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/mini_scheduler-0.18.0/lib/mini_scheduler/manager.rb:63:in 'Thread.new'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/mini_scheduler-0.18.0/lib/mini_scheduler/manager.rb:63:in 'block in MiniScheduler::Manager::Runner#ensure_worker_threads'
​in:numeric:257:in 'Integer#times'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/mini_scheduler-0.18.0/lib/mini_scheduler/manager.rb:63:in 'MiniScheduler::Manager::Runner#ensure_worker_threads'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/mini_scheduler-0.18.0/lib/mini_scheduler/manager.rb:23:in 'block (2 levels) in MiniScheduler::Manager::Runner#initialize'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/mini_scheduler-0.18.0/lib/mini_scheduler/manager.rb:20:in 'Thread::Mutex#synchronize'
/var/www/discourse/vendor/bundle/ruby/3.4.0/gems/mini_scheduler-0.18.0/lib/mini_scheduler/manager.rb:20:in 'block in MiniScheduler::Manager::Runner#initialize'

Estou em um droplet Digital Ocean de 1GB de memória enquanto configuro as coisas, caso isso seja relevante. Eu sei que não é o tamanho recomendado, mas não pensei que seria um problema se não houvesse tráfego real além de mim.

Olá, tentei visualizar isso do ponto de vista de um usuário comum, eu tento me inscrever com o ID do Discourse e sou apenas apresentado ao prompt assim que o campo

é preenchido, eu pressiono o botão de inscrição e o botão é pressionado, mas não faz o que deveria

Estes são os erros do console para um usuário anônimo, em /signup e em todas as outras páginas:

[Error] Falha ao carregar o recurso: o servidor respondeu com um status de 404 () (discourse-lazy-videos.map, line 0)
[Error] Falha ao carregar o recurso: o servidor respondeu com um status de 404 () (poll.map, line 0)
[Error] Falha ao carregar o recurso: o servidor respondeu com um status de 404 () (vendor.map, line 0)
[Error] Falha ao carregar o recurso: o servidor respondeu com um status de 404 () (discourse-local-dates.map, line 0)
[Error] Falha ao carregar o recurso: o servidor respondeu com um status de 404 () (checklist.map, line 0)
[Error] Falha ao carregar o recurso: o servidor respondeu com um status de 404 () (spoiler-alert.map, line 0)
[Error] Falha ao carregar o recurso: o servidor respondeu com um status de 404 () (discourse-rewind.map, line 0)
[Error] Falha ao carregar o recurso: o servidor respondeu com um status de 404 () (discourse-calendar.map, line 0)
[Error] Falha ao carregar o recurso: o servidor respondeu com um status de 404 () (discourse-staff-alias.map, line 0)
[Error] Falha ao carregar o recurso: o servidor respondeu com um status de 404 () (discourse-topic-voting.map, line 0)
[Error] Falha ao carregar o recurso: o servidor respondeu com um status de 404 () (discourse-narrative-bot.map, line 0)
[Error] Falha ao carregar o recurso: o servidor respondeu com um status de 404 () (automation.map, line 0)
[Error] Falha ao carregar o recurso: o servidor respondeu com um status de 404 () (start-discourse.map, line 0)
[Error] Falha ao carregar o recurso: o servidor respondeu com um status de 404 () (discourse-details.map, line 0)
[Error] Falha ao carregar o recurso: o servidor respondeu com um status de 404 () (discourse-user-notes.map, line 0)
[Error] Falha ao carregar o recurso: o servidor respondeu com um status de 404 () (discourse-data-explorer.map, line 0)
[Error] Falha ao carregar o recurso: o servidor respondeu com um status de 404 () (discourse-anonymous-categories.map, line 0)
[Error] Falha ao carregar o recurso: o servidor respondeu com um status de 404 () (discourse-fingerprint.map, line 0)

Você foi alertado da minha tentativa de inscrição?

Além disso, você gostaria que eu me inscrevesse com um não-id para ver se funciona?

Não, eu não vejo um novo usuário e não recebi nenhum alerta de qualquer tipo, obrigado por tentar.

1 curtida

Eu não acho que o não-ID funcionará, pois não tenho o SMTP configurado.

1 curtida

Eu fiz uma reconstrução caso isso ajudasse em alguma coisa e ainda estou recebendo os erros de can't alloc thread e problemas de cadastro.

Se for possível para você, você pode tentar uma nova instalação de teste do Discourse em um novo droplet do mesmo tamanho? Se você encontrar o mesmo problema, saberá que o tamanho é o problema. (Eu posso fazer o mesmo e testar isso em um droplet de 1GB, mas só poderei testar daqui a um ou dois dias.)

Em uma instalação totalmente nova em um droplet novo de 1 GB, não tenho erros e consigo fazer login com o Discourse ID sem problemas. Só comecei a ter problemas com minha instalação principal depois que desativei e depois reativei o login local, se isso faz alguma diferença.

Consegui reproduzir desmarcando “habilitar logins locais”, o que impediu que um novo usuário se cadastrasse e gerou os mesmos erros no console do navegador. Obtive estes erros nos logs na instalação nova:

MaxMindDB (/var/www/discourse/vendor/data/GeoLite2-City.mmdb) não pôde ser encontrado: No such file or directory @ rb_sysopen - /var/www/discourse/vendor/data/GeoLite2-City.mmdb
20:00

MaxMindDB (/var/www/discourse/vendor/data/GeoLite2-ASN.mmdb) não pôde ser encontrado: No such file or directory @ rb_sysopen - /var/www/discourse/vendor/data/GeoLite2-ASN.mmdb
20:00

(discourse_id) Falha na autenticação! access_denied: OmniAuth::Strategies::OAuth2::CallbackError, access_denied | O proprietário do recurso ou o servidor de autorização negou a solicitação.
20:08

Mas marcar “habilitar logins locais” permitiu que novos usuários se cadastrassem novamente na instalação nova e parou os erros no console para usuários anônimos. Não consegui reproduzir o erro de log can't alloc thread.

Com o ID ativado, você pode regenerar as credenciais em Admin > Login & Authentication > Discourse ID?

Eu regenerei as credenciais, mas ainda recebo os erros 404 no console do navegador e não consigo cadastrar novos usuários. Não vejo novos erros em /logs desde a regeneração, mas posso postá-los novamente se isso ajudar.

Ah, entendi. Acho que há uma configuração incorreta separada aqui.

Você pode compartilhar a lista das configurações do site relacionadas ao login e seus valores? Não as credenciais, obviamente, mas estou curioso sobre como seu site está configurado para lidar com novos cadastros. (Se preferir enviar por mensagem privada, sinta-se à vontade para fazê-lo.)

Em Admin > Login e Autenticação, as únicas alterações que fiz em relação ao padrão são:

  • desabilitar “Impor segundo fator em autenticação externa”
  • habilitar Discourse ID

Eu desabilitei brevemente os logins locais, mas os reativei agora.

Comecei a desativar plugins para ver se isso estava afetando algo, e acho que pode ter sido o Fingerprint. Preciso testar a criação de uma conta com apenas ele desativado, mas eu desativei todos os meus plugins, tentando criar um novo usuário após cada um, e consegui criar uma nova conta depois de desativar o Fingerprint.

1 curtida

Ah, obrigado por acompanhar. Você tem um link para este plugin? Seria útil!

1 curtida