ActivityPubプラグイン

このプラグインをインストールしようとすると、/logs で常に次の警告が表示されます。

[Discourse Activity Pub] https://futarino.online/ap/actor/a3838865a250342cf09f7907b653b9d1 failed to schedule https://futarino.online/ap/activity/2628ea98d33a52fd2412f9d59541bb91 for delivery: no recipients

バックトレース:

/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/delivery_handler.rb:73:in `log_failure' 
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/delivery_handler.rb:31:in `can_deliver?' 
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/delivery_handler.rb:16:in `perform' 
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/delivery_handler.rb:23:in `perform' 
/var/www/discourse/plugins/discourse-activity-pub/app/models/concerns/discourse_activity_pub/ap/model_callbacks.rb:143:in `activity_pub_deliver_activity' 
/var/www/discourse/plugins/discourse-activity-pub/app/models/concerns/discourse_activity_pub/ap/model_callbacks.rb:33:in `perform_activity_pub_activity' 
/var/www/discourse/plugins/discourse-activity-pub/plugin.rb:494:in `block (2 levels) in activate!' 
/var/www/discourse/lib/plugin/instance.rb:316:in `public_send' 
/var/www/discourse/lib/plugin/instance.rb:316:in `block (2 levels) in add_to_class' 
/var/www/discourse/plugins/discourse-activity-pub/plugin.rb:502:in `block (2 levels) in activate!' 
/var/www/discourse/lib/plugin/instance.rb:316:in `public_send' 
/var/www/discourse/lib/plugin/instance.rb:316:in `block (2 levels) in add_to_class' 
/var/www/discourse/plugins/discourse-activity-pub/app/controllers/discourse_activity_pub/post_controller.rb:13:in `schedule' 
actionpack-7.0.7/lib/action_controller/metal/basic_implicit_render.rb:6:in `send_action' 
actionpack-7.0.7/lib/abstract_controller/base.rb:215:in `process_action' 
actionpack-7.0.7/lib/action_controller/metal/rendering.rb:165:in `process_action' 
actionpack-7.0.7/lib/abstract_controller/callbacks.rb:234:in `block in process_action' 
activesupport-7.0.7/lib/active_support/callbacks.rb:118:in `block in run_callbacks' 
/var/www/discourse/app/controllers/application_controller.rb:421:in `block in with_resolved_locale' 
i18n-1.14.1/lib/i18n.rb:322:in `with_locale' 
/var/www/discourse/app/controllers/application_controller.rb:421:in `with_resolved_locale' 
activesupport-7.0.7/lib/active_support/callbacks.rb:127:in `block in run_callbacks' 
activesupport-7.0.7/lib/active_support/callbacks.rb:138:in `run_callbacks' 
actionpack-7.0.7/lib/abstract_controller/callbacks.rb:233:in `process_action' 
actionpack-7.0.7/lib/action_controller/metal/rescue.rb:23:in `process_action' 
actionpack-7.0.7/lib/action_controller/metal/instrumentation.rb:67:in `block in process_action' 
activesupport-7.0.7/lib/active_support/notifications.rb:206:in `block in instrument' 
activesupport-7.0.7/lib/active_support/notifications/instrumenter.rb:24:in `instrument' 
activesupport-7.0.7/lib/active_support/notifications.rb:206:in `instrument' 
actionpack-7.0.7/lib/action_controller/metal/instrumentation.rb:66:in `process_action' 
actionpack-7.0.7/lib/action_controller/metal/params_wrapper.rb:259:in `process_action' 
activerecord-7.0.7/lib/active_record/railties/controller_runtime.rb:27:in `process_action' 
actionpack-7.0.7/lib/abstract_controller/base.rb:151:in `process' 
actionview-7.0.7/lib/action_view/rendering.rb:39:in `process' 
rack-mini-profiler-3.1.1/lib/mini_profiler/profiling_methods.rb:111:in `block in profile_method' 
actionpack-7.0.7/lib/action_controller/metal.rb:188:in `dispatch' 
actionpack-7.0.7/lib/action_controller/metal.rb:251:in `dispatch' 
actionpack-7.0.7/lib/action_dispatch/routing/route_set.rb:49:in `dispatch' 
actionpack-7.0.7/lib/action_dispatch/routing/route_set.rb:32:in `serve' 
actionpack-7.0.7/lib/action_dispatch/journey/router.rb:50:in `block in serve' 
actionpack-7.0.7/lib/action_dispatch/journey/router.rb:32:in `each' 
actionpack-7.0.7/lib/action_dispatch/journey/router.rb:32:in `serve' 
actionpack-7.0.7/lib/action_dispatch/routing/route_set.rb:852:in `call' 
railties-7.0.7/lib/rails/engine.rb:530:in `call' 
railties-7.0.7/lib/rails/railtie.rb:226:in `public_send' 
railties-7.0.7/lib/rails/railtie.rb:226:in `method_missing' 
actionpack-7.0.7/lib/action_dispatch/routing/mapper.rb:19:in `block in <class:Constraints>' 
actionpack-7.0.7/lib/action_dispatch/routing/mapper.rb:48:in `serve' 
actionpack-7.0.7/lib/action_dispatch/journey/router.rb:50:in `block in serve' 
actionpack-7.0.7/lib/action_dispatch/journey/router.rb:32:in `each' 
actionpack-7.0.7/lib/action_dispatch/journey/router.rb:32:in `serve' 
actionpack-7.0.7/lib/action_dispatch/routing/route_set.rb:852:in `call' 
/var/www/discourse/lib/middleware/omniauth_bypass_middleware.rb:74:in `call' 
rack-2.2.8/lib/rack/tempfile_reaper.rb:15:in `call' 
rack-2.2.8/lib/rack/conditional_get.rb:40:in `call' 
rack-2.2.8/lib/rack/head.rb:12:in `call' 
actionpack-7.0.7/lib/action_dispatch/http/permissions_policy.rb:38:in `call' 
/var/www/discourse/lib/content_security_policy/middleware.rb:12:in `call' 
/var/www/discourse/lib/middleware/anonymous_cache.rb:389:in `call' 
/var/www/discourse/lib/middleware/gtm_script_nonce_injector.rb:10:in `call' 
rack-2.2.8/lib/rack/session/abstract/id.rb:266:in `context' 
rack-2.2.8/lib/rack/session/abstract/id.rb:260:in `call' 
actionpack-7.0.7/lib/action_dispatch/middleware/cookies.rb:704:in `call' 
actionpack-7.0.7/lib/action_dispatch/middleware/callbacks.rb:27:in `block in call' 
activesupport-7.0.7/lib/active_support/callbacks.rb:99:in `run_callbacks' 
actionpack-7.0.7/lib/action_dispatch/middleware/callbacks.rb:26:in `call' 
actionpack-7.0.7/lib/action_dispatch/middleware/debug_exceptions.rb:28:in `call' 
actionpack-7.0.7/lib/action_dispatch/middleware/show_exceptions.rb:29:in `call' 
logster-2.13.0/lib/logster/middleware/reporter.rb:40:in `call' 
railties-7.0.7/lib/rails/rack/logger.rb:40:in `call_app' 
railties-7.0.7/lib/rails/rack/logger.rb:27:in `call' 
/var/www/discourse/config/initializers/100-quiet_logger.rb:20:in `call' 
/var/www/discourse/config/initializers/100-silence_logger.rb:29:in `call' 
actionpack-7.0.7/lib/action_dispatch/middleware/remote_ip.rb:93:in `call' 
actionpack-7.0.7/lib/action_dispatch/middleware/request_id.rb:26:in `call' 
/var/www/discourse/lib/middleware/enforce_hostname.rb:24:in `call' 
rack-2.2.8/lib/rack/method_override.rb:24:in `call' 
actionpack-7.0.7/lib/action_dispatch/middleware/executor.rb:14:in `call' 
rack-2.2.8/lib/rack/sendfile.rb:110:in `call' 
actionpack-7.0.7/lib/action_dispatch/middleware/host_authorization.rb:131:in `call' 
rack-mini-profiler-3.1.1/lib/mini_profiler.rb:413:in `call' 
message_bus-4.3.8/lib/message_bus/rack/middleware.rb:60:in `call' 
/var/www/discourse/lib/middleware/request_tracker.rb:233:in `call' 
railties-7.0.7/lib/rails/engine.rb:530:in `call' 
railties-7.0.7/lib/rails/railtie.rb:226:in `public_send' 
railties-7.0.7/lib/rails/railtie.rb:226:in `method_missing' 
rack-2.2.8/lib/rack/urlmap.rb:74:in `block in call' 
rack-2.2.8/lib/rack/urlmap.rb:58:in `each' 
rack-2.2.8/lib/rack/urlmap.rb:58:in `call' 
unicorn-6.1.0/lib/unicorn/http_server.rb:634:in `process_client'
unicorn-6.1.0/lib/unicorn/http_server.rb:739:in `worker_loop'
unicorn-6.1.0/lib/unicorn/http_server.rb:547:in `spawn_missing_workers'
unicorn-6.1.0/lib/unicorn/http_server.rb:143:in `start'
unicorn-6.1.0/bin/unicorn:128:in `<top (required)>'
/var/www/discourse/vendor/bundle/ruby/3.2.0/bin/unicorn:25:in `load' 
/var/www/discourse/vendor/bundle/ruby/3.2.0/bin/unicorn:25:in `<main>' 

