المستخدمون الجدد لا يمكنهم التسجيل، أخطاء 404 في الـ console

لست متأكدًا مما إذا كانت هذه مشكلة (bug) أم مشكلة في الإعدادات الخاصة بي.

عندما أحاول إنشاء مستخدم جديد باستخدام التسجيل عبر معرف ديسكورس (Discourse ID)، فإن جزء التحقق من معرف ديسكورس يعمل بشكل جيد، ولكن عند العودة إلى نسختي على keppari.discourse.diy، يفشل التسجيل بصمت حتى مع تسجيل الدخول إلى بريد إلكتروني تم التحقق منه عبر معرف ديسكورس في المتصفح. زر التسجيل متاح ولكنه لا يفعل شيئًا عند النقر عليه ولا يوجد أي تحذير على الصفحة. لقد تمكنت سابقًا من إنشاء مستخدمين آخرين باستخدام معرف ديسكورس.

في إعدادات تسجيل الدخول والمصادقة الخاصة بي، الإعداد الوحيد الذي قمت بتجاوزه هو تعطيل المصادقة الثنائية (2FA) والسماح بمعرف ديسكورس. أنا أستضيف نسختي بنفسي ولا يوجد لدي إعداد SMTP. بين إنشاء المستخدمين السابقين وهذه المحاولة، قمت بتعطيل تسجيلات الدخول المحلية لفترة وجيزة لأنني اعتقدت أنه بما أنني لم أقم بإعداد SMTP، فإن نموذج تسجيل الدخول يبدو مربكًا، ولكنني الآن قمت بإعادة تمكين تسجيل الدخول المحلي.

لست متأكدًا مما إذا كان هذا مرتبطًا، ولكن في وحدة التحكم (console) لجميع مشاهدات الصفحات للمستخدمين المجهولين، هناك مجموعة من أخطاء 404 للإضافات (plugins) الخاصة بي، وكذلك لـ /assets/vendor.map و /assets/start-discourse.map. المستخدم الذي قام بتسجيل الدخول لا يعاني من أخطاء وحدة التحكم هذه. لا أرى أي شيء حديث في سجلاتي (/logs).

سأكون ممتنًا لأي توجيه بشأن الإعدادات الأخرى التي يجب تغييرها إذا كانت هذه خطأ في التكوين من جهتي! أنا أستضيف نسختي بنفسي، الإصدار 2026.3.0-latest.

إذًا، هل المستخدم عالق في شاشة التسجيل وزر التسجيل معطل؟ هل يمكنك مشاركة لقطة شاشة؟ هل هناك أي أخطاء في /logs الخاص بك؟

إعجاب واحد (1)

زر التسجيل غير معطّل حتى، بل هو مفعّل ولكنه لا يفعل شيئًا عند النقر عليه. لقطة الشاشة الأولى أدناه هي قبل محاولة النقر على التسجيل، لكنها تبدو كما هي بعد النقر.

هذه هي سجلاتي الآن؛ لقد حاولت التسجيل في الساعة 10:25 في هذه السجلات. كنت أعتقد أنه لا توجد أخطاء في السجلات عندما نشرت لأول مرة، ولكن هذه الأخطاء اعتبارًا من الساعة 10:25 جديدة.

أنا على الهاتف المحمول الآن لذلك لا يمكنني نسخ/لصق السجلات الأقدم، ولكن يمكنني نشر السجلات الكاملة في وقت لاحق اليوم إذا كان ذلك مفيدًا. شكرًا!

إعجاب واحد (1)

نعم، يرجى نشر تتبع المكدس (backtrace) وبيئة التشغيل (env) لخطأ “تعذر تخصيص خيط” (can’t alloc thread)، الذي يبدو أنه يسبب الفوضى في نسختك.

