リストア後、フォーラムから締め出された

macOSの.tarダウンロードでバックアップ復元中にいくつか問題が発生しましたが、なんとか機能させることができました。サイトは古い投稿すべてを含めてforum.imaginerio.orgで公開されていますが、デプロイ中に設定した管理者アカウントでも、古いフォーラムの認証情報でもログインできません。現在ブラウザでは以下のようなエラーが表示されます。

Oops
The software powering this discussion forum encountered an unexpected problem. We apologize for the inconvenience.

Detailed information about the error was logged, and an automatic notification generated. We'll take a look at it.

No further action is necessary. However, if the error condition persists, you can provide additional detail, including steps to reproduce the error, by posting a discussion topic in the site's feedback category.

しかし、プライベートウィンドウでは表示されます。Googleで接続しようとすると「何かがうまくいきませんでした。このメールは既に使用されている可能性があります」となり、Githubで接続しようとすると上記のエラーが発生します。パスワードリセットリンクを試しましたが、discourse-doctorから送信されたテストメールは正常に届くにもかかわらず、メールは届きません。

確認できるログや、実行中のコンテナで実行できるその他の操作はありますか?

これは以前ホストされていたインスタンスで、バックアップをダウンロードして自分でホストしているものですが、関連があるかどうかはわかりません。

しばらく自分の頭で考えてみた結果、セルフホストインスタンスでGoogle/Githubログインを設定しなかったことが原因だと結論付けました。どなたか確認していただけますか?もしそうなら、コンソールから設定することは可能でしょうか?

このエラーとは異なるエラーが表示されるはずです。

実際、私には機能しています。

GitHubも同様です。

管理者のバックドアログイン を使用して、エラーの詳細を /logs で確認することをお勧めします。

「いいね!」 4

マイケルさん、ありがとうございます。同じところまでたどり着くことはできましたが、実際にアカウントを作成しようとすると、何か問題が発生したか、このメールアドレスはすでに登録されている可能性があります(実際には登録されていません)と表示されます。バックドアログインを試しましたが、「メールを送信しました」と表示されても、受信トレイには何も届きません(これも、discourse-doctor のテストメールでは届きます)。以前、チームメンバー以外のメールを何らかの理由で無効にしていたことを思い出しましたが、使用しているメールは間違いなくチームのものです。

まだサブスクリプションをキャンセルしていません。新しい/別の管理者アカウントと設定でこれを解決できる場合、カスタマーサポートに助けを求めることはできますか?

We can help you with email on a hosted site, but not on for self-hosted.

You can try using rake admin:create from the container to create a new admin account and log into that instead.

「いいね!」 3

このフォーラムはホストされたサイトから復元されたもので、サブスクリプションはまだ有効です。同じドメインを使用しているため、ホストされたサイトは公開されていませんが、まだ実行されていると思います。これは、悪い設定のためにロックアウトされており、元に戻してから、新しいバックアップをエクスポートして復元できるのではないかという考えに基づいています。

これはほぼうまくいったように思えます。管理者アカウントを作成することはできましたが、ログインしようとすると「不明なエラー」(コンソールでは500)が表示されます。ログインリンクを要求してみましたが、メールは正常に届きましたが、その後また:

コンテナ内のレールログ(/shared/logs/rails)でエラーの詳細を確認できます。

「いいね!」 1

production.log でこれらがたくさん見つかりました。

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

このスラッグは nginx/access.log にも表示されます。