また、Mastodon で設定したアカウントが見つかりません。

この問題の解決策はありますか?

その警告が表示されるのは、カテゴリにフォロワーがいないためです。配信が発生するには、少なくとも1人のフォロワーが必要です。

  1. カテゴリ設定からハンドルをコピーします。
  2. Mastodonでそれを検索します(表示されるはずです)。
  3. Mastodonアカウントでフォローします。

それで問題は、検索したのですが、大きな404エラーが出たことです。
効果が出るまで時間がかかるからでしょうか?

概要


ActivityPubのカテゴリ設定はどのようなものですか?スクリーンショット(特にステータスバッジ)を共有していただけますか?このトピックを占有しないように、プライベートメッセージで送っていただけると幸いです。

「いいね!」 2

Fediverseで古いトピックを(今後)投稿する方法はありますか?数千件の返信があるトピックを持っており、それらはフェデレーションされていません。それらのトピックをフェデレーションするにはどうすればよいかわかりません。

管理者は、設定済みのカテゴリ内の個々のトピックの発行をトリガーできるようになりました。これは、投稿のレンチメニューから利用できます。

ただし、古いトピックを一括で公開するシステムは用意されておらず、優先リストにもありません。ソーシャルメディアの性質上、過去の投稿をActivityPubに公開することに多くの関心があるとは思えません。とはいえ、これはrakeタスクで実現可能でしょう。

