Skip to content

A full-featured ActivityPub server for networked publishing with Ghost

License

Notifications You must be signed in to change notification settings

TryGhost/ActivityPub

Repository files navigation

 

Ghost Ghost

 

ActivityPub 🚧

A multitenant ActivityPub server for Ghost, built with Fedify. This service makes it possible for independent websites to publish their content directly to the Fediverse, enabling networked publishing to the open social web.

This repository is being actively developed and is currently in early alpha - expect many breaking changes. It is not suitable for production use.

Subscribe to updates

We're publishing a weekly build-log about the development of this project. Sign up on https://activitypub.ghost.org

image

 

How it works

All requests to /.ghost/activitypub/* and /.well-known/webfinger are proxied to this ActivityPub service using NGINX. All other requests are forwarded to Ghost.

Current features

  • Follow
  • Unfollow
  • Auto Accept Follows
  • Manually Accept/Reject Follows
  • Publish Articles to Followers
  • Receive Articles in Inbox
  • Receive Notes in Inbox

 

Running locally for development

This has only been tested on MacOS using Docker for Mac and OrbStack.

Setup

  1. Install Ghost
    • Ensure Ghost is running locally at localhost:2368.
  2. Proxy with Tailscale (or ngrok)
    • Use tailscale funnel 80 or ngrok http 80 to expose your local port 80.
  3. Configure Ghost
    • Run ghost config url and set it to the URL provided by Tailscale
  4. Start the ActivityPub Service
    • Run yarn dev in the root directory of this project
  5. Open Ghost Admin
    • Access your Ghost instance via the URL provided by Tailscale
  6. Configure a Webhook
    • Set up a webhook for the post.published event pointing to https://<your-url>/.ghost/activitypub/webhooks/post/published.
  7. Enable ActivityPub Alpha
    • Enable the ActivityPub Alpha flag in Settings → Labs

Running Tests

  • Run yarn test to execute tests within a Docker Compose stack.

Populating the DB

The below command will populate the DB with ~5000 followers for the activitypub host

  • Run docker compose run scripts populate-activitypub-db

 

Leaderboard

 

Copyright & license

Copyright (c) 2013-2024 Ghost Foundation - Released under the MIT license. Ghost and the Ghost Logo are trademarks of Ghost Foundation Ltd. Please see our trademark policy for info on acceptable usage.