[24/Jan/2025:20:10:19 +0000] "forum.imaginerio.org" 179.210.195.226 "POST /message-bus/a6ddfc6d2e3c4937b5eaa52ea8fdce33/poll?dlp=t HTTP/2.0" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36" "-" 200 424 "https://forum.imaginerio.org/session/email-login/36ac7e1c52851f1b5c76894b04fd3c4d" 0.009 0.009 "-" "-" "-" "-" "-" "-" "-"
[24/Jan/2025:20:10:20 +0000] "forum.imaginerio.org" 34.127.96.150 "GET /t/en-narratives-about/96.json HTTP/1.1" "axios/0.21.1" "-" 500 295 "-" 0.041 0.041 "-" "-" "-" "-" "-" "-" "-"
[24/Jan/2025:20:10:23 +0000] "forum.imaginerio.org" 179.210.195.226 "POST /message-bus/d2157f777d0847eb882e0f68ab50a5f2/poll?dlp=t HTTP/2.0" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36" "-" 200 424 "https://forum.imaginerio.org/" 0.005 0.005 "-" "-" "-" "-" "-" "-" "-"
[24/Jan/2025:20:10:25 +0000] "forum.imaginerio.org" 34.127.96.150 "GET /t/en-narratives-about/96.json HTTP/1.1" "axios/0.21.1" "-" 500 295 "-" 0.043 0.043 "-" "-" "-" "-" "-" "-" "-"