「いいね!」 6

Mastodon から Discourse に戻る方法はありますか?

リリースノートを Mastodon に自動でトゥートしているので、Discourse にもミラーリングされると素晴らしいです。

「いいね!」 3

現在、これはサポートされていませんが、ロードマップにあり、今後2〜3か月で取り組む予定です。

「いいね!」 4

これらのロードマップは、GitHubのような場所で一般公開されていますか?

「いいね!」 2

はい、すぐにここでアップデートを投稿します。(これまでに機能が追加されたロードマップは、このトピックのさらに数十件前の投稿にあります。)

「いいね!」 4

今後2〜3ヶ月のプラグインの計画は以下の通りです。

  • プラグインのパフォーマンスを改善する(ユーザーインターフェースの変更なし)
  • DiscourseのActivityPub対応カテゴリに、より優れたUI要素を追加する
    • これには、カテゴリのActivityPub統計に関する詳細情報や、ユーザーがActivityPubクライアントでカテゴリをフォローするための簡単なフローが含まれます。
  • Discourseカテゴリが外部アクターをフォローできるようにする
    • これにより、ActivityPubコンテンツをDiscourseカテゴリに同期できるようになります。これには、ActivityPub経由のDiscourse間同期も含まれます。つまり、DiscourseサイトAのカテゴリが、DiscourseサイトBのカテゴリをフォローできるようになります(両方のサイトでプラグインが有効化され、適切に設定されている場合)。
  • バグ修正と既存機能の改善
    • アバター同期の問題や、他のユーザー(スタッフなど)によるAP対応投稿の編集を処理する。
    • 可能であれば、著者変更やウィキに関する現在の制限に対処する。
