特定のバージョンを実行しているローカルDiscourseインスタンスにWP Discourseを接続する

WordPress 6.7.2 および php-fpm-8.3.17-1.fc41.x86_64 にこのプラグインをインストールしようとしましたが、動作しません。「オプションの保存」をクリックすると、ログに次のエラーが表示されます。

[2025-02-21 17:15:13] connection.INFO: check_connection_status.failed_to_connect {"error":"wpdc_response_error","message":"Discourse から無効な応答が返されました","http_code":"","http_body":""}

/var/log/php-fpm/www-error.log にも同様のエラーが表示されます。

[21-Feb-2025 17:14:42 UTC] PHP Warning:  Undefined array key "url" in /wordpress/wp-content/plugins/wp-discourse/lib/discourse.php on line 301

Report - WP-Discourse 2.5.9 - PluginTests.com の「スモークテスト」でも同じエラーが報告されているようです。

編集:Undefined url エラーについては、これは Web フォームが完了する前の初期エラーだったようです。しかし、「オプションの保存」ボタンをクリックするたびに wpdc_response_error が繰り返し発生しています。

編集2:Discourse 側で 403 Forbidden が発生していますが、WordPress サイトからの接続が拒否される理由が明確ではありません。curl で同じ API キーを正常に使用できます。

Completed 403 Forbidden in 33ms (Views: 0.3ms | ActiveRecord: 15.1ms (2 queries, 0 cached) | GC: 2.2ms)

Discourse 3.5.0.beta1-dev を開発モードで実行しています。

編集3:このバージョンの Discourse には API キーの特別な WordPress 権限があることがわかりました。「グローバル」の代わりに「選択的」を使用し、WordPress の下のボックスをチェックすると、403 Forbidden エラーが解消されました。しかし、WordPress に送信される空/無効な応答は引き続き発生しています。

Delivering messages [] to client d9fbb33f11ed404bbc361c459802c87d for user 1 (chunked)

WordPress プラグインで古いバージョンの Discourse を使用する必要があるようです。どのバージョンまで動作しますか?

Gregory_Bartholomewさん、こんにちは。問題の原因を突き止めましょう。

Discourseの最新バージョンに対応しています。

Discourseを「開発モード」で実行しているとは、ローカルで実行しているということですか?そうでない場合は、どのような環境で実行していますか?

Granular権限を持つキーを使用する前に、最初の投稿のビデオに示されているように、Globalキーを試していただけますか?

承知しました。現在 Discourse を再インストールしようとしています。テストのためにバージョン 3.3.0 をチェックアウトしました。

Docker コンテナが ZFS ファイルシステムで正常にビルドされない ZFS のバグ (pnpm issue 7024) のため、Docker コンテナを使用する代わりにローカルに Discourse を インストール しようとしています。Discourse をローカルにインストールすると、pnpm install を実行する前に .npmrcpackage-import-method=hardlink を追加することで、ZFS のバグを回避できます。

RAILS_ENV=development を使用していました。現在 RAILS_ENV=production で再試行します。

また、上記でリンクしたガイドを Fedora Linux で動作するように修正しようとしています。

編集: バージョン 3.3.0 ではあまりうまくいっていません。

$ pnpm install
 WARN  package.json の "workspaces" フィールドは pnpm ではサポートされていません。代わりに "pnpm-workspace.yaml" ファイルを作成してください。
 ERR_PNPM_INVALID_SELECTOR  "**/unset-value" セレクターを解析できません

バージョン 3.4.0 で再度試してみます。:confused:

Discourse をバージョン 3.4.0 に再インストールしました。

しかし、本番モードで実行させることができませんでした。理由はよくわかりません。「おっと…」と表示されただけで、ログにはほとんど何も表示されませんでした。プロキシ設定に問題があったのかもしれませんが、確信はありません。

とにかく、RAILS_ENV を「development」に戻したところ、起動しました。しかし、WordPress から接続しようとすると、同じエラーが発生します。