他に特筆すべきことはあまりありませんが、/log/var-log での admin:create の確認は注目に値するかもしれません。

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<div>\n  <h1 class=\"title\">おっと!このページは存在しないか、プライベートです。</h1>\n\n    <a href=\"/login\" class='btn btn-primary'>\n  <svg class=\"fa d-icon svg-icon svg-node\" aria-hidden=\"true\">\n  <svg id=\"user\" viewBox=\"0 0 448 512\">\n  <path 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\"/>\n</svg>\n</svg>\nログイン\n</a>\n\n</div>\n\n\n\n<div class=\"row page-not-found-topics\">\n    <div class=\"recent-topics\">\n      <h2 class=\"recent-topics-title\">最近のトピック</h2>\n        <div class='not-found-topic'>\n          <a href=\"/t/topografia-do-rio-antigo-heightmap/152\">古代の川の地形(ハイトマップ)</a><a class='badge-category__wrapper ' href='/c/imaginerio/9'>\n  <span data-category-id='9' style='--category-badge-color: #25AAE2; --category-badge-text-color: #FFFFFF;' data-drop-close='true' class='badge-category ' title='ここではimagineRioについてチャットできます。'>\n    <span class='badge-category__name'>imagineRio</span>\n  </span>\n</a>\n        </div>\n        <div class='not-found-topic'>\n          <a href=\"/t/titulo-e-localizacao-nao-correspondem/149\">タイトルと場所が一致しません</a><a class='badge-category__wrapper ' href='/c/imaginerio/9'>\n  <span data-category-id='9' style='--category-badge-color: #25AAE2; --category-badge-text-color: #FFFFFF;' data-drop-close='true' class='badge-category ' title='ここではimagineRioについてチャットできます。'>\n    <span class='badge-category__name'>imagineRio</span>\n  </span>\n</a>\n        </div>\n        <div class='not-found-topic'>\n          <a href=\"/t/imagens-que-nao-correspondem-a-localizacao-no-mapa/148\">地図上の場所と一致しない画像</a><a class='badge-category__wrapper ' href='/c/features/12'>\n  <span data-category-id='12' style='--category-badge-color: #0088CC; --category-badge-text-color: #FFFFFF;' data-drop-close='true' class='badge-category ' title='地図でさらに多くのオプションが必要ですか?新しいトピックを作成し、必要なデータを提供して改善を提案してください。'>\n    <span class='badge-category__name'>改善提案</span>\n  </span>\n</a>\n        </div>\n        <div class='not-found-topic'>\n          <a href=\"/t/problema-no-login/143\">ログインの問題</a><a class='badge-category__wrapper ' href='/c/bugs/10'>\n  <span data-category-id='10' style='--category-badge-color: #0E76BD; --category-badge-text-color: #FFFFFF;' data-drop-close='true' class='badge-category ' title='地図で問題を見つけましたか?新しいトピックを作成し、必要なデータを提供して問題を報告してください。'>\n    <span class='badge-category__name'>問題を報告</span>\n  </span>\n</a>\n        </div>\n        <div class='not-found-topic'>\n          <a href=\"/t/add-the-complete-collection-of-jean-baptiste-debret/134\">ジャン=バティスト・デブレの全コレクションを追加</a><a class='badge-category__wrapper ' href='/c/features/12'>\n  <span data-category-id='12' style='--category-badge-color: #0088CC; --category-badge-text-color: #FFFFFF;' data-drop-close='true' class='badge-category ' title='地図でさらに多くのオプションが必要ですか?新しいトピックを作成し、必要なデータを提供して改善を提案してください。'>\n    <span class='badge-category__name'>改善提案</span>\n  </span>\n</a>\n        </div>\n        <div class='not-found-topic'>\n          <a href=\"/t/publicacao-de-conteudo-do-youtube/131\">YouTubeコンテンツの公開</a><a class='badge-category__wrapper ' href='/c/features/12'>\n  <span data-category-id='12' style='--category-badge-color: #0088CC; --category-badge-text-color: #FFFFFF;' data-drop-close='true' class='badge-category ' title='地図でさらに多くのオプションが必要ですか?新しいトピックを作成し、必要なデータを提供して改善を提案してください。'>\n    <span class='badge-category__name'>改善提案</span>\n  </span>\n</a>\n        </div>\n        <div class='not-found-topic'>\n          <a href=\"/t/bug-na-marcacao-nos-mapas/130\">地図上のマーキングのバグ</a><a class='badge-category__wrapper ' href='/c/bugs/10'>\n  <span data-category-id='10' style='--category-badge-color: #0E76BD; --category-badge-text-color: #FFFFFF;' data-drop-close='true' class='badge-category ' title='地図で問題を見つけましたか?新しいトピックを作成し、必要なデータを提供して問題を報告してください。'>\n    <span class='badge-category__name'>問題を報告</span>\n  </span>\n</a>\n        </div>\n        <div class='not-found-topic'>\n          <a href=\"/t/copiar-colar-a-posicao-do-mapa/129\">地図上の位置をコピー/ペースト</a><a class='badge-category__wrapper ' href='/c/features/12'>\n  <span data-category-id='12' style='--category-badge-color: #0088CC; --category-badge-text-color: #FFFFFF;' data-drop-close='true' class='badge-category ' title='地図でさらに多くのオプションが必要ですか?新しいトピックを作成し、必要なデータを提供して改善を提案してください。'>\n    <span class='badge-category__name'>改善提案</span>\n  </span>\n</a>\n        </div>\n        <div class='not-found-topic'>\n          <a href=\"/t/technical-issue-with-image-server/128\">画像サーバーの技術的な問題</a><a class='badge-category__wrapper ' href='/c/bugs/10'>\n  <span data-category-id='10' style='--category-badge-color: #0E76BD; --category-badge-text-color: #FFFFFF;' data-drop-close='true' class='badge-category ' title='地図で問題を見つけましたか?新しいトピックを作成し、必要なデータを提供して問題を報告してください。'>\n    <span class='badge-category__name'>問題を報告</span>\n  </span>\n</a>\n        </div>\n        <div class='not-found-topic'>\n          <a href=\"/t/narrativas-problemas-de-acesso-a-plataforma/125\">ナラティブ:プラットフォームへのアクセス問題</a><a class='badge-category__wrapper ' href='/c/bugs/10'>\n  <span data-category-id='10' style='--category-badge-color: #0E76BD; --category-badge-text-color: #FFFFFF;' data-drop-close='true' class='badge-category ' title='地図で問題を見つけましたか?新しいトピックを作成し、必要なデータを提供して問題を報告してください。'>\n    <span class='badge-category__name'>問題を報告</span>\n  </span>\n</a>\n        </div>\n      <a href=\"/latest\" class=\"btn btn-default\">もっと見る…</a>\n    </div>\n</div>\n\n\n  <div class=\"row\">\n    <div class=\"page-not-found-search\">\n      <form action='/search' id='discourse-search'>\n        <label for=\"search-input\">このサイトを検索</label>\n        <input type=\"text\" id=\"search-input\" name=\"q\" value=\"en narratives about\">\n        <button class=\"btn btn-primary\">検索</button>\n      </form>\n    </div>\n  </div>\n\n  <script defer src=\"/assets/onpopstate-handler-1ea3e951679a33d36b6c5f2f8d98016e9908c4af9110736a24b159542c83a9b8.js\" data-discourse-entrypoint=\"onpopstate-handler\" nonce=\"bJfYSa08sEXVGC4MEMEU13WAq\">\n  </script>\n\n",
    "group": null
  }
}

