Activity Pub - Profile, Reader etc not loading

I saw this error on a ‘Pikapods’ thread but I am with Digital Ocean and the fixes didn’t seem to apply. I was getting the ‘loading interrupted’ error, but then a few edits later i got past that but not all the way.

My first question is to check I haven’t missed an obvious step. I have done:

  • Updated the code files as per the documentation
  • Created an ActivityPub account on the activitypub.ghost page.
    Is that all (in theory) i need to do? No other API or integration to connect my activitypub profile to my site?

The errors I am getting now are:
Reader - Oops no page found
Notes - page settings incorrect
Profile - no profile found (which is weird right as this pulls directly from the Ghost site itself?)

Any help gratefully received. Thank you.

@Cathy_Sarisky Hi Cathy. I saw your comments on a few of the self hosted activity pub questions and wondered if you had any thoughts on this one. My main thing is to know if I’m missing anything obvious in the process before needing any clever coding workarounds (altho obv open to any suggestions on that front)

@Sally_H As I understand, https://activitypub.ghost.org/ is the blog/newsletter about building Ghost’s ActivityPub features, and the “get early access” probably only applied to Ghost(Pro).

If you’re self-hosting, from what I understand, you need to either use the Docker Compose install that is in preview, and host the ActivityPub stuff yourself, or else proxy ActivityPub traffic to ap.ghost.org using Nginx/Caddy/etc.

But I’m no expert because I haven’t gotten it working either, even though I have the redirect to ap.ghost.org set-up :)

Thank you! It does say that self hosted should be able to work without Docker Compose but I fully realise it’s early days so I can just wait. Just wasn’t sure if i was missing something super obvious! You’re def more expert than me so really appreciate your reply.

Without having any information on how you have your reverse proxy set up, it’s not possible to help you, @Sally_H

No pressure at all to review this, but if anything glaringly obvious I’d be grateful.

Thanks for the feedback. Here’s my reverse proxy configuration:

Environment:

  • Ghost 6.0.5 on DigitalOcean 1-Click Ghost droplet
  • Ubuntu 22.04.4 LTS
  • nginx/1.18.0
  • Node v22.18.0
  • MySQL 8
  • Direct DNS (no Cloudflare proxy)

nginx configuration (/etc/nginx/sites-available/sallyh.nz.conf):

server {
    server_name sallyh.nz www.sallyh.nz;
    
    location ~ /.ghost/activitypub/* {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host $http_host;
        proxy_ssl_server_name on;
        proxy_pass https://ap.ghost.org;
    }

    location ~ /.well-known/(webfinger|nodeinfo) {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host $http_host;
        proxy_ssl_server_name on;
        proxy_pass https://ap.ghost.org;
    }
    
    location / {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_pass http://127.0.0.1:2368;
    }
    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/sallyh.nz/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/sallyh.nz/privkey.pem;
    include /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
}
1 Like