[2025-02-21 22:11:06] connection.INFO: check_connection_status.failed_to_connect {"error":"wpdc_response_error","message":"Discourse から無効な応答が返されました","http_code":"","http_body":""}

Discourse にクエリがヒットしているのは確認できるのですが、なぜ動作しないのか理解できません。

GET "/site.json" for 000.123.456.789 at 2025-02-21 16:11:05 -0600
10:11 pm
Processing by SiteController#site as JSON
10:11 pm
ApiKey Load (9.0ms) SELECT "api_keys".* FROM "api_keys" WHERE (revoked_at IS NULL) AND "api_keys"."key_hash" = '3f27a89fedae42123b9ad596fae6c06d36748f53bd241213941083af49cf5e46' ORDER BY "api_keys"
10:11 pm
ApiKeyScope Load (10.6ms) SELECT "api_key_scopes".* FROM "api_key_scopes" WHERE "api_key_scopes"."api_key_id" = 1
10:11 pm
User Load (8.1ms) SELECT "users"."id", "users"."username", "users"."created_at", "users"."updated_at", "users"."name", "users"."last_posted_at", "users"."active", "users"."username_lower", "users".
10:11 pm
UserOption Load (6.1ms) SELECT "user_options"."user_id", "user_options"."mailing_list_mode", "user_options"."email_digests", "user_options"."external_links_in_new_tab", "user_options"."enable_quoti
10:11 pm
Group Load (8.6ms) SELECT "groups"."id", "groups"."name", "groups"."flair_icon", "groups"."flair_upload_id", "groups"."flair_bg_color", "groups"."flair_color" FROM "groups" ORDER BY groups.name ASC
10:11 pm
(7.0ms) SELECT "categories"."id" FROM "categories" WHERE "categories"."read_restricted" = FALSE
10:11 pm
(10.7ms) SELECT "categories"."id" FROM "categories" WHERE "categories"."read_restricted" = TRUE
10:11 pm
Topic Count (4.1ms) SELECT COUNT(*) FROM (SELECT 1 AS one FROM "topics" WHERE "topics"."deleted_at" IS NULL LIMIT 16) subquery_for_count
10:11 pm
(6.1ms) SELECT "users"."id" FROM "users" INNER JOIN "user_auth_tokens" ON "user_auth_tokens"."user_id" = "users"."id" WHERE "users"."admin" = TRUE AND (users.id > 0) ORDER BY user_auth_tokens.crea
10:11 pm
(8.5ms) SELECT "categories"."id" FROM "categories" WHERE "categories"."topic_featured_link_allowed" = TRUE
10:11 pm
ColorScheme Load (6.8ms) SELECT "color_schemes".* FROM "color_schemes" WHERE (color_schemes.id NOT IN (SELECT color_scheme_id FROM theme_color_schemes)) AND "color_schemes"."id" = 1 LIMIT 1
10:11 pm
ColorSchemeColor Load (7.8ms) SELECT "color_scheme_colors".* FROM "color_scheme_colors" WHERE "color_scheme_colors"."color_scheme_id" = 1 ORDER BY id ASC
10:11 pm
(6.0ms) SELECT "group_users"."group_id" FROM "group_users" WHERE "group_users"."user_id" = -1
10:11 pm
(8.0ms) SELECT "category_users"."category_id", "category_users"."notification_level" FROM "category_users" WHERE "category_users"."user_id" = -1
10:11 pm
UserField Load (9.5ms) SELECT "user_fields"."id", "user_fields"."name", "user_fields"."created_at", "user_fields"."updated_at", "user_fields"."editable", "user_fields"."description", "user_fields".
10:11 pm
Completed 200 OK in 256ms (Views: 0.3ms | ActiveRecord: 116.4ms (15 queries, 0 cached) | GC: 94.6ms)

しばらくこの件から離れようと思いますが、何か問題の原因について心当たりがあれば、ヒントをいただけると幸いです。:slightly_smiling_face:

この会話を独立したトピックに移動しました。あなたが対処している問題は、標準的なセットアップを実行している他の人々を混乱させる可能性があるためです。

