新規ユーザーがサインアップできない、コンソールに404エラー

これがバグなのか、それとも私の設定の問題なのかわかりません。

Discourse ID サインアップを使用して新しいユーザーを作成しようとすると、Discourse ID の認証部分は正常に機能しますが、ブラウザでサインインしている Discourse ID 認証済みメールアドレスがあっても、keppari.discourse.diy のインスタンスに戻ると、サインアップはサイレントに失敗します。サインアップボタンは利用可能ですが、クリックしても何も起こらず、ページ上に警告も表示されません。以前は Discourse ID を使用して他のユーザーを作成できていました。

ログインと認証の設定では、オーバーライドしている設定は 2FA の無効化と Discourse ID の許可のみです。私はセルフホストしており、SMTP は設定していません。以前のユーザーを作成した時と今回の試みの間に、SMTP を設定していないためログインフォームが紛らわしいと考え、一時的にローカルログインを無効にしましたが、現在はローカルログインを再度有効にしています。

これに関連しているかはわかりませんが、すべての匿名ユーザーのページビューのコンソールでは、私のプラグインだけでなく、/assets/vendor.map/assets/start-discourse.map に対しても多くの 404 エラーが発生しています。ログインしたユーザーにはこれらのコンソールエラーはありません。/logs にも最近のエラーは見当たりません。

もしこれが私の方の設定エラーであれば、変更すべき他の設定についてガイダンスをいただけると幸いです!私はセルフホストしており、バージョンは 2026.3.0-latest です。

つまり、ユーザーはサインアップボタンが無効になっているサインアップ画面で立ち往生しているということですか?スクリーンショットを共有していただけますか?/logs にエラーは表示されていますか?

「いいね!」 1

サインアップボタンは無効化されておらず、有効になっていますが、クリックしても何も起こりません。下の最初のスクリーンショットは、サインアップをクリックしようとする前のものですが、クリック後も同じように見えます。

こちらが現在のログです。10時25分にサインアップを試みました。最初に投稿したときはログにエラーはないと思っていましたが、10時25分時点でのこれらのエラーは新しいものです。

現在モバイルなので、それ以前の完全なログをコピー&ペーストできませんが、後ほど完全なログを投稿できますので、もし役立つようでしたらお知らせください。ありがとうございます!

「いいね!」 1

はい、インスタンスで大混乱を引き起こしていると思われる「スレッドを割り当てることができません」エラーのバックトレースと環境情報を投稿してください。

「いいね!」 1

最新の 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'

