关注一个ActivityPub演员

本主题介绍如何使用 Discourse ActivityPub 插件关注 Discourse 中的 ActivityPub Actor,并接续 设置 ActivityPub Actor。如果您不确定这意味着什么,请先前往 Discourse ActivityPub 插件 主题。

说明

要关注一个 ActivityPub Actor:

  1. 设置一个 Actor,用于您想要关注的分类或标签。
  2. 获取您想要关注的 Actor 的“句柄”(见下文)。
  3. 前往步骤 1 中分类或标签的主题列表视图中的“联合”选项卡。
  4. 点击“新建关注”,输入步骤 2 中的句柄,然后点击“查找”(见下文)。
  5. 找到 Actor 后点击“关注”。

Actor 句柄

大多数 ActivityPub 服务使用一种称为 WebFinger 的协议,允许通过“句柄”发现 Actor。这通常采用以下格式:

username@domain

有时用户名前面会有一个符号,例如 @

Discourse

通过前往 Actor 的主题列表视图中的“联合”选项卡来获取 Discourse Actor 的句柄。

截图中的句柄是 announcements@test.pavilion.tech

Mastodon

从 Actor 的个人资料中获取 Mastodon Actor 的句柄。

截图中的句柄是 @angusmcleod@mastodon.social

查找 Actor

当您在“新建关注”模态框中输入 Actor 句柄并点击“查找”时,插件会使用 WebFinger 来查找该句柄。此查找可能不会成功。如果没有返回结果:

  1. 检查您复制的句柄。
  2. 检查句柄的域中是否存在一个活动的、启用了 ActivityPub 的服务器。
  3. 尝试在另一个 ActivityPub 服务上查找该句柄。

如果您尝试了以上方法,并认为问题可能出在您的站点或插件上:

  1. 检查站点设置 activity pub verbose logging 是否已启用。
  2. 再次执行查找。
  3. 检查 /logs 是否有标记为“ActivityPub”的日志。
  4. 在本主题的回复中报告您发现的任何问题。
2 个赞

你好 @angus,感谢你提供的精彩指南!

到目前为止,我已经能够将帖子和回复在 Discourse 和 Mastodon 之间进行联合,但无法在 Discourse 和 Discourse 之间进行联合。我的联合 Discourse 类别对所有人开放,但实例要求先获得邀请才能创建帐户。你认为这可能与此有关吗?

另外,其他用户发布的联合帖子的回复没有联合到该主题涉及的其他实例。这是正常的还是预期的?

谢谢!

这有关系!让我测试一下这种情况,然后回复您。

Discourse 会将主题中的活动发布给主题中的所有参与者,即使他们没有关注相关的参与者(即类别或标签)。所以这是可以预料的。这可能是 Discourse 端的问题(请检查日志,如果您看到任何内容请告知我)。这也可能是您期望看到回复的平台上的问题。

也许给我举个例子?

1 个赞

抱歉 @angus,我必须将我的实例迁移到另一台服务器。当我启用两个 Discourse 实例上的 ActivityPub 时,我的 8 GB Raspberry Pi 4 无法处理 ActivityPub 流量,导致过热和冻结。如果我尝试在实验实例上启用 ActivityPub,我会提供更新。

关于在 ActivityPub 上激活应用域名后完全取消列出该域名的任何建议?

由于我取消关注了正在使用的 Mastodon 实例上的类别帐户,我之前使用的子域仍然接收到大量流量,因此我几乎无法使用它们。

Rob,很抱歉听到您遇到了问题。ActivityPub 插件已经有许多针对高流量负载的保护措施,特别是以下站点设置:

  • activity_pub_rate_limit_post_to_inbox_per_minute:此设置的默认值为 10。这意味着,默认情况下,每分钟处理来自每个 IP 的 10 个传入 POST 请求。请尝试降低此值。

  • activity_pub_rate_limit_get_objects_per_minute:此设置的默认值为每分钟 30 个 GET 请求(每个 IP)。这意味着,默认情况下,每分钟处理来自每个 IP 的 30 个 GET 请求。请尝试降低此值。

  • activity_pub_blocked_request_origins:此设置允许您阻止来自可能导致问题的域的所有请求。

  • activity_pub_allowed_request_origins:此设置允许您将请求限制为特定域,这意味着来自所有其他来源的请求将被阻止。

如果高流量负载确实是您问题的根源,那么处理方法就是使用上面列出的保护措施,除非您可以控制流量来源的服务器。

谢谢你的建议,Angus。我真的很感激。我将在一个不会影响我其他服务的实验服务器上设置另一个 Discourse 实例,并按照你的建议重试。

我不确定我的基础设施的哪个层面是问题的真正所在,但可能是反向代理。

我使用 Cosmos Server 作为服务器监控器、docker 容器管理 UI,以及 Discourse 和其他服务的反向代理。我觉得反向代理可能需要进行类似的配置,以便为传入的 ActivityPub 连接进行充分的速率限制。

可能是来自外部 Mastodon 服务器的传入 ActivityPub 同步请求压垮了反向代理,导致 RAM、CPU 和网络使用率达到峰值并过热。

一旦我收到下一批树莓派,并且有一个备用板可以作为实验服务器使用,我会再次更新。

感谢你的建议!

1 个赞

感谢您制作的精彩视频。我是否错过了关于关注者如何回答/互动这些话题的解释?我想知道这是否能为社交媒体团队创建一个轻量级的“服务器”。

当 Mastodon 用户尝试查找 discourse-actor 时,错误 403 最可能的原因是什么?

在 Mastodon 上,该句柄找不到任何内容,而 Discourse 会给出此响应:

GET 请求收到 https://foorumi.katiska.eu/ap/actor/2a8f2bdb5a547366558a0906d6bf6a5c 失败:403 Forbidden

/inbox 也是如此。