إعجاب واحد (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'
‎in 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'

أنا أستخدم خادم Digital Ocean بسعة 1 جيجابايت من الذاكرة أثناء إعدادي، في حال كان ذلك ذا صلة. أعلم أنه ليس الحجم الموصى به ولكني لم أكن أعتقد أنه سيشكل مشكلة إذا لم يكن هناك أي حركة مرور فعلية بخلاف حركتي.

مرحباً، لقد حاولت عرض هذا من منظور مستخدم عادي، أذهب للتسجيل باستخدام هوية ديسكورس (Discourse ID) ويتم إعطائي المطالبة فقط عند ملء الحقل

أضغط على زر التسجيل ويتم الضغط على الزر ولكنه لا يفعل ما ينبغي أن يفعله

هذه هي أخطاء وحدة التحكم لمستخدم مجهول، على /signup وجميع الصفحات الأخرى:

[Error] فشل تحميل المورد: استجاب الخادم بحالة 404 () (discourse-lazy-videos.map, line 0)
[Error] فشل تحميل المورد: استجاب الخادم بحالة 404 () (poll.map, line 0)
[Error] فشل تحميل المورد: استجاب الخادم بحالة 404 () (vendor.map, line 0)
[Error] فشل تحميل المورد: استجاب الخادم بحالة 404 () (discourse-local-dates.map, line 0)
[Error] فشل تحميل المورد: استجاب الخادم بحالة 404 () (checklist.map, line 0)
[Error] فشل تحميل المورد: استجاب الخادم بحالة 404 () (spoiler-alert.map, line 0)
[Error] فشل تحميل المورد: استجاب الخادم بحالة 404 () (discourse-rewind.map, line 0)
[Error] فشل تحميل المورد: استجاب الخادم بحالة 404 () (discourse-calendar.map, line 0)
[Error] فشل تحميل المورد: استجاب الخادم بحالة 404 () (discourse-staff-alias.map, line 0)
[Error] فشل تحميل المورد: استجاب الخادم بحالة 404 () (discourse-topic-voting.map, line 0)
[Error] فشل تحميل المورد: استجاب الخادم بحالة 404 () (discourse-narrative-bot.map, line 0)
[Error] فشل تحميل المورد: استجاب الخادم بحالة 404 () (automation.map, line 0)
[Error] فشل تحميل المورد: استجاب الخادم بحالة 404 () (start-discourse.map, line 0)
[Error] فشل تحميل المورد: استجاب الخادم بحالة 404 () (discourse-details.map, line 0)
[Error] فشل تحميل المورد: استجاب الخادم بحالة 404 () (discourse-user-notes.map, line 0)
[Error] فشل تحميل المورد: استجاب الخادم بحالة 404 () (discourse-data-explorer.map, line 0)
[Error] فشل تحميل المورد: استجاب الخادم بحالة 404 () (discourse-anonymous-categories.map, line 0)
[Error] فشل تحميل المورد: استجاب الخادم بحالة 404 () (discourse-fingerprint.map, line 0)

هل تم تنبيهك بمحاولتي للتسجيل؟

وهل تريد مني أن أسجل باستخدام رقم غير مُعرّف (non-id) لأرى ما إذا كان ذلك سيعمل؟

لا، لم أرَ مستخدمًا جديدًا ولم أتلق أي تنبيهات من أي نوع، شكرًا لك على المحاولة.

إعجاب واحد (1)

لا أعتقد أن غير المعرّف (non-ID) سيعمل لأنني لم أقم بإعداد SMTP.

إعجاب واحد (1)

لقد قمت بإعادة بناء في حال ساعد ذلك في أي شيء وما زلت أتلقى أخطاء can't alloc thread ومشاكل في التسجيل.

إذا كان ذلك ممكناً بالنسبة لك، هل يمكنك تجربة تثبيت جديد لـ Discourse على قطرة جديدة بنفس الحجم؟ إذا واجهت نفس المشكلة، فستعرف أن الحجم هو المشكلة. (يمكنني فعل الشيء نفسه واختبار هذا على قطرة بحجم 1 جيجابايت، ولكن لن أتمكن من الاختبار إلا بعد يوم أو يومين).

على تثبيت جديد تمامًا على قطرة (droplet) جديدة بسعة 1 غيغابايت، ليس لدي أي أخطاء ويمكنني تسجيل الدخول باستخدام معرّف ديسكورس (Discourse ID) على ما يرام. لم أبدأ في مواجهة مشكلات مع تثبيتي الرئيسي إلا بعد أن قمت بتعطيل ثم إعادة تمكين تسجيل الدخول المحلي، إذا كان لذلك أي أهمية.

تمكنت من تكرار المشكلة عن طريق إلغاء تحديد “تمكين تسجيلات الدخول المحلية”، مما منع المستخدمين الجدد من التسجيل وأعطى نفس الأخطاء في وحدة تحكم المتصفح. حصلت على هذه الأخطاء في السجلات على التثبيت الجديد:

MaxMindDB (/var/www/discourse/vendor/data/GeoLite2-City.mmdb) could not be found: 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) could not be found: No such file or directory @ rb_sysopen - /var/www/discourse/vendor/data/GeoLite2-ASN.mmdb
8:00 مساءً

