Не уверен, является ли это ошибкой или проблемой с моей конфигурацией.
Когда я пытаюсь создать нового пользователя через регистрацию с использованием Discourse ID, этап проверки Discourse ID проходит успешно, но при возврате на мой инстанс keppari.discourse.diy регистрация завершается неудачей без каких-либо уведомлений, даже если в браузере уже выполнен вход с подтверждённым Discourse ID адресом электронной почты. Кнопка регистрации отображается, но при нажатии ничего не происходит, и предупреждений на странице нет. Ранее мне удавалось создавать других пользователей с помощью Discourse ID.
В настройках входа и аутентификации я изменил только два параметра: отключил двухфакторную аутентификацию (2FA) и разрешил использование Discourse ID. Я использую собственную хостинг-инфраструктуру, и SMTP у меня не настроен. Между созданием предыдущих пользователей и этой попыткой я временно отключил локальный вход, так как думал, что из-за отсутствия настроенного SMTP форма входа может быть запутанной, но сейчас локальный вход снова включён.
Не уверен, связано ли это с проблемой, но в консоли для всех просмотров страниц анонимными пользователями наблюдается множество ошибок 404 для моих плагинов, а также для /assets/vendor.map и assets/start-discourse.map. У авторизованного пользователя этих ошибок в консоли нет. В моём логе /logs ничего нового я не обнаружил.
Буду признателен за любые рекомендации по другим настройкам, которые стоит изменить, если это ошибка с моей стороны! Я использую собственную хостинг-инфраструктуру, версия 2026.3.0-latest.
Итак, пользователь застрял на экране регистрации с неактивной кнопкой? Можете ли вы поделиться скриншотом? Есть ли какие-либо ошибки в вашем файле /logs?
Кнопка регистрации даже не отключена — она активна, но при нажатии ничего не происходит. Первый скриншот ниже сделан до попытки нажать «Регистрация», но после нажатия он выглядит точно так же.
Вот мои текущие логи; попытка регистрации была предпринята в 10:25. Сначала я думал, что в логах нет ошибок, но эти ошибки, появившиеся к 10:25, новые.
Сейчас я на мобильном устройстве, поэтому не могу скопировать и вставить более ранние логи, но могу выложить полные логи позже сегодня, если это будет полезно. Спасибо!
Да, пожалуйста, опубликуйте трассировку стека и переменные окружения для ошибки can’t alloc thread, которая, похоже, вызывает проблемы на вашем экземпляре.
Сообщение (2661 копий)
Исключение задачи: can't alloc thread
Трассировка стека
/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'
Я использую droplet Digital Ocean с 1 ГБ памяти, пока настраиваю систему, на случай если это имеет значение. Я знаю, что это не рекомендуемый размер, но не думал, что это вызовет проблемы, если нет реального трафика, кроме моего.
Привет! Я попытался посмотреть на это с точки зрения обычного пользователя: я перехожу к регистрации через Discourse ID, и мне показывается подсказка, как только поле
Это ошибки консоли для анонимного пользователя на странице /signup и на всех остальных страницах:
[Ошибка] Не удалось загрузить ресурс: сервер ответил со статусом 404 () (discourse-lazy-videos.map, строка 0)
[Ошибка] Не удалось загрузить ресурс: сервер ответил со статусом 404 () (poll.map, строка 0)
[Ошибка] Не удалось загрузить ресурс: сервер ответил со статусом 404 () (vendor.map, строка 0)
[Ошибка] Не удалось загрузить ресурс: сервер ответил со статусом 404 () (discourse-local-dates.map, строка 0)
[Ошибка] Не удалось загрузить ресурс: сервер ответил со статусом 404 () (checklist.map, строка 0)
[Ошибка] Не удалось загрузить ресурс: сервер ответил со статусом 404 () (spoiler-alert.map, строка 0)
[Ошибка] Не удалось загрузить ресурс: сервер ответил со статусом 404 () (discourse-rewind.map, строка 0)
[Ошибка] Не удалось загрузить ресурс: сервер ответил со статусом 404 () (discourse-calendar.map, строка 0)
[Ошибка] Не удалось загрузить ресурс: сервер ответил со статусом 404 () (discourse-staff-alias.map, строка 0)
[Ошибка] Не удалось загрузить ресурс: сервер ответил со статусом 404 () (discourse-topic-voting.map, строка 0)
[Ошибка] Не удалось загрузить ресурс: сервер ответил со статусом 404 () (discourse-narrative-bot.map, строка 0)
[Ошибка] Не удалось загрузить ресурс: сервер ответил со статусом 404 () (automation.map, строка 0)
[Ошибка] Не удалось загрузить ресурс: сервер ответил со статусом 404 () (start-discourse.map, строка 0)
[Ошибка] Не удалось загрузить ресурс: сервер ответил со статусом 404 () (discourse-details.map, строка 0)
[Ошибка] Не удалось загрузить ресурс: сервер ответил со статусом 404 () (discourse-user-notes.map, строка 0)
[Ошибка] Не удалось загрузить ресурс: сервер ответил со статусом 404 () (discourse-data-explorer.map, строка 0)
[Ошибка] Не удалось загрузить ресурс: сервер ответил со статусом 404 () (discourse-anonymous-categories.map, строка 0)
[Ошибка] Не удалось загрузить ресурс: сервер ответил со статусом 404 () (discourse-fingerprint.map, строка 0)
Если у вас есть возможность, можете ли вы попробовать установить Discourse заново на новый droplet того же размера? Если вы столкнётесь с той же проблемой, значит, дело именно в размере. (Я тоже могу провести такой тест на droplet с 1 ГБ памяти, но смогу сделать это только через день или два.)
При чистой установке на новый Droplet объемом 1 ГБ у меня нет ошибок, и я успешно вхожу в систему через 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
20: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
20:00
(discourse_id) Ошибка аутентификации! access_denied: OmniAuth::Strategies::OAuth2::CallbackError, access_denied | Владелец ресурса или сервер авторизации отклонил запрос.
20:08
Однако установка галочки «Включить локальные входы» снова позволила новым пользователям регистрироваться на чистой установке и устранила ошибки в консоли для анонимных пользователей. Мне не удалось воспроизвести ошибку в логе can't alloc thread.
Я сгенерировал новые учётные данные, но в консоли браузера по-прежнему появляются ошибки 404, и я не могу зарегистрировать новых пользователей. В /logs после генерации новых данных новых ошибок не видно, но я могу выложить их снова, если это поможет.
А, я понял. Похоже, здесь есть отдельная ошибка в конфигурации.
Можете ли вы предоставить список настроек сайта, связанных с входом, и их значения? Конечно, не учётные данные, но мне интересно, как настроен ваш сайт для обработки новых регистраций. (Если вы предпочитаете отправить это в личные сообщения, пожалуйста, делайте это.)
Я начал отключать плагины, чтобы проверить, не влияют ли они на работу, и, похоже, проблема может быть в Fingerprint. Мне нужно протестировать создание аккаунта, отключив только его, но я пошёл дальше и отключил все свои плагины, пытаясь создать нового пользователя после каждого отключения. После отключения Fingerprint я смог создать новый аккаунт.