ActivityPub 액터 팔로우하기

이 주제는 Discourse ActivityPub 플러그인을 사용하여 ActivityPub 액터를 팔로우하는 방법에 대해 다루며, ActivityPub 액터 설정의 후속 내용입니다. 이 개념이 익숙하지 않다면 먼저 Discourse ActivityPub 플러그인 주제를 참고해 주세요.

안내

ActivityPub 액터를 팔로우하려면:

  1. 팔로우하려는 카테고리나 태그에 대해 액터 설정을 수행합니다.
  2. 팔로우하려는 액터의 '핸들(handle)'을 확인합니다(아래 참조).
  3. 1단계의 카테고리 또는 태그 주제 목록 보기에서 ‘Federation’ 탭으로 이동합니다.
  4. 'New Follow’를 클릭하고 2단계에서 확인한 핸들을 입력한 뒤 'Find’를 클릭합니다(아래 참조).
  5. 액터가 검색되면 'Follow’를 클릭합니다.

액터 핸들

대부분의 ActivityPub 서비스는 WebFinger라는 프로토콜을 사용하여 액터가 '핸들’을 통해 발견될 수 있도록 합니다. 이는 일반적으로 다음과 같은 형식입니다.

username@domain

때로는 사용자 이름 앞에 기호(예: @)가 붙기도 합니다.

Discourse

Discourse 액터의 핸들은 해당 액터의 주제 목록 보기에서 ‘Federation’ 탭으로 이동하여 확인할 수 있습니다.

스크린샷의 핸들은 announcements@test.pavilion.tech입니다.

Mastodon

Mastodon 액터의 핸들은 해당 액터의 프로필에서 확인할 수 있습니다.

스크린샷의 핸들은 @angusmcleod@mastodon.social입니다.

액터 찾기

‘New Follow’ 모달에 액터 핸들을 입력하고 'Find’를 클릭하면 플러그인은 WebFinger를 사용하여 해당 핸들을 조회합니다. 이 조회가 성공하지 못할 수 있습니다. 결과가 반환되지 않는 경우:

  1. 복사한 핸들을 확인합니다.
  2. 핸들의 도메인에 활성 상태의 ActivityPub 지원 서버가 있는지 확인합니다.
  3. 다른 ActivityPub 서비스에서 핸들을 검색해 봅니다.

위 단계를 시도했는데 문제가 자신의 사이트나 플러그인 때문이라고 생각되면:

  1. 사이트 설정에서 activity pub verbose logging이 활성화되어 있는지 확인합니다.
  2. 조회를 다시 수행합니다.
  3. /logs에서 'ActivityPub’로 표시된 로그를 확인합니다.
  4. 발견된 문제를 이 주제에 대한 답변으로 보고합니다.
2개의 좋아요

안녕하세요 @angus, 훌륭한 가이드를 올려주셔서 감사합니다!

현재까지 Discourse와 Mastodon 간에 게시물과 답변을 양방향으로 연동(federation)하는 것은 성공했지만, Discourse와 Discourse 간 연동은 아직 되지 않습니다. 제 연동된 Discourse 카테고리는 모든 사람에게 공개되어 있지만, 해당 인스턴스에서는 계정을 생성하려면 초대장이 필요합니다. 이것이 원인과 관련이 있을까요?

또한, 다른 사용자가 연동된 게시물에 남긴 답변은 해당 스레드에 포함된 다른 인스턴스로 연동되지 않습니다. 이는 정상적인가요?

가능합니다! 해당 시나리오를 테스트해 보고 다시 알려드리겠습니다.

Discourse는 토픽의 모든 참여자에게 해당 토픽의 활동(activities)을 게시합니다. 관련 액터(즉, 카테고리나 태그)를 팔로우하지 않는 경우에도 마찬가지입니다. 따라서 이는 예상되지 않는 동작입니다. 이는 Discourse 측의 문제일 수 있습니다(로그를 확인해 보시고, 이상한 점이 보이면 알려 주세요). 또한 답변이 표시되어야 할 플랫폼 측의 문제일 수도 있습니다.

혹시 예를 하나 주시겠어요?

1개의 좋아요