「いいね!」 17

これは信じられないほどの発展(少なくとも信じられないほどの何かの始まり :-)になる可能性があります。現在、Discourseインスタンスはインターネット上で最も質の高いオンラインミーティングおよびディスカッションの場かもしれませんが、それらはすべて別々の島です。それらの間の何らかのフェデレーションと、場合によっては他の種類のサーバー(意味がある場合)との連携は、新しい窓を開くでしょう。興奮してこれを見ています!

「いいね!」 8

念のため皆さんに知らせておきますが、Discourseのカテゴリが、他のDiscourseカテゴリを含む、Fediverseの任意のアクターをフォローできるようにするPRをマージしました。そうです、これで2つ(または3つ、あるいはそれ以上)のDiscourse間でカテゴリをフェデレーションできるようになりました。このフェーズの一部として、さらにいくつかのPRがパイプラインにありますが、これは大きなものでした。

これは、私のコンピュータ上で実行されている2つのDiscourseインスタンスとMastodonインスタンス間でフェデレーションしているビデオです。

「いいね!」 29

アクティビティパブのアクターをカテゴリではなくタグで割り当てられることを期待しています。これにより、チャット統合プラグインのサポートも機能し、さらにコンテンツのフィルタリングも可能になると考えます。

もう一つの興味深いアイデアは、すべてのactivitypub投稿を管理者の承認待ちキューに入れることです。これにより、グループがトピックがクロス投稿の準備ができているかを確認できるようになります。これは、フェディバースからの返信をフォーラムに自動投稿するのではなく、同様に適用できます。

いずれにしても、この素晴らしいプラグインの開発ありがとうございます。

「いいね!」 7

ActivityPubソフトウェア向けの呼び出しなので、Metaのカテゴリで連携できるものがあるかもしれません Discourse - SocialHub :slight_smile:

「いいね!」 4

プラグインを楽しんでいますが、現在のバージョンでは抜粋の最大長とフォーラムへのリンクの間にバグがあります。抜粋の最大長がリンクの途中で発生した場合、「フォーラムで議論する」リンクのターゲットが奇妙になります。

例:

これは最終的なフォーラムリンクになります:
https://jcheminf.biomedcentral.com/a%E2%80%A6%3Cbr%3E%3Cbr%3E%3Ca%20href=

Rubyには詳しくありませんが、投稿をmaxlengthで切り取るコードは、「フォーラムへのリンク」を追加する前にリンクの途中でないことを確認する必要があります。

「いいね!」 4

コミットfb83e554fd以降、Wikiの制限は解除されたようですが、フェデレーションされたカテゴリでの投稿所有者の変更に対する制限は依然として残っていることに注意します。

投稿所有者を頻繁に変更するわけではありませんが、カテゴリ説明投稿はその例として私にとって重要です。最もアクティブなカテゴリモデレーターを所有者に設定し、それが変更されたら、適切に更新するように促します。これが、私がこれを実装できない最大の制限となっています。

この懸念を生み出すDiscourseとActivityPubのモデルの不一致を認識しています。特権(管理者?)アクション「この投稿をフェデレーション解除する」を実装し、投稿がフェデレーションされている場合は投稿の削除アクティビティを送信し、フェデレーションしないようにマークしてから、所有者の変更を許可するということは理にかなっていますか?

「いいね!」 5

ユースケースは理解できますが、現時点では最優先事項とは考えていません。まずは、Discourse-to-Discourse同期機能の微調整に注力したいと思います。今後数週間はかなりの注意が必要になると思われます。

それは良い発見です。問題を報告していただきありがとうございます。調査します。

「いいね!」 1

この「バックフィル」は、リンクされたActivityPubアクターから行われますか?

ユースケース:
Discourseのカテゴリに、すでにMastodonに投稿された勧告通知を投入する。

「いいね!」 3

バックフィルはまだサポートされていません。特にDiscourse間フェデレーションシナリオでサポートしたいと考えています。説明されたユースケースでは、もう少しトリッキーになるかもしれません。

「いいね!」 8