はい。ユーザー作成に問題があるようです。特定するのは難しいでしょう。しかし、ログではログインを試みたときに発生するログを探す必要があります。/t/en-narratives-about/96.json ではなく /login パスを持つものを探しています。

セルフホストサイトの有料サポートをご希望の場合は、直接ご連絡ください。PMでも、プロフィールに連絡先情報があります。

「いいね!」 1

rake admin:create で管理者ユーザーを作成した後、ログインを試みた際のログは以下の通りです。\n```
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)

あなたの試みも確認できます。\n```
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)

その前には、以下のログが見られます。\n```
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)

および\n```
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)

フォーラムがオンラインになった直後にバックアップを復元しましたが、ここでクリーンインストールといくつかの設定変更で解決できると思いますか?

これは何のことかわかりません。ユーザーにパスキーを設定しましたか?アカウントに2要素認証を設定していますか?必須ですか?

わかりません。データベースをワイプして、クリーンインストールでアカウント作成とログインが機能するかどうかを確認できると思います。これにより、インストール自体の問題なのか、データベースの問題なのかがわかります。

たとえば、次のようなコマンドを実行します。

cd /var/discourse
./launcher stop app
rm -rf shared/standalone/postgres*
./launcher rebuild app

そして、アカウントを作成し、メールを受信し、ログインが機能することを確認します。

移行元のシステムにインストールされていたプラグインをすべてインストールする必要がある場合があります。

production_errors.logを確認しましたか?

空のようです。

おそらく明日、再インストールを試してみます。やり方がわかったので、かなり簡単になるはずです。しかし、これについて考えています。

ログで見つかった500エラーは、「/t/en-narratives-about/96.json」のGETに関連するものだけです。それらが邪魔になる方法はないのでしょうか?おそらく、データベースからこれを削除して、呼び出されないようにしますか?

ユーザー作成が壊れていることは理解できますが、rake admin:createで作成された管理者は「機能している」ように見えます…

https://yoursitedomain/u/admin-login にアクセスして、メールを送信する前にセーフモードをオンにしてみてください。これにより、すべてのプラグインが無効になりますが、ログインしてプラグインを修正することもできます。OAuth でも機能します。

「いいね!」 1

ありがとうございます。これを試しましたが、上記と同じ「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)

失敗しているのは、「second_factor_method」=>「1」の SessionController#email_login のようですね。

これを試しましたが、新しいアカウントを正常に作成できました。バックアップの復元がログインを台無しにしたようです。.tar->.tar.gz が何かを破損させた可能性がありますか?復元する前に OAuth を設定しても違いはありますか、それとも復元によって上書きされますか?

2要素認証を必須とするシステム設定がオンになっていますか?

Enforce second factor on external auth をオンにし、Enforce second factor をオフにしています。

このテキストは少し紛らわしいです。ユーザーは 2 要素認証を使用する必要があると書かれていますが、2 要素認証が有効になっているユーザーは外部認証でログインできなくなるとも書かれていますか?つまり、フォーラムアカウントへのログインのみを許可し、外部アカウントを無効にするということですか?

解決できたようです。チームメンバー以外にはメールを無効にしていたのですが、SiteSetting.disable_emails = "no" で変更したところ、うまくいきました!皆さん、サポートありがとうございました。なぜこれがすべての混乱を引き起こしていたのか(管理者をコンソール経由で作成した際にはメールを受信したのですが、メールを無効にすることが登録済みユーザーのログインにどのように影響するのか分かりません)はまだ不明ですが、すべてうまくいきました :slight_smile:

「いいね!」 2