팔로우 요청이 승인되지 않아요

ActivityPub 플러그인을 설정했지만, 내 인스턴스에서 설정한 액터를 다른 페디 앱에서 팔로우할 수 없습니다. Mastodon 클라이언트에서 다음을 팔로우하려고 하면:

news@forum.internet-czialac.pl

Mastodon UI를 새로고침하면 팔로우 요청이 멈춰 있습니다:

수 시간 동안 “팔로우 요청 철회” 상태로 멈춰 있습니다. 요청을 취소하고 다시 팔로우 요청을 보내도 해결되지 않으며, 여전히 멈춰 있고 해당 카테고리의 새 게시물에 대한 알림도 받지 못합니다.

재현은 가능하지만, 약간 다른 UI를 확인합니다:

How to debug connectivity issues with ActivityPub 링크를 시도해 보시고, 도움이 되는 부분이 있는지 확인해 주시겠습니까?

  1. 내 서버에 지오블로커가 구성되어 있지 않습니다.
  2. admin/site_settings/category/all_results?filter=plugin%3Adiscourse-activity-pub에서 플러그인 설정의 서명된 요청 요구를 비활성화해도 문제가 해결되지 않았습니다.
  3. 로그에서 다음 경고가 표시됩니다:
[Discourse Activity Pub] Failed to process https://mastodon.social/users/Ifutig#delete: Object is not ready