(discourse_id) Authentication failure! access_denied: OmniAuth::Strategies::OAuth2::CallbackError, access_denied | The resource owner or authorization server denied the request.
8:08 مساءً

ولكن تحديد “تمكين تسجيلات الدخول المحلية” سمح للمستخدمين الجدد بالتسجيل على التثبيت الجديد مرة أخرى وأوقف أخطاء وحدة التحكم للمستخدمين المجهولين. لم أتمكن من تكرار خطأ السجل can't alloc thread.

مع تمكين هوية المؤسسة (ID)، هل يمكنك إعادة إنشاء بيانات الاعتماد من المسؤول > تسجيل الدخول والمصادقة > هوية المؤسسة (Discourse ID)؟

لقد قمتُ بإعادة إنشاء بيانات الاعتماد ولكنني ما زلت أواجه أخطاء 404 في وحدة تحكم المتصفح ولا يمكنني تسجيل مستخدمين جدد. لا أرى أي أخطاء جديدة في /logs منذ إعادة الإنشاء ولكن يمكنني إرسالها مرة أخرى إذا كان ذلك سيساعد.

أوه، أفهم. أعتقد أن هناك سوء تكوين منفصل هنا.

هل يمكنك مشاركة قائمة إعدادات الموقع المتعلقة بتسجيل الدخول وقيمها؟ ليس بيانات الاعتماد بالطبع، ولكنني أتساءل كيف تم إعداد موقعك للتعامل مع عمليات التسجيل الجديدة. (إذا كنت تفضل الإرسال عبر رسالة خاصة، فلا تتردد في القيام بذلك.)

في الإدارة (Admin) > تسجيل الدخول والمصادقة (Login & Authentication)، التغييرات الوحيدة التي لدي عن الإعدادات الافتراضية هي:

  • تعطيل “فرض العامل الثاني على المصادقة الخارجية” (Enforce second factor on external auth)
  • تمكين معرف ديسكورس (Discourse ID)

لقد قمت بتعطيل تسجيلات الدخول المحلية لفترة وجيزة، ولكنني أعدتها للتمكين الآن.

لقد بدأت بإيقاف المكونات الإضافية (plugins) لمعرفة ما إذا كان ذلك يؤثر على أي شيء، وأعتقد أنه قد يكون المكون الإضافي Fingerprint. أحتاج إلى اختبار إنشاء حساب بعد تعطيل هذا المكون فقط، ولكنني قمت بتعطيل جميع المكونات الإضافية الخاصة بي، وحاولت إنشاء مستخدم جديد بعد كل واحد، وتمكنت من إنشاء حساب جديد بعد تعطيل Fingerprint.

إعجاب واحد (1)

آه، شكرًا لمتابعتك. هل لديك رابط لهذا المكون الإضافي؟ سيكون ذلك مفيدًا!

إعجاب واحد (1)