さて、要約すると、

  1. ローカルマシンでDiscourseを実行しています。
  2. 特定のバージョンを実行しています。現在3.4.0を実行しています。
  3. ローカルインスタンスをリモートのWordpressインスタンスに接続しようとしています。

これらはすべて間違っていますか?また、以下の点を明確にしていただけますか?

  1. ローカルマシンからリモートのWordpressインスタンスにどのように接続していますか?ngrokを使用していますか?
  2. 最新バージョンではなく、特定のバージョンのDiscourseを実行しているのはなぜですか?
  3. ここでの全体的な目標は何ですか?
「いいね!」 2

はい。

はい。

私のテストWordPressインスタンスもローカルで実行されています。

いいえ、すべてローカルです。異なるIPアドレスでリッスンしている2つのhttpdインスタンスを実行しています(1つはWordPress用、もう1つはDiscourse用)。WordPressインスタンスはホストシステム上で直接実行されており、Discourseインスタンスはsystemd-nspawnコンテナで実行されています。ホストシステムとコンテナの両方でFedora Linux 41を実行しています。

最初にDockerインスタンスを試しましたが、テストマシンでビルドできませんでした。エラーメッセージを調査したところ、ZFSファイルシステムに関するオープンなバグレポートが見つかりました。Dockerイメージを変更して回避策を適用する方法がわからないため、ソースリポジトリをクローンしてDiscourseをビルドする方法の手順を見つけました。

最初に最新バージョン(3.5.0.beta1-dev)をビルドしましたが、ビデオで示されている動作とは異なりました。WordPressがAPIキーで接続しようとすると(権限が「グローバル」に設定されている場合)、Discourseのログに403 Forbiddenが表示されました。「グラニュラー」に権限を変更し、WordPressのすべてのチェックボックスをオンにすると、クエリはさらに進むことができましたが、WordPressは空または無効な応答を受け取っていました。次に、https://blog.discourse.org/で、宣伝されている最新バージョンが3.4であることを確認しました。そのため、遭遇した問題の一部は、リリース前のバージョンを実行しようとしたためである可能性があると結論付けました。`git checkout v3.3.0`を試しましたが、テストしようとしているWordPressプラグインと完全に互換性があるほど古いと思っていたのですが、システムでビルドできませんでした。そのため、バージョン3.4.0をチェックアウトしたところ、それは(「開発」モードで)動作しているようです。

実際には、WordPress Discourseプラグインを試して慣れたいだけです。Discourseにはまったく関心がありません。テスト対象があれば十分です。仕組みに慣れたら、プラグインを本番サイト(fedoramagazine.org)にインストールし、コメントを本番Discourseインスタンス(discussion.fedoraproject.org)にリダイレクトすることを試みるかもしれません。

「いいね!」 1

このフォーラムで読んだ中で最も悲しいことです!:lolsob:

「いいね!」 1

問題は、ローカルのセットアップとネットワークに関連しているはずです。Discourseのバージョンや、グローバルキーと詳細キーの違いによるものではありません。WordpressとDiscourseをローカルで実行する方法や環境は多岐にわたるため、ローカルアプリ間の相互接続の問題をデバッグするのは困難です。以下に役立つヒントをいくつか紹介します。

  1. 常に最新バージョンのDiscourse、Wordpress、およびWP Discourseプラグインを実行してください。
  2. WP Discourseのlocalhost Discourse URLで、ポート4200ではなくポート3000を使用してください。
  3. 作成したキーが、Publishing Usernameとして設定した管理者ユーザー名で使用できることを確認してください。

これは、ローカルのWordpressとDiscourseが相互に接続されている私のローカルセットアップの外観です。Wordpressをローカルで実行するためにMAMP Proを使用しています。


「いいね!」 3

うまくいきました!!!

ポート3000に直接接続するというヒントをありがとう。それが違いを生んだようです。

注意点として(少なくとも私のローカル構成では)、ember-cliを起動する前にALLOW_EMBER_CLI_PROXY_BYPASS=1を設定する必要もありました。

「いいね!」 3