[Discourse Activity Pub] DiscourseActivityPub::AP::Handlers::Warning
activesupport-7.2.2.1/lib/active_support/broadcast_logger.rb:130:in `block in warn'
activesupport-7.2.2.1/lib/active_support/broadcast_logger.rb:231:in `block in dispatch'
activesupport-7.2.2.1/lib/active_support/broadcast_logger.rb:231:in `each'
activesupport-7.2.2.1/lib/active_support/broadcast_logger.rb:231:in `dispatch'
activesupport-7.2.2.1/lib/active_support/broadcast_logger.rb:130:in `warn'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/logger.rb:26:in `log'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/logger.rb:63:in `warn'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/ap/activity.rb:42:in `rescue in block in perform_transactions'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/ap/activity.rb:35:in `block in perform_transactions'
activerecord-7.2.2.1/lib/active_record/connection_adapters/abstract/transaction.rb:616:in `block in within_new_transaction'
activesupport-7.2.2.1/lib/active_support/concurrency/null_lock.rb:9:in `synchronize'
activerecord-7.2.2.1/lib/active_record/connection_adapters/abstract/transaction.rb:613:in `within_new_transaction'
activerecord-7.2.2.1/lib/active_record/connection_adapters/abstract/database_statements.rb:361:in `transaction'
activerecord-7.2.2.1/lib/active_record/transactions.rb:234:in `block in transaction'
activerecord-7.2.2.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:415:in `with_connection'
activerecord-7.2.2.1/lib/active_record/connection_handling.rb:296:in `with_connection'
activerecord-7.2.2.1/lib/active_record/transactions.rb:233:in `transaction'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/ap/activity.rb:34:in `perform_transactions'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/ap/activity.rb:26:in `process'
/var/www/discourse/plugins/discourse-activity-pub/app/jobs/discourse_activity_pub_process.rb:14:in `block in execute'
/var/www/discourse/lib/distributed_mutex.rb:53:in `block in synchronize'
/var/www/discourse/lib/distributed_mutex.rb:49:in `synchronize'
/var/www/discourse/lib/distributed_mutex.rb:49:in `synchronize'
/var/www/discourse/lib/distributed_mutex.rb:34:in `synchronize'
/var/www/discourse/plugins/discourse-activity-pub/app/jobs/discourse_activity_pub_process.rb:8:in `execute'
/var/www/discourse/app/jobs/base.rb:316:in `block (2 levels) in perform'
rails_multisite-6.1.0/lib/rails_multisite/connection_management/null_instance.rb:49:in `with_connection'
rails_multisite-6.1.0/lib/rails_multisite/connection_management.rb:21:in `with_connection'
/var/www/discourse/app/jobs/base.rb:303:in `block in perform'
/var/www/discourse/app/jobs/base.rb:299:in `each'
/var/www/discourse/app/jobs/base.rb:299:in `perform'
sidekiq-7.3.9/lib/sidekiq/processor.rb:220:in `execute_job'
sidekiq-7.3.9/lib/sidekiq/processor.rb:185:in `block (4 levels) in process'
sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:180:in `traverse'
sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:183:in `block in traverse'
/var/www/discourse/lib/sidekiq/pausable.rb:132:in `call'
sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:182:in `traverse'
sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:183:in `block in traverse'
sidekiq-7.3.9/lib/sidekiq/job/interrupt_handler.rb:9:in `call'
sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:182:in `traverse'
sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:183:in `block in traverse'
sidekiq-7.3.9/lib/sidekiq/metrics/tracking.rb:26:in `track'
sidekiq-7.3.9/lib/sidekiq/metrics/tracking.rb:134:in `call'
sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:182:in `traverse'
sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:173:in `invoke'
sidekiq-7.3.9/lib/sidekiq/processor.rb:184:in `block (3 levels) in process'
sidekiq-7.3.9/lib/sidekiq/processor.rb:145:in `block (6 levels) in dispatch'
sidekiq-7.3.9/lib/sidekiq/job_retry.rb:118:in `local'
sidekiq-7.3.9/lib/sidekiq/processor.rb:144:in `block (5 levels) in dispatch'
sidekiq-7.3.9/lib/sidekiq/config.rb:39:in `block in <class:Config>'
sidekiq-7.3.9/lib/sidekiq/processor.rb:139:in `block (4 levels) in dispatch'
sidekiq-7.3.9/lib/sidekiq/processor.rb:281:in `stats'
sidekiq-7.3.9/lib/sidekiq/processor.rb:134:in `block (3 levels) in dispatch'
sidekiq-7.3.9/lib/sidekiq/job_logger.rb:15:in `call'
sidekiq-7.3.9/lib/sidekiq/processor.rb:133:in `block (2 levels) in dispatch'
sidekiq-7.3.9/lib/sidekiq/job_retry.rb:85:in `global'
sidekiq-7.3.9/lib/sidekiq/processor.rb:132:in `block in dispatch'
sidekiq-7.3.9/lib/sidekiq/job_logger.rb:40:in `prepare'
sidekiq-7.3.9/lib/sidekiq/processor.rb:131:in `dispatch'
sidekiq-7.3.9/lib/sidekiq/processor.rb:183:in `block (2 levels) in process'
sidekiq-7.3.9/lib/sidekiq/processor.rb:182:in `handle_interrupt'
sidekiq-7.3.9/lib/sidekiq/processor.rb:182:in `block in process'
sidekiq-7.3.9/lib/sidekiq/processor.rb:181:in `handle_interrupt'
sidekiq-7.3.9/lib/sidekiq/processor.rb:181:in `process'
sidekiq-7.3.9/lib/sidekiq/processor.rb:86:in `process_one'
sidekiq-7.3.9/lib/sidekiq/processor.rb:76:in `run'
sidekiq-7.3.9/lib/sidekiq/component.rb:10:in `watchdog'
sidekiq-7.3.9/lib/sidekiq/component.rb:19:in `block in safe_thread'


  1. activity pub allowed request origins 및 activity pub blocked request origins 설정이 비어 있습니다.

Mastodon의 sidekiq는 다음 인자로 호출된 ActivityPub::DeliveryWorker 큐에 대해 이 오류를 보고합니다.

"{\"@context\":\"https://www.w3.org/ns/activitystreams\",\"id\":\"https://toot.kuba-orlik.name/users/kuba#follows/2702/undo\",\"type\":\"Undo\",\"actor\":\"https://toot.kuba-orlik.name/users/kuba\",\"object\":{\"id\":\"https://toot.kuba-orlik.name/afe35800-107b-4843-baf6-763052aa8a79\",\"type\":\"Follow\",\"actor\":\"https://toot.kuba-orlik.name/users/kuba\",\"object\":\"https://forum.internet-czas-dzialac.pl/ap/actor/3120ea9df156a8556848a862fc980366\"}}", 1, "/inbox"
HTTP::Request::UnsupportedSchemeError: unknown scheme: on /inbox

이 조각에서 ap_id가 비어 있는 것처럼 보입니다.


네, 확인했습니다.

