ActivityPub: {“error”:“Forbidden”,“code”:“SITE_MISSING”}

Trying to not hijack here – having related issues and attempting to pick best related thread rather than start a new one!

I also have a site migrated from CLI to docker. Updated to latest 6.0.3 and fresh docker pull. Separate admin domain (tried with and without).

The network tab has previously shown variations of all the other errors people are seeing, but is currently giving: ”Site not configured correctly: This feature can’t be used because the site isn’t set up correctly. If you manage this site, check your settings or server logs, or contact support”

The console shows all the .ghost/activitypub requests are returning 403 with

{“error”:“Forbidden”,“code”:“SITE_MISSING”}

On the docker logs site, I see a lot of (actual website removed):

activitypub-1          | 13:19:53.516 INF activitypub: 'GET' 'mywebsite.com' 'https://mywebsite.com/.ghost/activitypub/users/index' 'ddd37979-0f24-4c51-a1d6-a4e80eb8a1b7' 403 24ms
activitypub-1          | 13:19:53.520 INF activitypub: 'GET' 'mywebsite.com' 'https://mywebsite.com/.ghost/activitypub/v1/account/me' '8e667fb2-139c-42c9-8906-ddcaded1a18a'
activitypub-1          | 13:19:53.521 INF activitypub: KnexKvStore: Get key cachedJwks,mywebsite.com
activitypub-1          | 13:19:53.521 INF activitypub: No site found for 'mywebsite.com'

It seems like something is genuinely unconfigured, or failed at initial setup? Turning network setting off and on, or restarting ghost completely, don’t help, as I’ve seen in other threads.

Importantly, the domain is proxied on cloudflare, as is the admin - i have punched a hole in the proxy for .ghost/* but this hole wouldn’t have been there the first time it tried, so that may have caused it.

Is there a way to totally restart the setup process? Or something else that might be in the way here?

1 Like

Hey @ppittman , Did you edit the various environment files and caddyfile, as described in the upgrade directions? Sounds like you’re missing a step here.

I did.
In .env, I have ACTIVITYPUB_TARGET=activitypub:8080 uncommented and COMPOSE_PROFILES=analytics,activitypub (analytics works fine).

I’ve confirmed the docker activitypub container is running on 8080 as well:

cc21528d460f   ghcr.io/tryghost/activitypub:1.1.0   "docker-entrypoint.s…"   3 days ago       Up 3 days             8080/tcp    

In Caddyfile, both the regular domain and ADMIN_DOMAIN have import snippets/ActivityPub uncommented.

Is there anything else I’ve missed in there?

I’m assuming you’ve restarted Ghost since getting ActivityPub set up, yes? When Ghost starts, it should log something about activitypub being configured and having webhooks in the right state.

Yep:

ghost-1  | [2025-08-14 13:39:50] INFO Checking ActivityPub Webhook state
ghost-1  | [2025-08-14 13:39:50] INFO ActivityPub webhooks in correct state
ghost-1  | [2025-08-14 13:39:50] INFO Explore Response 200 OK
ghost-1  | [2025-08-14 13:39:53] INFO "GET /ghost/" 200 263ms

Moving this to its own topic. Less confusing that way. :slight_smile:

1 Like