Lemmy와 Wordpress를 (다시) 살펴본 후에, Pixelfed에 대한 명시적 지원을 검토할 예정입니다 ![]()
이론적으로는 모든 ActivityPub 플랫폼이 상호운용성이 있어야 하지만, 각 통합을 올바르게 설정하려면 거의 항상 약간의 조정이 필요합니다. 특히 우리는 토픽을 사용하는 반면, 대부분의 다른 구현은 단순히 게시물의 스트림이기 때문입니다.
Lemmy와 Wordpress를 (다시) 살펴본 후에, Pixelfed에 대한 명시적 지원을 검토할 예정입니다 ![]()
이론적으로는 모든 ActivityPub 플랫폼이 상호운용성이 있어야 하지만, 각 통합을 올바르게 설정하려면 거의 항상 약간의 조정이 필요합니다. 특히 우리는 토픽을 사용하는 반면, 대부분의 다른 구현은 단순히 게시물의 스트림이기 때문입니다.
워드프레스? Automattic에서 자체 솔루션을 제공하고 있긴 해요. 다만 친구 관련 기능이 꽤 많아서 약간 낯설게 느껴질 수 있죠. 혹시 사용자 프로필 기능을 말씀하시는 건가요?
잘하셨어요. 감사합니다!
8월에 글을 올린 이후로 이 문제를 제대로 해결하려고 노력해 왔는데, 제 문제가 처음 생각했던 것보다 단순할 수도 있겠다는 생각이 듭니다.
Mastodon 인스턴스에서 해당 액터를 팔로우하는 것이 차단되어 있을 수도 있습니다.
그동안 저는 Discourse와 플러그인을 재설치하고, 사이트를 다른 서버로 이전한 뒤, 오늘에는 도메인 이름이 원인일 수 있다고 판단하여 도메인 이름을 변경했습니다.
mastodon.social 계정과 Sharkey 인스턴스의 계정에서 팔로우를 시도해 보았는데, 두 경우 모두 정상적으로 작동했습니다.
서버에서 인스턴스가 차단되어 있다고 생각하지 않습니다(다시 말하지만, 서버 제공업체와 도메인 이름을 모두 변경했기 때문이죠) 하지만 제 2의 의견을 듣고 싶습니다.
[Discourse Activity Pub] GET request to https://mastodon.ie/users/padraig failed: Expected([200, 201, 202, 301, 302, 307, 308]) <=> Actual(401 Unauthorized)
[Discourse Activity Pub] Failed to process https://mastodon.ie/users/padraig: Could not resolve actor
[Discourse Activity Pub] Failed to process https://mastodon.ie/b35f6088-19b9-472d-a277-e0310fed585f: Could not create actor
[Discourse Activity Pub] DiscourseActivityPub::AP::Handlers::Warning
백트레이스(backtrace)와/또는 환경 변수(env)가 필요하시다면 알려주세요 ![]()
mastodon.ie가 여기 activity pub allowed request origins에 허용되어 있어야 합니다. 또한 activity pub require signed requests 옵션이 활성화되어 있거나 비활성화되어 있어야 할 수 있습니다.
여러분, 안녕하세요.
ActivityPub 플러그인을 사용하여 여러 Discourse 포럼을 연결해 사용하고 있습니다. 이 중 하나의 포럼에 Discourse AI를 설치할 경우, AI 봇이 챗 인터페이스에서 질문에 답변하기 위해 다른 연동된 인스턴스의 콘텐츠에 접근하고 사용할 수 있을까요?
감사합니다!
@Crakila 이 주제의 단계와 토론을 확인해 보시고, 해당 제안이 문제를 해결하지 못하면 그곳에서 후속 조치를 취해 주세요:
콘텐츠가 인스턴스로 연동되면, 해당 인스턴스의 AI 봇은 그 콘텐츠를 사용할 수 있습니다. 다른 기능의 관점에서, 인스턴스 내의 모든 “원격” 콘텐츠는 “로컬” 콘텐츠와 동일한 지위를 가집니다.
궁금한 점이 있는데… 뒤에 숨겨진 질문이 있나요?
감사합니다. 지구 모습이 멋지네요 ![]()
이게 뭔가요 ![]()
Message (46 copies reported)
Job exception: undefined method `skip_email_validation=' for an instance of Category
Backtrace
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activemodel-7.2.2.1/lib/active_model/attribute_methods.rb:512:in `method_missing'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.2.2.1/lib/active_record/attribute_methods.rb:491:in `method_missing'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/actor_handler.rb:150:in `update_user'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/actor_handler.rb:47:in `block in update_or_create_user'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.2.2.1/lib/active_record/connection_adapters/abstract/database_statements.rb:359:in `transaction'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.2.2.1/lib/active_record/transactions.rb:234:in `block in transaction'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.2.2.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:415:in `with_connection'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.2.2.1/lib/active_record/connection_handling.rb:296:in `with_connection'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.2.2.1/lib/active_record/transactions.rb:233:in `transaction'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/actor_handler.rb:45:in `update_or_create_user'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/actor_handler.rb:82:in `update_or_create_user'
/var/www/discourse/plugins/discourse-activity-pub/plugin.rb:782:in `block (2 levels) in activate!'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/ap/handlers.rb:76:in `block in apply_handlers'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/ap/handlers.rb:74:in `all?'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/ap/handlers.rb:74:in `apply_handlers'
/var/www/discourse/plugins/discourse-activity-pub/plugin.rb:873:in `block (2 levels) in activate!'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/ap/handlers.rb:76:in `block in apply_handlers'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/ap/handlers.rb:74:in `all?'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/ap/handlers.rb:74:in `apply_handlers'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/ap/handlers.rb:24:in `apply_handlers'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/ap/activity.rb:64:in `perform_activity'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/ap/activity.rb:38:in `block in perform_transactions'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.2.2.1/lib/active_record/connection_adapters/abstract/transaction.rb:616:in `block in within_new_transaction'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activesupport-7.2.2.1/lib/active_support/concurrency/null_lock.rb:9:in `synchronize'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.2.2.1/lib/active_record/connection_adapters/abstract/transaction.rb:613:in `within_new_transaction'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.2.2.1/lib/active_record/connection_adapters/abstract/database_statements.rb:361:in `transaction'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.2.2.1/lib/active_record/transactions.rb:234:in `block in transaction'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.2.2.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:421:in `with_connection'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.2.2.1/lib/active_record/connection_handling.rb:296:in `with_connection'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/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/announce.rb:26:in `process'
/var/www/discourse/plugins/discourse-activity-pub/app/jobs/discourse_activity_pub_process.rb:12:in `execute'
/var/www/discourse/app/jobs/base.rb:316:in `block (2 levels) in perform'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rails_multisite-6.1.0/lib/rails_multisite/connection_management/null_instance.rb:49:in `with_connection'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/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'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:202:in `execute_job'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:170:in `block (2 levels) in process'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/middleware/chain.rb:177:in `block in invoke'
/var/www/discourse/lib/sidekiq/pausable.rb:132:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/middleware/chain.rb:179:in `block in invoke'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/middleware/chain.rb:182:in `invoke'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:169:in `block in process'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:136:in `block (6 levels) in dispatch'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/job_retry.rb:113:in `local'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:135:in `block (5 levels) in dispatch'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq.rb:44:in `block in <module:Sidekiq>'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:131:in `block (4 levels) in dispatch'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:263:in `stats'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:126:in `block (3 levels) in dispatch'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/job_logger.rb:13:in `call'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:125:in `block (2 levels) in dispatch'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/job_retry.rb:80:in `global'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:124:in `block in dispatch'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/job_logger.rb:39:in `prepare'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:123:in `dispatch'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:168:in `process'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:78:in `process_one'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/processor.rb:68:in `run'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/component.rb:8:in `watchdog'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/sidekiq-6.5.12/lib/sidekiq/component.rb:17:in `block in safe_thread'
제 계정 관련 내용입니다. 제가 인스턴스에서 이메일을 인증하지 않았거나, 카테고리에서 어떤 문제가 생겨서 ActivityPub가 이 상황을 처리하지 못하는 건가요?
그런데 모든 게 정상적으로 작동하는 것 같습니다.
Discourse 사용자를 액터(actor)로 만들 계획이 있나요?
ActivityPub를 공개적으로 작동하는 프로토콜로 본다면, 이는 자신의 생각을 팔로우할 수 있는 곳으로 Discourse를 사용하기 위한 빠진 단계처럼 보입니다.
디스코urses를 순수한 인스턴스로 작동하도록 확장하는 건가요? 지금 기술적으로 가능하든 아니든, 이 방식에는 장단점이 있습니다.
리포트해 주셔서 감사합니다. 실질적인 영향은 없을 것입니다. 곧 조치할 예정입니다.
Discourse 사용자는 이미 ActivityPub 액터입니다. 다만 팔로우할 수 없을 뿐입니다. 이 플러그인은 그런 가능성을 허용하도록 만들어졌습니다. 문제는 그것이 현명한 선택인지 여부입니다.
저는 그걸 좋아하지 않습니다. 포럼의 핵심 개념을 순수한 마스토돈(Mastodon) 인스턴스로 바꾸어 버리는데, 그런 용도로는 이미 마스토돈이라는 선택지가 있습니다. 주제(토픽)를 팔로우하는 것과 사람을 팔로우하는 것 사이에는 여전히 큰 차이가 있습니다.
ActivityPub를 통해 콘텐츠를 공유하는 것은 완전히 다른 문제입니다.
그렇게 되면 적어도 제 포럼은 바로 폐쇄될 것입니다. 이미 ActivityPub 공유는 제 사용자들 중 일부에게는 큰 거부 대상입니다. 만약 일부 사용자가 Discourse를 통해 마스토돈을 완전히 사용하고, 일부는 그렇지 않다면 거대한 갈등이 생길 것입니다.
마스토돈 세계에서는 일상적인 일이라고 할 수도 있습니다. 왜냐하면 스레드에 참여해도, 브라우저로 원본을 방문하지 않는 한 모든 대화가 보이지는 않으니까요. 하지만 그래도 — 아니요.
자체 호스팅 라이브 스트리밍 플랫폼을 구축하고, 포럼 소프트웨어로는 Discourse를 사용하며, Discourse 라이브 채팅을 라이브 스트림에 통합할 계획을 가지고 있습니다.
최근에 페디버스(Fediverse) 소프트웨어에 대해 알아보고 있는데, Peertube를 VOD 콘텐츠 업로드에 사용하면 좋겠다고 생각했습니다. 이렇게 하면 사람들이 Mastodon에서 영상을 보고, 거기서부터 제 사이트의 나머지 부분을 발견할 수 있어 플랫폼의 발견 가능성을 높일 수 있을 것 같습니다.
이 플러그인을 사용하여 사람들이 AP 계정으로 제 Discourse 인스턴스에 로그인할 수 있게 할 수 있을까요? 많은 사이트에서 구글/페이스북으로 로그인하는 것처럼요.
이 플러그인도 확인해 보시면 좋습니다:
디스커스의 모든 가능한 사용 사례를 고려할 때, 그것이 현명한지 여부에 대한 질문을 일반적으로 답변할 수 있다고 생각하시나요?
제 경우에는 아직 페디버스를 생산적으로 활용하는 방법을 찾고 있습니다. 저는 디스커스 인스턴스를 디지털 가든으로 사용하여 공개적으로 사고하는 방식을 선호합니다. 현재 제 생각에 공개된 피드를 가질 수 있는 유일한 방법은 마스토돈 인스턴스에 계정을 만들고, 제 비공개 가든의 모든 카테고리를 팔로우한 뒤, 이 계정을 통해 제가 올린 모든 메시지를 부스트(boost)하는 것입니다.
저는 디스커스를 페디버스와의 주요 연결고리로 사용하는 실험을 해보고 싶습니다.