curl -H "Accept: application/activity+json" https://forum.internet-czas-dzialac.pl/ap/actor/3120ea9df156a8556848a862fc980366 | jq

실행 시 다음이 반환됩니다:

{
  "id": "https://forum.internet-czas-dzialac.pl/ap/actor/3120ea9df156a8556848a862fc980366",
  "type": "Group",
  "updated": "2025-03-14T12:23:02Z",
  "url": "https://forum.internet-czas-dzialac.pl/c/nowinki-od-icd/65",
  "name": "Forum ICD - Newsy",
  "inbox": "/inbox",
  "outbox": "/outbox",
  "followers": "https://forum.internet-czas-dzialac.pl/ap/actor/3120ea9df156a8556848a862fc980366/followers",
  "preferredUsername": "news",
  "publicKey": {
    "id": "https://forum.internet-czas-dzialac.pl/ap/actor/3120ea9df156a8556848a862fc980366#main-key",
    "owner": "https://forum.internet-czas-dzialac.pl/ap/actor/3120ea9df156a8556848a862fc980366",
    "publicKeyPem": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2JFbVH7kIfa/14CDnUww\n9x+XwOPsS0qyeec1jdasv8SqqCit22FwDsLhH6vWpSIDisEDOhTLZjFFtpwksA8d\nRZIdOFrFazPkUF69J5VDVGtLgjyRi/KkJewbVaUnxO8zNwnxyBYWe8QoMWbdFwto\nfNzvB/ht+9Pch8ksVzNPnrA3Z7egtWHWGNl5sQ+8eXOKzeMNOn73hCEKcOSPWulz\n1gbbdo0So5ThKpwXC0ViqcZy2yzyTFptdrvL7lphr0BywUsG6AruOuwmghw6eRNe\nFvzx0Pq01bUIyY+MXiYmN6sLMIDqi/kdoALzSE+tHcv7HzCLNuEJb1DCmZo56O2H\nSQIDAQAB\n-----END PUBLIC KEY-----\n"
  },
  "icon": {
    "type": "Image",
    "mediaType": "image/png",
    "url": "https://forum.internet-czas-dzialac.pl/uploads/default/original/1X/adbc19ebc6466183dc0387c3f59d86bd2861b5c9.png"
  },
  "@context": "https://www.w3.org/ns/activitystreams"
}

inbox 및 outbox URL에 프로토콜과 도메인이 없음을 확인할 수 있습니다.

문제를 찾은 것 같습니다. 이를 수정하는 PR을 보냈습니다:

변경 사항의 핵심은 다음과 같은 getter를 추가하는 것입니다:

문제는 객체가 처음부터 id를 가지고 생성되고 있다는 점입니다. 이는 시리얼라이저(또는 패브리케이션)와는 관련이 없습니다. 다음 내용을 공유해 주시겠습니까?

  1. Discourse의 환경, 즉 호스팅 방식과 사용 중인 Discourse 버전.
  2. 사용 중인 기타 플러그인.

@kuba-orlik 이 문제는 해당 PR로 인해 발생했을 가능성이 높습니다.

이 PR로 해결될 것입니다:

문제를 보고해 주시고 인내심을 가져 주셔서 감사합니다!

확인해 주셔서 감사합니다 @angus! 불행히도 최신 버전에서도 문제가 여전히 지속됩니다.

공식 Docker 설정(./launcher rebuild app)을 사용하여 자체 호스팅(self-hosting)을 하고 있습니다.

사용 중인 Discourse 버전은 3.5.0.beta2-dev입니다.

discourse-chat-integration, discourse-whos-online, discourse-telegram-notifications, discourse-assign

이것이 원인일 수 있다고 생각했지만, 해당 커밋 이전 버전들을 설치해 보았을 때 동일한 문제가 발생했습니다 :thinking:

플러그인의 최신 버전(커밋 0083654 기준)을 설치했는데, 불행히도 문제가 해결되지 않았습니다. 빠른 확인 결과:

> curl -H "Accept: application/activity+json" https://forum.internet-czas-dzialac.pl/ap/actor/3120ea9df156a8556848a862fc980366 | jq
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  1298    0  1298    0     0   9151      0 --:--:-- --:--:-- --:--:--  9205
{
  "id": "https://forum.internet-czas-dzialac.pl/ap/actor/3120ea9df156a8556848a862fc980366",
  "type": "Group",
  "updated": "2025-03-14T12:23:02Z",
  "url": "https://forum.internet-czas-dzialac.pl/c/nowinki-od-icd/65",
  "name": "Forum ICD - Newsy",
  "inbox": "/inbox",
  "outbox": "/outbox",
  "followers": "https://forum.internet-czas-dzialac.pl/ap/actor/3120ea9df156a8556848a862fc980366/followers",
  "preferredUsername": "news",
  "publicKey": {
    "id": "https://forum.internet-czas-dzialac.pl/ap/actor/3120ea9df156a8556848a862fc980366#main-key",
    "owner": "https://forum.internet-czas-dzialac.pl/ap/actor/3120ea9df156a8556848a862fc980366",
    "publicKeyPem": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2JFbVH7kIfa/14CDnUww\n9x+XwOPsS0qyeec1jdasv8SqqCit22FwDsLhH6vWpSIDisEDOhTLZjFFtpwksA8d\nRZIdOFrFazPkUF69J5VDVGtLgjyRi/KkJewbVaUnxO8zNwnxyBYWe8QoMWbdFwto\nfNzvB/ht+9Pch8ksVzNPnrA3Z7egtWHWGNl5sQ+8eXOKzeMNOn73hCEKcOSPWulz\n1gbbdo0So5ThKpwXC0ViqcZy2yzyTFptdrvL7lphr0BywUsG6AruOuwmghw6eRNe\nFvzx0Pq01bUIyY+MXiYmN6sLMIDqi/kdoALzSE+tHcv7HzCLNuEJb1DCmZo56O2H\nSQIDAQAB\n-----END PUBLIC KEY-----\n"
  },
  "icon": {
    "type": "Image",
    "mediaType": "image/png",
    "url": "https://forum.internet-czas-dzialac.pl/uploads/default/original/1X/adbc19ebc6466183dc0387c3f59d86bd2861b5c9.png"
  },
  "@context": "https://www.w3.org/ns/activitystreams"
}

다시 한번 inbox와 outbox 키가 완전한 URL이 아님을 확인할 수 있습니다.

해당 문제가 발생한 후에는 이전 커밋으로 되돌려도 도움이 되지 않았습니다. Admin > ActivityPub에서 액터를 다시 저장해 보시기 바랍니다. 즉, /admin/plugins/ap/actor에서 "Save Actor"를 클릭하십시오.

아! 카테고리 액터를 다시 저장했는데 이제 작동합니다!

그런데 https://forum.internet-czas-dzialac.pl/ap/actor/0098dcca74e34cfd2115e9309a7d4531 같은 개별 사용자 액터는 어떻게 수정하나요?

> curl -H "Accept: application/activity+json" https://forum.internet-czas-dzialac.pl/ap/actor/0098dcca74e34cfd2115e9309a7d4531 | jq
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  1332    0  1332    0     0   9273      0 --:--:-- --:--:-- --:--:--  9314
{
  "id": "https://forum.internet-czas-dzialac.pl/ap/actor/0098dcca74e34cfd2115e9309a7d4531",
  "type": "Person",
  "updated": "2025-03-14T12:34:26Z",
  "url": "https://forum.internet-czas-dzialac.pl/u/kuba",
  "name": "Kuba",
  "inbox": "/inbox",
  "outbox": "/outbox",
  "sharedInbox": "https://forum.internet-czas-dzialac.pl/ap/users/inbox",
  "followers": "https://forum.internet-czas-dzialac.pl/ap/actor/0098dcca74e34cfd2115e9309a7d4531/followers",
  "preferredUsername": "kuba",
  "publicKey": {
    "id": "https://forum.internet-czas-dzialac.pl/ap/actor/0098dcca74e34cfd2115e9309a7d4531#main-key",
    "owner": "https://forum.internet-czas-dzialac.pl/ap/actor/0098dcca74e34cfd2115e9309a7d4531",
    "publicKeyPem": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0wp46cDyUbUUTfvbWqy/\nRS3YXY2g69+a3R5n+f4EeCxcpNL1OGPyzgjszdoxAWLSXCHqZk91v2rvpfRZt8wi\nEQ8Sr5CVj1uKIny9bdxKtxVyiT7U1pIZGD1VhWXqY1tMRLxQWWhA2+UtD1pfFzk/\nyqcbqXUvlG6UsQBAlDnaPxKaq3CD1ui1ANVsVY+VEbJyROIVY3q86qw50KSDHu/y\n0TaD6UjZNtnGOVmjh11QZwn2j5A/GYj6gqFDdS58KMMoBuPAfRZ7uD3psJ5CqT6F\nKLwn5q3UvypEm89SmboRIEcq7Pcvv1Zts0QJRDaSA0M4VeW35iuAqnhQ7yHKthAF\nYwIDAQAB\n-----END PUBLIC KEY-----\n"
  },
  "icon": {
    "type": "Image",
    "mediaType": "image/png",
    "url": "https://forum.internet-czas-dzialac.pl/user_avatar/forum.internet-czas-dzialac.pl/kuba/96/1866_2.png"
  },
  "@context": "https://www.w3.org/ns/activitystreams"
}