죄송합니다, @angus. 제 인스턴스를 다른 서버로 이전해야 합니다. 두 개의 Discourse 인스턴스에서 ActivityPub를 활성화했을 때, 8GB RAM의 Raspberry Pi 4가 ActivityPub 트래픽을 처리하지 못하고 과열 및 동결 현상이 반복되었습니다. 실험용 인스턴스에서 ActivityPub를 작동하도록 시도해 보면 업데이트를 제공하겠습니다.

ActivityPub에서 활성화한 앱 도메인을 완전히 목록에서 제거하는 방법에 대한 제안이 있으신가요?

사용 중인 Mastodon 인스턴스에서 해당 카테고리 계정을 팔로우 해제했음에도 불구하고, 이전 서브도메인들은 여전히 상당한 트래픽을 받아 거의 사용할 수 없는 상태입니다.

로브님, 문제가 발생하고 계시다니 죄송합니다. ActivityPub 플러그인에는 이미 무거운 트래픽 부하를 처리하기 위한 여러 보호 기능이 포함되어 있으며, 특히 다음 사이트 설정들이 해당됩니다:

  • activity_pub_rate_limit_post_to_inbox_per_minute: 기본값은 10입니다. 이는 기본적으로 분당 IP당 10개의 수신 POST 요청만 처리됨을 의미합니다. 이 값을 낮춰보세요.

  • activity_pub_rate_limit_get_objects_per_minute: 기본값은 분당 IP당 30입니다. 이는 기본적으로 분당 IP당 30개의 GET 요청만 처리됨을 의미합니다. 이 값을 낮춰보세요.

  • activity_pub_blocked_request_origins: 문제를 일으킬 수 있는 도메인(들)에서 온 모든 요청을 차단할 수 있습니다.

  • activity_pub_allowed_request_origins: 요청을 특정 도메인으로 제한할 수 있으며, 이는 다른 모든 소스에서 온 요청이 차단됨을 의미합니다.

높은 트래픽 부하가 실제로 문제의 원인이라면, 해당 트래픽이 발생하는 서버를 직접 제어할 수 있는 경우를 제외하고는 위에서 나열된 보호 기능을 사용하는 것이 해결책입니다.

조언해 주셔서 감사합니다, Angus. 정말 감사드립니다. 다른 서비스에는 영향을 주지 않는 실험용 서버에 Discourse 인스턴스를 하나 더 설정한 뒤, 조언해 주신 대로 다시 시도해 보겠습니다.

제 인프라 중 어디에 문제가 있는지는 정확히 모르겠지만, 리버스 프록시일 수도 있습니다.

저는 Cosmos Server를 서버 모니터, 도커 컨테이너 관리 UI, 그리고 Discourse를 비롯한 다른 도커 컨테이너용 리버스 프록시로 사용하고 있습니다. 들어오는 ActivityPub 연결에 대한 적절한 레이트 리미팅을 위해 리버스 프록시도 유사하게 설정해야 할 것 같습니다.

외부 Mastodon 서버에서 들어온 ActivityPub 동기화 요청이 리버스 프록시를 압도하여 RAM, CPU, 네트워크 사용량이 최대치에 도달하고 과열된 원인일 수도 있습니다.

다음 Raspberry Pi 물품이 도착하여 실험용 서버로 사용할 예비 보드를 확보하면 다시 업데이트를 올리겠습니다.

조언해 주셔서 감사합니다!

1개의 좋아요

멋진 영상들 감사합니다. 팔로워들이 해당 주제에 답하거나 상호작용하는 방법에 대한 설명을 놓쳤나요? 소셜 미디어 팀을 위한 가벼운 '서버’가 될 수 있을 것 같아서 궁금합니다.

mastodon 사용자가 discourse-actor를 찾으려 할 때 403 오류가 발생하는 가장 그럴듯한 이유는 무엇일까요?

Mastodon 쪽에서는 아무것도 찾지 못하고, Discourse 쪽에서는 다음과 같은 메시지가 표시됩니다:

GET request received by https://foorumi.katiska.eu/ap/actor/2a8f2bdb5a547366558a0906d6bf6a5c failed: 403 Forbidden

/inbox 경로에서도 동일한 현상이 발생합니다.