Enabling the ActivityPub plugin

So, I couldn’t find a discussion about it, but apparently Discourse’s ActivityPub plugin is working?

It looks like it’s a read-only feature of a Topic, but it’s probably better than nothing. Is it enabled here yet? Should it be?


Yes, AP is enabled on this forum, and SocialHub has offered to be early bird tester of new functionality. See the topic by @angus in the Discourse category: Adding federation support to Discourse


@evan, the discussion is here: Welcome Discourse to the Fediverse!, and I must say that since today, new topics in the Fediverse Futures are now public!

The SocialHub follows the discourse-activity-pub plugin development closely and we try to use and test the latest features as soon as they appear.


I gave this entire thing a spin, and I’m not impressed. Here’s what happens:

  1. Discourse uses an unnamed HTTP client! From my HTTP access logs - - [20/Aug/2023:09:17:56 +0000] "GET /endpoints/SYn3cl_N4HAPfPHgo2x37XunLEmhV9LnxCggcYwyec0 HTTP/1.1" 401 0.006 186 "-" "-" "-"
  1. Discourse does not sign their GET requests
Aug 20 09:17:56 [2023-08-20 09:17:56,550] DEBUG  
bovine.crypto.signature_checker Signature not present on
request for /endpoints/SYn3cl_N4HAPfPHgo2x37XunLEmhV9LnxCggcYwyec0
Aug 20 09:17:56 [2023-08-20 09:17:56,551] DEBUG  
bovine.crypto.signature_checker {"Remote-Addr": "<local>", 
"Host": "mymath.rocks", "X-Forwarded-For": "", 
"X-Forwarded-Proto": "https", "Connection": "close", "Date":
 "Sun, 20 Aug 2023 09:17:56 GMT", "Accept": 
"application/ld+json; profile=\"https://www.w3.org/ns/activitystreams\""}
  1. Discourse expects signed GET requests
bovine_store.actor.bovine_store_actor aiohttp.client_exceptions.ClientResponseError: 401, message='Unauthorized', url=URL('https://socialhub.activitypub.rocks/ap/actor/bcde488169a4ac803695493219aece2a')

2 & 3 are incompatible.

1 is bad practice, and makes problems such as 2 + 3 harder to debug.

cc @angus

Perhaps if you could explain what you’re trying to test? Is there a use case you’re trying to achieve?