정상적으로 작동해서 다행입니다!

현재의 데이터 검증 체크는 사용자가 실제 활동에 관여할 때 적용됩니다(즉, 필요할 때 자동으로 수정됩니다). 하지만 여기에서 하시는 것처럼 직접적인 인물(인스턴스) 액터 접근에도 동일한 검증 체크를 확장하는 것이 좋은 아이디어입니다. 아래 PR이 이를 수행합니다:

이 문제를 끈질기게 파고들어 주셔서 감사합니다. 잘못된 데이터가 있는 실제 인스턴스를 통해 검증 체크가 기대대로, 그리고 필요할 때 제대로 작동하는지 확인할 수 있어 매우 도움이 됩니다. 최근 변경 사항으로 이어진 원래의 데이터 손상 문제가 다른 형태로 다시 발생할 수 있으므로, 여기서는 데이터가 필요해지는 시점에 데이터 일관성이 유지되도록 보장하는 것이 목표입니다(마이그레이션 등으로 처리하는 대신). 비슷한 문제를 발견하시면 알려주세요!

이제 작동합니다! 당분간 포크로 전환할게요 :slight_smile:

@angus 그동안 지원해 주셔서 감사합니다. 이제 받은 편지함/보낸 편지함 URL은 정상적으로 보이지만, 여전히 팔로우 기능이 작동하지 않습니다. 두 개의 다른 Mastodon 인스턴스에서 @kuba@forum.internet-czas-dzialac.pl을 팔로우해 보았지만, 두 경우 모두 실패했습니다.

일반 사용자 액터에 대한 팔로우 요청을 제출할 때 다음 오류가 발생합니다:

[Discourse Activity Pub] Failed to process https://mastodon.internet-czas-dzialac.pl/6bef64d0-c8ad-473c-85f6-d3fd190b5ebd: 
Activity is not supported for actor and object

activesupport-7.2.2.1/lib/active_support/broadcast_logger.rb:130:in `block in warn'
activesupport-7.2.2.1/lib/active_support/broadcast_logger.rb:231:in `block in dispatch'
activesupport-7.2.2.1/lib/active_support/broadcast_logger.rb:231:in `each'
activesupport-7.2.2.1/lib/active_support/broadcast_logger.rb:231:in `dispatch'
activesupport-7.2.2.1/lib/active_support/broadcast_logger.rb:130:in `warn'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/logger.rb:26:in `log'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/logger.rb:63:in `warn'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/ap/object.rb:140:in `process_failed'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/ap/activity.rb:139:in `process_actor_and_object'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/ap/activity.rb:56:in `process_activity'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/ap/activity.rb:36:in `block in perform_transactions'
activerecord-7.2.2.1/lib/active_record/connection_adapters/abstract/transaction.rb:616:in `block in within_new_transaction'
activesupport-7.2.2.1/lib/active_support/concurrency/null_lock.rb:9:in `synchronize'
activerecord-7.2.2.1/lib/active_record/connection_adapters/abstract/transaction.rb:613:in `within_new_transaction'
activerecord-7.2.2.1/lib/active_record/connection_adapters/abstract/database_statements.rb:361:in `transaction'
activerecord-7.2.2.1/lib/active_record/transactions.rb:234:in `block in transaction'
activerecord-7.2.2.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:421:in `with_connection'
activerecord-7.2.2.1/lib/active_record/connection_handling.rb:296:in `with_connection'
activerecord-7.2.2.1/lib/active_record/transactions.rb:233:in `transaction'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/ap/activity.rb:34:in `perform_transactions'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/ap/activity.rb:26:in `process'
/var/www/discourse/plugins/discourse-activity-pub/app/jobs/discourse_activity_pub_process.rb:14:in `block in execute'
/var/www/discourse/lib/distributed_mutex.rb:53:in `block in synchronize'
(...)

