При восстановлении резервной копии возникли некоторые проблемы из-за загрузки .tar-архива с macOS, но в итоге всё заработало. Сайт доступен по адресу forum.imaginerio.org со всеми старыми сообщениями, однако я не могу войти ни под учётной записью администратора, которую настроил при развёртывании, ни под своими старыми учётными данными форума. В браузере я сейчас получаю следующее сообщение:
Ой
Программное обеспечение, управляющее этим форумом, столкнулось с непредвиденной проблемой. Приносим извинения за неудобства.
Подробная информация об ошибке была зафиксирована в логах, и было сгенерировано автоматическое уведомление. Мы разберёмся с этим.
Дальнейших действий с вашей стороны не требуется. Однако, если проблема сохранится, вы можете предоставить дополнительные сведения, включая шаги для воспроизведения ошибки, создав тему в категории обратной связи на сайте.
Однако в режиме инкогнито сайт загружается. Вход через Google выдаёт сообщение «Что-то пошло не так, возможно, этот адрес электронной почты уже используется», а вход через GitHub приводит к ошибке, описанной выше. Я пробовал использовать ссылку «Забыли пароль», но письмо не приходит, тогда как тестовое письмо, отправленное утилитой discourse-doctor, приходит без проблем.
Есть ли какие-либо логи, которые я могу проверить, или другие операции, которые можно выполнить в работающем контейнере?
Ранее это был хостинговый экземпляр, с которого я скачал резервную копию и теперь размещаю его самостоятельно. Не уверен, может ли это быть связано с проблемой.
После небольшого размышления я пришёл к выводу, что это связано с тем, что я никогда не настраивал вход через Google/Github на своём самодостаточном экземпляре. Кто-нибудь может подтвердить? Если да, можно ли это сделать через консоль?
Спасибо, Майкл. Я могу добраться до той же точки, что и вы, но если вы попытаетесь создать учётную запись, система сообщит, что что-то пошло не так, и, возможно, этот адрес электронной почты уже зарегистрирован (что не соответствует действительности). Я попробовал войти через обходной путь, и хотя система пишет «письмо отправлено», оно не приходит в мой почтовый ящик (при этом тестовое письмо от discourse-doctor приходит). Помню, что по какой-то причине я отключил рассылку писем для не-участников команды, но адрес, который я использую, точно принадлежит команде.
Я пока не отменял подписку. Если эту проблему можно решить с помощью новой или другой учётной записи администратора и настроек, считаете ли вы, что служба поддержки сможет мне помочь?
Мы можем помочь вам с настройкой электронной почты на хостинге, но не на самохостинге.
Вы можете попробовать использовать команду rake admin:create из контейнера, чтобы создать новый аккаунт администратора и войти в систему с его помощью.
Этот форум был восстановлен из размещённого сайта, подписка на который всё ещё активна. Размещённая версия не доступна публично, так как я использую тот же домен, но, полагаю, она всё ещё работает? Я предлагаю это, исходя из ощущения, что я заблокирован из-за ошибочной конфигурации, которую можно откатить, а затем экспортировать и восстановить новую резервную копию.
Кажется, это почти сработало. Мне удалось создать учётную запись администратора, но при попытке входа появляется сообщение «неизвестная ошибка» (и код 500 в консоли). Я попытался запросить ссылку для входа, письмо пришло успешно, но затем снова:
Parameters: {"slug"=>"en-narratives-about", "topic_id"=>"96"}
Completed 500 Internal Server Error in 23ms (ActiveRecord: 0.0ms (0 queries, 0 cached) | GC: 0.0ms)
Started GET "/t/en-narratives-about/96.json" for 34.127.96.150 at 2025-01-24 19:47:25 +0000
Processing by TopicsController#show as JSON
Ничего особо примечательного, кроме, возможно, подтверждения выполнения admin:create в /log/var-log:
2025-01-24T19:20:57.703680+00:00 ip-172-26-4-15-app sudo: root : TTY=pts/1 ; PWD=/var/www/discourse ; USER=discourse ; COMMAND=/usr/local/bin/bundle exec bin/rake admin:create
2025-01-24T19:20:57.704316+00:00 ip-172-26-4-15-app sudo: pam_limits(sudo:session): Could not set limit for 'core' to soft=-1, hard=-1: Operation not permitted; uid=0,euid=0
2025-01-24T19:20:57.704421+00:00 ip-172-26-4-15-app sudo: pam_unix(sudo:session): session opened for user discourse(uid=1000) by (uid=0)
2025-01-24T19:21:59.096268+00:00 ip-172-26-4-15-app sudo: pam_unix(sudo:session): session closed for user discourse
2025-01-24T19:25:01.326841+00:00 ip-172-26-4-15-app CRON[116983]: pam_unix(cron:session): session opened for user root(uid=0) by (uid=0)
2025-01-24T19:25:01.340674+00:00 ip-172-26-4-15-app CRON[116983]: pam_unix(cron:session): session closed for user root
{
"errors": [
"Запрошенный URL или ресурс не может быть найден."
],
"error_type": "not_found",
"extras": {
"title": "Страница не найдена",
"html": "\n\n\n\n\u003Cdiv class=\"page-not-found\"\u003E\n \u003Ch1 class=\"title\"\u003EОй! Эта страница не существует или закрыта.\u003C/h1\u003E\n\n \u003Ca href=\"/login\" class='btn btn-primary'\u003E\u003Csvg class=\"fa d-icon svg-icon svg-node\" aria-hidden=\"true\"\u003E\u003Csvg id=\"user\" viewBox=\"0 0 448 512\"\u003E\n \u003Cpath d=\"M224 256A128 128 0 1 0 224 0a128 128 0 1 0 0 256zm-45.7 48C79.8 304 0 383.8 0 482.3C0 498.7 13.3 512 29.7 512l388.6 0c16.4 0 29.7-13.3 29.7-29.7C448 383.8 368.2 304 269.7 304l-91.4 0z\"/\u003E\n\u003C/svg\u003E\u003C/svg\u003E\nВойти\u003C/a\u003E\n\n\u003C/div\u003E\n\n\n\n\u003Cdiv class=\"row page-not-found-topics\"\u003E\n \u003Cdiv class=\"recent-topics\"\u003E\n \u003Ch2 class=\"recent-topics-title\"\u003EНедавние\u003C/h2\u003E\n \u003Cdiv class='not-found-topic'\u003E\n \u003Ca href=\"/t/topografia-do-rio-antigo-heightmap/152\"\u003ETopografia do Rio antigo (Heightmap)\u003C/a\u003E\u003Ca class='badge-category__wrapper ' href='/c/imaginerio/9'\u003E\u003Cspan data-category-id='9' style='--category-badge-color: #25AAE2; --category-badge-text-color: #FFFFFF;' data-drop-close='true' class='badge-category ' title='Aqui você pode conversar sobre o imagineRio.'\u003E\u003Cspan class='badge-category__name'\u003EimagineRio\u003C/span\u003E\u003C/span\u003E\u003C/a\u003E\n \u003C/div\u003E\n \u003Cdiv class='not-found-topic'\u003E\n \u003Ca href=\"/t/titulo-e-localizacao-nao-correspondem/149\"\u003ETítulo e Localização não correspondem\u003C/a\u003E\u003Ca class='badge-category__wrapper ' href='/c/imaginerio/9'\u003E\u003Cspan data-category-id='9' style='--category-badge-color: #25AAE2; --category-badge-text-color: #FFFFFF;' data-drop-close='true' class='badge-category ' title='Aqui você pode conversar sobre o imagineRio.'\u003E\u003Cspan class='badge-category__name'\u003EimagineRio\u003C/span\u003E\u003C/span\u003E\u003C/a\u003E\n \u003C/div\u003E\n \u003Cdiv class='not-found-topic'\u003E\n \u003Ca href=\"/t/imagens-que-nao-correspondem-a-localizacao-no-mapa/148\"\u003EImagens que não correspondem a localização no mapa\u003C/a\u003E\u003Ca class='badge-category__wrapper ' href='/c/features/12'\u003E\u003Cspan data-category-id='12' style='--category-badge-color: #0088CC; --category-badge-text-color: #FFFFFF;' data-drop-close='true' class='badge-category ' title='Você gostaria de mais opções no nosso mapa? Crie um novo tópico e preencha os dados solicitados para sugerir uma melhoria.'\u003E\u003Cspan class='badge-category__name'\u003EПредложить улучшение\u003C/span\u003E\u003C/span\u003E\u003C/a\u003E\n \u003C/div\u003E\n \u003Cdiv class='not-found-topic'\u003E\n \u003Ca href=\"/t/problema-no-login/143\"\u003EProblema no Login\u003C/a\u003E\u003Ca class='badge-category__wrapper ' href='/c/bugs/10'\u003E\u003Cspan data-category-id='10' style='--category-badge-color: #0E76BD; --category-badge-text-color: #FFFFFF;' data-drop-close='true' class='badge-category ' title='Você encontrou algum problema no nosso mapa? Crie um novo tópico e preencha os dados solicitados para relatar um problema.'\u003E\u003Cspan class='badge-category__name'\u003EСообщить о проблеме\u003C/span\u003E\u003C/span\u003E\u003C/a\u003E\n \u003C/div\u003E\n \u003Cdiv class='not-found-topic'\u003E\n \u003Ca href=\"/t/add-the-complete-collection-of-jean-baptiste-debret/134\"\u003EAdd the complete collection of Jean-Baptiste Debret\u003C/a\u003E\u003Ca class='badge-category__wrapper ' href='/c/features/12'\u003E\u003Cspan data-category-id='12' style='--category-badge-color: #0088CC; --category-badge-text-color: #FFFFFF;' data-drop-close='true' class='badge-category ' title='Você gostaria de mais opções no nosso mapa? Crie um novo tópico e preencha os dados solicitados para sugerir uma melhoria.'\u003E\u003Cspan class='badge-category__name'\u003EПредложить улучшение\u003C/span\u003E\u003C/span\u003E\u003C/a\u003E\n \u003C/div\u003E\n \u003Cdiv class='not-found-topic'\u003E\n \u003Ca href=\"/t/publicacao-de-conteudo-do-youtube/131\"\u003EPublicação de conteúdo do Youtube\u003C/a\u003E\u003Ca class='badge-category__wrapper ' href='/c/features/12'\u003E\u003Cspan data-category-id='12' style='--category-badge-color: #0088CC; --category-badge-text-color: #FFFFFF;' data-drop-close='true' class='badge-category ' title='Você gostaria de mais opções no nosso mapa? Crie um novo tópico e preencha os dados solicitados para sugerir uma melhoria.'\u003E\u003Cspan class='badge-category__name'\u003EПредложить улучшение\u003C/span\u003E\u003C/span\u003E\u003C/a\u003E\n \u003C/div\u003E\n \u003Cdiv class='not-found-topic'\u003E\n \u003Ca href=\"/t/bug-na-marcacao-nos-mapas/130\"\u003EBug na marcação nos mapas\u003C/a\u003E\u003Ca class='badge-category__wrapper ' href='/c/bugs/10'\u003E\u003Cspan data-category-id='10' style='--category-badge-color: #0E76BD; --category-badge-text-color: #FFFFFF;' data-drop-close='true' class='badge-category ' title='Você encontrou algum problema no nosso mapa? Crie um novo tópico e preencha os dados solicitados para relatar um problema.'\u003E\u003Cspan class='badge-category__name'\u003EСообщить о проблеме\u003C/span\u003E\u003C/span\u003E\u003C/a\u003E\n \u003C/div\u003E\n \u003Cdiv class='not-found-topic'\u003E\n \u003Ca href=\"/t/copiar-colar-a-posicao-do-mapa/129\"\u003ECopiar/colar a posição do mapa\u003C/a\u003E\u003Ca class='badge-category__wrapper ' href='/c/features/12'\u003E\u003Cspan data-category-id='12' style='--category-badge-color: #0088CC; --category-badge-text-color: #FFFFFF;' data-drop-close='true' class='badge-category ' title='Você gostaria de mais opções no nosso mapa? Crie um novo tópico e preencha os dados solicitados para sugerir uma melhoria.'\u003E\u003Cspan class='badge-category__name'\u003EПредложить улучшение\u003C/span\u003E\u003C/span\u003E\u003C/a\u003E\n \u003C/div\u003E\n \u003Cdiv class='not-found-topic'\u003E\n \u003Ca href=\"/t/technical-issue-with-image-server/128\"\u003ETechnical issue with image server\u003C/a\u003E\u003Ca class='badge-category__wrapper ' href='/c/bugs/10'\u003E\u003Cspan data-category-id='10' style='--category-badge-color: #0E76BD; --category-badge-text-color: #FFFFFF;' data-drop-close='true' class='badge-category ' title='Você encontrou algum problema no nosso mapa? Crie um novo tópico e preencha os dados solicitados para relatar um problema.'\u003E\u003Cspan class='badge-category__name'\u003EСообщить о проблеме\u003C/span\u003E\u003C/span\u003E\u003C/a\u003E\n \u003C/div\u003E\n \u003Cdiv class='not-found-topic'\u003E\n \u003Ca href=\"/t/narrativas-problemas-de-acesso-a-plataforma/125\"\u003ENarrativas: Problemas de acesso à plataforma\u003C/a\u003E\u003Ca class='badge-category__wrapper ' href='/c/bugs/10'\u003E\u003Cspan data-category-id='10' style='--category-badge-color: #0E76BD; --category-badge-text-color: #FFFFFF;' data-drop-close='true' class='badge-category ' title='Você encontrou algum problema no nosso mapa? Crie um novo tópico e preencha os dados solicitados para relatar um problema.'\u003E\u003Cspan class='badge-category__name'\u003EСообщить о проблеме\u003C/span\u003E\u003C/span\u003E\u003C/a\u003E\n \u003C/div\u003E\n \u003Ca href=\"/latest\" class=\"btn btn-default\"\u003EЕщё…\u003C/a\u003E\n \u003C/div\u003E\n\u003C/div\u003E\n\n\n \u003Cdiv class=\"row\"\u003E\n \u003Cdiv class=\"page-not-found-search\"\u003E\n \u003Cform action='/search' id='discourse-search'\u003E\n \u003Clabel for=\"search-input\"\u003EПоиск по сайту\u003C/label\u003E\n \u003Cinput type=\"text\" id=\"search-input\" name=\"q\" value=\"en narratives about\"\u003E\n \u003Cbutton class=\"btn btn-primary\"\u003EПоиск\u003C/button\u003E\n \u003C/form\u003E\n \u003C/div\u003E\n \u003C/div\u003E\n\n \u003Cscript defer src=\"/assets/onpopstate-handler-1ea3e951679a33d36b6c5f2f8d98016e9908c4af9110736a24b159542c83a9b8.js\" data-discourse-entrypoint=\"onpopstate-handler\" nonce=\"bJfYSa08sEXVGC4MEMEU13WAq\"\u003E\u003C/script\u003E\n\n",
"group": null
}
}
Да. С созданием пользователей что-то точно не так. Похоже, будет непросто разобраться. Но в этих логах вам нужно искать записи, которые появляются при попытке входа в систему. Ищите ту, где указан путь /login, а не /t/en-narratives-about/96.json.
Если вам нужна платная поддержка для вашего сайта с самостоятельным размещением, вы можете связаться со мной напрямую — либо через личные сообщения, либо используя мои контактные данные в профиле.
Спасибо за помощь в навигации по этому вопросу. Моя попытка входа после создания пользователя администратора с помощью rake admin:create выглядит так:
Started GET "/session/passkey/challenge.json" for 179.210.195.226 at 2025-01-24 21:13:59 +0000
Processing by SessionController#passkey_challenge as JSON
Completed 200 OK in 4ms (Views: 0.2ms | ActiveRecord: 0.0ms (0 queries, 0 cached) | GC: 2.0ms)
Started GET "/t/en-narratives-about/96.json" for 34.127.96.150 at 2025-01-24 21:14:00 +0000
Processing by TopicsController#show as JSON
Parameters: {"slug"=>"en-narratives-about", "topic_id"=>"96"}
Completed 500 Internal Server Error in 35ms (ActiveRecord: 0.0ms (0 queries, 0 cached) | GC: 0.7ms)
Started POST "/session" for 179.210.195.226 at 2025-01-24 21:14:05 +0000
Processing by SessionController#create as */*
Parameters: {"login"=>"martim", "password"=>"[FILTERED]", "second_factor_method"=>"1", "timezone"=>"America/Sao_Paulo"}
Started GET "/t/en-narratives-about/96.json" for 34.127.96.150 at 2025-01-24 21:14:06 +0000
Processing by TopicsController#show as JSON
Parameters: {"slug"=>"en-narratives-about", "topic_id"=>"96"}
Completed 200 OK in 195ms (Views: 0.1ms | ActiveRecord: 0.0ms (0 queries, 0 cached) | GC: 4.3ms)
Я также вижу ваши попытки:
Started GET "/session/hp.json" for 174.50.213.142 at 2025-01-24 20:58:53 +0000
Processing by SessionController#get_honeypot_value as JSON
Completed 200 OK in 5ms (Views: 0.2ms | ActiveRecord: 0.0ms (0 queries, 0 cached) | GC: 0.0ms)
Started GET "/u/check_username?username=Jay_Pfaffman&email=jay%40literatecomputing.com" for 174.50.213.142 at 2025-01-24 20:58:53 +0000
Processing by UsersController#check_username as JSON
Parameters: {"username"=>"Jay_Pfaffman", "email"=>"jay@literatecomputing.com"}
Completed 200 OK in 4ms (Views: 0.2ms | ActiveRecord: 0.0ms (0 queries, 0 cached) | GC: 0.0ms)
До этого я вижу случаи:
Started GET "/session/email-login/36ac7e1c52851f1b5c76894b04fd3c4d.json" for 31.186.166.197 at 2025-01-24 20:23:25 +0000
Processing by SessionController#email_login_info as JSON
Parameters: {"token"=>"36ac7e1c52851f1b5c76894b04fd3c4d"}
Completed 200 OK in 6ms (Views: 0.1ms | ActiveRecord: 0.0ms (0 queries, 0 cached) | GC: 0.0ms)
и
Started GET "/session/hp.json" for 174.50.213.142 at 2025-01-24 21:02:05 +0000
Processing by SessionController#get_honeypot_value as JSON
Completed 200 OK in 2ms (Views: 0.1ms | ActiveRecord: 0.0ms (0 queries, 0 cached) | GC: 0.0ms)
Как вы думаете, чистая установка + некоторая конфигурация могли бы помочь здесь? Я восстановил резервную копию сразу после того, как форум стал доступен.
Не совсем понимаю, о чём это. Вы настроили ключ доступа (passkey) для своего пользователя? Включена ли у вас двухфакторная аутентификация на аккаунте? Это обязательно?
Я просто не знаю. Предполагаю, что можно полностью очистить базу данных и проверить, работают ли создание аккаунтов и вход в систему на чистой установке. Это позволит понять, проблема в вашей установке или в базе данных.
Завтра, наверное, попробую чистую установку; теперь, когда я втянулся, это должно быть довольно просто. Но я всё ещё думаю об этом:
Единственные ошибки 500, которые я нашёл в логах, связаны с GET-запросами к “/t/en-narratives-about/96.json”. Не может ли быть, что они мешают? Может, стоит удалить это из БД, чтобы запрос больше не вызывался?
Я понимаю, что создание пользователей сломано, но администратор, созданный через rake admin:create, действительно кажется работающим…
Попробуйте перейти по адресу https://yoursitedomain/u/admin-login и включить безопасный режим перед отправкой письма. Это отключит все плагины, но позволит войти в систему, чтобы вы могли исправить свой плагин. Также работает для OAuth.
Спасибо, попробовал это, но получил то же всплывающее окно с ошибкой 500, как и выше… Логи этой попытки:
Started GET "/session/email-login/058db4bbc47396be096cf7bed508c23e?safe_mode=no_plugins,no_themes" for 179.210.195.226 at 2025-01-27 13:04:30 +0000
Processing by SessionController#email_login_info as HTML
Parameters: {"safe_mode"=>"no_plugins,no_themes", "token"=>"058db4bbc47396be096cf7bed508c23e"}
Rendered layout layouts/application.html.erb (Duration: 54.6ms | GC: 1.2ms)
Completed 200 OK in 62ms (Views: 56.0ms | ActiveRecord: 0.0ms (0 queries, 0 cached) | GC: 1.2ms)
Started GET "/svg-sprite/forum.imaginerio.org/svg--ebd30ca654fdbd40604e7a7f5127b1bce16eb12b.js" for 179.210.195.226 at 2025-01-27 13:04:30 +0000
Processing by SvgSpriteController#show as */*
Parameters: {"hostname"=>"forum.imaginerio.org", "theme_id"=>"", "version"=>"ebd30ca654fdbd40604e7a7f5127b1bce16eb12b"}
Completed 200 OK in 5ms (Views: 0.5ms | ActiveRecord: 0.0ms (0 queries, 0 cached) | GC: 0.0ms)
Started GET "/session/email-login/058db4bbc47396be096cf7bed508c23e.json" for 179.210.195.226 at 2025-01-27 13:04:30 +0000
Processing by SessionController#email_login_info as JSON
Parameters: {"token"=>"058db4bbc47396be096cf7bed508c23e"}
Completed 200 OK in 253ms (Views: 0.2ms | ActiveRecord: 0.0ms (0 queries, 0 cached) | GC: 0.7ms)
Started GET "/session/csrf" for 179.210.195.226 at 2025-01-27 13:04:34 +0000
Processing by SessionController#csrf as JSON
Completed 200 OK in 5ms (Views: 1.1ms | ActiveRecord: 0.0ms (0 queries, 0 cached) | GC: 0.0ms)
Started POST "/session/email-login/058db4bbc47396be096cf7bed508c23e" for 179.210.195.226 at 2025-01-27 13:04:34 +0000
Processing by SessionController#email_login as */*
Parameters: {"second_factor_method"=>"1", "timezone"=>"America/Sao_Paulo", "token"=>"058db4bbc47396be096cf7bed508c23e"}
Completed 500 Internal Server Error in 182ms (ActiveRecord: 0.0ms (0 queries, 0 cached) | GC: 1.4ms)
Похоже, что проблема возникает в SessionController#email_login при значении “second_factor_method”=>“1”?
Только что попробовал это, и создание новых учётных записей прошло успешно. Похоже, что именно восстановление из резервной копии нарушило работу входа. Мог ли мой файл .tar->tar.gz что-то повредить? Сделает ли настройка OAuth до восстановления какую-либо разницу, или она будет перезаписана при восстановлении?
Честно говоря, текст немного запутывает. В нём сказано, что это потребует от пользователей использовать двухфакторную аутентификацию, но также указано, что пользователи, у которых двухфакторная аутентификация уже включена, не смогут входить через внешнюю аутентификацию? Получается, что это ограничивает вход только учётными записями форума и отключает внешние?
Кажется, я решил проблему. У меня была отключена рассылка писем для пользователей вне команды. Изменение этого параметра через SiteSetting.disable_emails = "no", похоже, помогло! Спасибо всем за поддержку. Всё ещё не совсем понятно, почему это вызывало такие проблемы (я получал письмо при создании администратора через консоль, и непонятно, почему отключение писем могло повлиять на вход зарегистрированного пользователя), но сейчас всё в порядке