これは別のものです

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'
```internal: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'

セットアップ中に1GBメモリのDigital Oceanドロッパーを使用しています。もし関連があればですが。推奨サイズではないことは承知していますが、実際にトラフィックがない限り問題ないだろうと思っていました。

こんにちは、一般ユーザーの視点からこれを表示しようとしました。Discourse IDでサインアップしようとすると、フィールドが入力された後にプロンプトが表示されるだけです。

サインアップボタンを押すとボタンは押されますが、意図した動作をしません。

これらは、匿名ユーザーが /signup およびその他のすべてのページで表示されるコンソールエラーです。

[Error] Failed to load resource: the server responded with a status of 404 () (discourse-lazy-videos.map, line 0)
[Error] Failed to load resource: the server responded with a status of 404 () (poll.map, line 0)
[Error] Failed to load resource: the server responded with a status of 404 () (vendor.map, line 0)
[Error] Failed to load resource: the server responded with a status of 404 () (discourse-local-dates.map, line 0)
[Error] Failed to load resource: the server responded with a status of 404 () (checklist.map, line 0)
[Error] Failed to load resource: the server responded with a status of 404 () (spoiler-alert.map, line 0)
[Error] Failed to load resource: the server responded with a status of 404 () (discourse-rewind.map, line 0)
[Error] Failed to load resource: the server responded with a status of 404 () (discourse-calendar.map, line 0)
[Error] Failed to load resource: the server responded with a status of 404 () (discourse-staff-alias.map, line 0)
[Error] Failed to load resource: the server responded with a status of 404 () (discourse-topic-voting.map, line 0)
[Error] Failed to load resource: the server responded with a status of 404 () (discourse-narrative-bot.map, line 0)
[Error] Failed to load resource: the server responded with a status of 404 () (automation.map, line 0)
[Error] Failed to load resource: the server responded with a status of 404 () (start-discourse.map, line 0)
[Error] Failed to load resource: the server responded with a status of 404 () (discourse-details.map, line 0)
[Error] Failed to load resource: the server responded with a status of 404 () (discourse-user-notes.map, line 0)
[Error] Failed to load resource: the server responded with a status of 404 () (discourse-data-explorer.map, line 0)
[Error] Failed to load resource: the server responded with a status of 404 () (discourse-anonymous-categories.map, line 0)
[Error] Failed to load resource: the server responded with a status of 404 () (discourse-fingerprint.map, line 0)

サインアップの試行について通知されましたか?

また、動作を確認するためにIDなしでサインアップするようにご希望されますか?

いいえ、新しいユーザーは見当たりませんし、いかなる種類のアラートも受け取っていません。お手数をおかけしました。

「いいね!」 1

SMTPが設定されていないため、非IDでは機能しないと思います。

「いいね!」 1

再構築を試みましたが、can't alloc threadエラーとサインアップの問題がまだ発生しています。

もし可能であれば、同じサイズの新しいドロッパーレットに新しいテスト用のDiscourseをインストールしてみてください。同じ問題が発生した場合、問題の原因がサイズにあることがわかります。(私も同じことを行い、1GBのドロッパーレットでテストできますが、できるのは1~2日後になります。)

新しい1GBのドロッパーに新規インストールしたところ、エラーはなく、Discourse IDで正常にログインできます。問題が発生し始めたのは、メインのインストールでローカルログインを無効にしてから再度有効にした時からです。何か違いがあるかもしれません。

「ローカルログインを有効にする」のチェックを外すと、新規ユーザーがサインアップできなくなり、ブラウザコンソールに同じエラーが表示されることで再現できました。クリーンインストールでログに以下のエラーが出ました。

MaxMindDB (/var/www/discourse/vendor/data/GeoLite2-City.mmdb) が見つかりませんでした: No such file or directory @ rb_sysopen - /var/www/discourse/vendor/data/GeoLite2-City.mmdb
午後8:00

MaxMindDB (/var/www/discourse/vendor/data/GeoLite2-ASN.mmdb) が見つかりませんでした: No such file or directory @ rb_sysopen - /var/www/discourse/vendor/data/GeoLite2-ASN.mmdb
午後8:00

(discourse_id) 認証失敗! access_denied: OmniAuth::Strategies::OAuth2::CallbackError, access_denied | リソースオーナーまたは認証サーバーがリクエストを拒否しました。
午後8:08

しかし、クリーンインストールで「ローカルログインを有効にする」をチェックすると、新規ユーザーが再びサインアップできるようになり、未登録ユーザーに関するコンソールエラーも止まりました。can't alloc thread のログエラーを再現することはまだできていません。

IDが有効な場合、管理者 > ログインと認証 > Discourse ID から認証情報を再生成できますか?

認証情報を再生成しましたが、ブラウザコンソールで404エラーが引き続き発生し、新しいユーザーをサインアップできません。再生成後も/logsに新しいエラーは表示されていませんが、必要であれば再度投稿できます。

なるほど。ここには別の設定ミスがあるようですね。

ログイン関連のサイト設定とその値のリストを共有していただけますか?もちろん認証情報は不要ですが、サイトが新しいサインアップをどのように処理するように設定されているか興味があります。(もしプライベートメッセージでの送信をご希望でしたら、そうしていただければ結構です。)

Admin > ログインと認証 の設定で、デフォルトから変更しているのは以下のみです。

  • 「外部認証で2要素認証を強制する」を無効化
  • Discourse ID を有効化

短時間、ローカルログインを無効にしたことがありましたが、現在は再度有効化しています。

プラグインを無効にして、何かに影響していないか確認し始めたところ、Fingerprintが原因かもしれないと思いました。Fingerprintを無効にしただけでアカウントを作成できるかテストする必要がありますが、すべてのプラグインを無効にし、それぞれ無効にするたびに新しいユーザーを作成しようと試みたところ、Fingerprintを無効にした後に新しいアカウントを作成することができました。

「いいね!」 1

ああ、フォローアップありがとうございます。このプラグインへのリンクはありますか?助かります!

「いいね!」 1