그리고 팔로우 요청을 수행할 때는 다음과 같은 오류가 발생합니다:

[Discourse Activity Pub] Failed to process https://mastodon.internet-czas-dzialac.pl/users/icd#follows/5003/undo: 
Object is not ready

activesupport-7.2.2.1/lib/active_support/broadcast_logger.rb:130:in `block in warn'
activesupport-7.2.2.1/lib/active_support/broadcast_logger.rb:231:in `block in dispatch'
activesupport-7.2.2.1/lib/active_support/broadcast_logger.rb:231:in `each'
activesupport-7.2.2.1/lib/active_support/broadcast_logger.rb:231:in `dispatch'
activesupport-7.2.2.1/lib/active_support/broadcast_logger.rb:130:in `warn'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/logger.rb:26:in `log'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/logger.rb:63:in `warn'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/ap/object.rb:140:in `process_failed'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/ap/activity.rb:137:in `process_actor_and_object'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/ap/activity.rb:56:in `process_activity'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/ap/activity.rb:36:in `block in perform_transactions'
activerecord-7.2.2.1/lib/active_record/connection_adapters/abstract/transaction.rb:616:in `block in within_new_transaction'
(...)

두 번째 경고, 즉 다음과 같은 경고는

Failed to process Internet. Czas działać! 🌎 (@icd@mastodon.internet-czas-dzialac.pl) - Fundacja Internet. Czas działać! - serwer Mastodona
Object is not ready

기대되는 것입니다. 수행되지 않은 것을 Undo(실행 취소)할 수 없기 때문입니다.

팔로우가 작동하지 않는 이유에 관해서는

Failed to process https://mastodon.internet-czas-dzialac.pl/6bef64d0-c8ad-473c-85f6-d3fd190b5ebd: Activity is not supported for actor and object

이 메시지는 표준이 아닌 액터(Actor)를 팔로우하려고 시도하고 있음을 시사합니다. 이 경고는 유형 검증이 실패할 때 발생하며, 지원되는 다양한 Actor 유형은 다음 폴더에서 확인할 수 있습니다:

https://github.com/discourse/discourse-activity-pub/tree/main/lib/discourse_activity_pub/ap/actor

또한 해당 URL은 어떤 것으로도 해석되지 않는 것 같습니다.

이상하네요 - 저는 그냥 일반 사람(person) 액터를 팔로우하려고 하고 있습니다. 여기 로그는 @kuba@forum.internet-czas-dzialac.pl을 팔로우하려고 할 때의 것인데 (이것이 Profile - kuba - Forum Internet. Czas działać! 에 해당한다고 생각했지만, 제가 무언가를 잘못 알고 있는 건가요?)

https://github.com/discourse/discourse-activity-pub/blob/main/lib/discourse_activity_pub/ap/actor/person.rb 에서 파악한 바로는, AP를 통해 Discourse 사용자를 팔로우하는 것은 지원되는 것이 맞죠?

아니요, 지원됩니다. 카테고리나 태그인 Discourse 액터를 팔로우하는 것은 지원됩니다. 포럼의 사용자는 ActivityPub를 통해 팔로우할 수 없습니다. 이들은 게시물을 부스트하는 카테고리/태그 액터를 가진 "가상 사용자"입니다.

아, 알겠습니다. 특정 사용자를 팔로우하는 기능에 대한 지원 계획이 있나요? 기꺼이 도와드리겠습니다.

아, 알겠습니다. 현재는 해당 기능이 지원되지 않습니다.

단기~중기적으로는 계획이 없습니다.