# ActivityPub: 503 and then 404 and 401 errors, with Ghost CLI

**URL:** <https://forum.ghost.org/t/activitypub-503-and-then-404-and-401-errors-with-ghost-cli/59206>\
**Category:** Self-hosting\
**Created:** [August 4, 2025, 11:21am UTC](https://forum.ghost.org/t/activitypub-503-and-then-404-and-401-errors-with-ghost-cli/59206 "2025-08-04T11:21:20Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![Cathy\_Sarisky](https://sea1.discourse-cdn.com/flex015/user_avatar/forum.ghost.org/cathy_sarisky/32/25750_2.png) [@Cathy\_Sarisky](https://forum.ghost.org/u/Cathy_Sarisky)\
**Post date:** [August 4, 2025, 11:21am UTC](https://forum.ghost.org/t/activitypub-503-and-then-404-and-401-errors-with-ghost-cli/59206/1 "2025-08-04T11:21:20Z")

</div>

I just ran ‘ghost update’ with the cli and am now on v6! Whoo hoo! However, once I clicked past the onboarding screens in Network, I’m getting the “Loading interrupted” error.

I saw mention in the changelog that self hosters could use activitypub, but I must be missing a step somewhere?

---

<div class="post-metadata">

**Author:** ![Cathy\_Sarisky](https://sea1.discourse-cdn.com/flex015/user_avatar/forum.ghost.org/cathy_sarisky/32/25750_2.png) [@Cathy\_Sarisky](https://forum.ghost.org/u/Cathy_Sarisky)\
**Post date:** [August 4, 2025, 11:26am UTC](https://forum.ghost.org/t/activitypub-503-and-then-404-and-401-errors-with-ghost-cli/59206/2 "2025-08-04T11:26:38Z")

</div>

Hmm… hang on. I think my proxy is interfering.

[2025-08-04 11:24:01] ERROR Could not get webhook secret for ActivityPub FetchError: invalid json response body at [https://www.spectralwebservices.com/.ghost/activitypub/v1/site/](https://www.spectralwebservices.com/.ghost/activitypub/v1/site/) reason: Unexpected token ‘\<’, "\<!DOCTYPE "… is not valid JSON

Turned my Cloudflare proxy off. I can see those requests getting to Ghost (they’re in the logs), but then they get 404’d. Requests look like:  
GET /.ghost/activitypub/v1/feed/reader/ 404

(And half a dozen others that start with .ghost.)

---

<div class="post-metadata">

**Author:** ![muratcorlu](https://sea1.discourse-cdn.com/flex015/user_avatar/forum.ghost.org/muratcorlu/32/38509_2.png) [@muratcorlu](https://forum.ghost.org/u/muratcorlu)\
**Post date:** [August 4, 2025, 12:04pm UTC](https://forum.ghost.org/t/activitypub-503-and-then-404-and-401-errors-with-ghost-cli/59206/3 "2025-08-04T12:04:53Z")

</div>

If you just want to use Ghost Pro hosted AP server, you need to proxy those requests to Ghost Pro ActivityPub server. Your Nginx or Caddy proxy should have a rule for it. Like this: [ghost-docker/caddy/snippets/ActivityPub at main · TryGhost/ghost-docker · GitHub](https://github.com/TryGhost/ghost-docker/blob/main/caddy/snippets/ActivityPub)

If you are running your own AP server, then you need to proxy those requests to your AP server.

---

<div class="post-metadata">

**Author:** ![Cathy\_Sarisky](https://sea1.discourse-cdn.com/flex015/user_avatar/forum.ghost.org/cathy_sarisky/32/25750_2.png) [@Cathy\_Sarisky](https://forum.ghost.org/u/Cathy_Sarisky)\
**Post date:** [August 4, 2025, 12:05pm UTC](https://forum.ghost.org/t/activitypub-503-and-then-404-and-401-errors-with-ghost-cli/59206/4 "2025-08-04T12:05:46Z")

</div>

I was just looking at those, Murat! Going to try that next 🙂

---

<div class="post-metadata">

**Author:** ![Cathy\_Sarisky](https://sea1.discourse-cdn.com/flex015/user_avatar/forum.ghost.org/cathy_sarisky/32/25750_2.png) [@Cathy\_Sarisky](https://forum.ghost.org/u/Cathy_Sarisky)\
**Post date:** [August 4, 2025, 12:31pm UTC](https://forum.ghost.org/t/activitypub-503-and-then-404-and-401-errors-with-ghost-cli/59206/5 "2025-08-04T12:31:41Z")

</div>

Hmm. Still getting 503 errors. Bah.I added:

```auto
location ^~ /.ghost/activitypub/ {
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_pass https://ap.ghost.org;
}

# Proxy well-known endpoints
location = /.well-known/webfinger {
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_pass https://ap.ghost.org;
}

location = /.well-known/nodeinfo {
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_pass https://ap.ghost.org;
}

# Default Ghost proxy
location / {
    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_pass http://127.0.0.1:2368;

    add_header X-Content-Type-Options $header_content_type_options;
}

```

---

<div class="post-metadata">

**Author:** ![Cathy\_Sarisky](https://sea1.discourse-cdn.com/flex015/user_avatar/forum.ghost.org/cathy_sarisky/32/25750_2.png) [@Cathy\_Sarisky](https://forum.ghost.org/u/Cathy_Sarisky)\
**Post date:** [August 4, 2025, 1:01pm UTC](https://forum.ghost.org/t/activitypub-503-and-then-404-and-401-errors-with-ghost-cli/59206/6 "2025-08-04T13:01:11Z")

</div>

Yeah, so far I’ve just traded 404 errors for 503 errors. _laughing_

Right, well, I’m on 6.0 without the new features. Back to paying work.

Self-hosting. Still not for wimps.

---

<div class="post-metadata">

**Author:** ![jannis](https://sea1.discourse-cdn.com/flex015/user_avatar/forum.ghost.org/jannis/32/39718_2.png) [@jannis](https://forum.ghost.org/u/jannis)\
**Post date:** [August 4, 2025, 1:21pm UTC](https://forum.ghost.org/t/activitypub-503-and-then-404-and-401-errors-with-ghost-cli/59206/7 "2025-08-04T13:21:34Z")

</div>

I haven’t tried it myself, but it’s possible that [ap.ghost.org](http://ap.ghost.org) is not ready yet. I (well, a customer) have experienced the same with the new Explore API/writing a testimonial through Ghost. That also just returned a 404.

503 could also make sense for that, in case [ap.ghost.org](http://ap.ghost.org) has a proxy, but no service behind it.

Just guessing here, but it’s entirely possible the issue is not on your end 😃

---

<div class="post-metadata">

**Author:** ![Cathy\_Sarisky](https://sea1.discourse-cdn.com/flex015/user_avatar/forum.ghost.org/cathy_sarisky/32/25750_2.png) [@Cathy\_Sarisky](https://forum.ghost.org/u/Cathy_Sarisky)\
**Post date:** [August 4, 2025, 1:24pm UTC](https://forum.ghost.org/t/activitypub-503-and-then-404-and-401-errors-with-ghost-cli/59206/8 "2025-08-04T13:24:03Z")

</div>

I think at this point I’m proxying correctly. @acburdine was kind enough to point me at the PR showing how my nginx config needed to change, here: [Added activitypub path to nginx by rmgpinto · Pull Request #1963 · TryGhost/Ghost-CLI · GitHub](https://github.com/TryGhost/Ghost-CLI/pull/1963/files)  
(My previous attempt was not quite the same, and apparently wrong.)

I’m now getting 401, and the server is saying “No account found” on all activity-pub related requests. So… pretty sure I’ve got the proxy bit right, but something else wrong. Somewhere.

😂

---

<div class="post-metadata">

**Author:** ![Cathy\_Sarisky](https://sea1.discourse-cdn.com/flex015/user_avatar/forum.ghost.org/cathy_sarisky/32/25750_2.png) [@Cathy\_Sarisky](https://forum.ghost.org/u/Cathy_Sarisky)\
**Post date:** [August 8, 2025, 11:36am UTC](https://forum.ghost.org/t/activitypub-503-and-then-404-and-401-errors-with-ghost-cli/59206/9 "2025-08-08T11:36:54Z")

</div>

8 posts were split to a new topic: [ActivityPub: 429 errors and partial UI loading](https://forum.ghost.org/t/activitypub-429-errors-and-partial-ui-loading/59417)

---

<div class="post-metadata">

**Author:** ![Cathy\_Sarisky](https://sea1.discourse-cdn.com/flex015/user_avatar/forum.ghost.org/cathy_sarisky/32/25750_2.png) [@Cathy\_Sarisky](https://forum.ghost.org/u/Cathy_Sarisky)\
**Post date:** [August 8, 2025, 11:55am UTC](https://forum.ghost.org/t/activitypub-503-and-then-404-and-401-errors-with-ghost-cli/59206/15 "2025-08-08T11:55:57Z")

</div>

4 posts were split to a new topic: [ActivityPub: Questions about Docker architecture requirements](https://forum.ghost.org/t/activitypub-questions-about-docker-architecture-requirements/59419)

---

<div class="post-metadata">

**Author:** ![Cathy\_Sarisky](https://sea1.discourse-cdn.com/flex015/user_avatar/forum.ghost.org/cathy_sarisky/32/25750_2.png) [@Cathy\_Sarisky](https://forum.ghost.org/u/Cathy_Sarisky)\
**Post date:** [August 8, 2025, 12:11pm UTC](https://forum.ghost.org/t/activitypub-503-and-then-404-and-401-errors-with-ghost-cli/59206/19 "2025-08-08T12:11:59Z")

</div>

A post was merged into an existing topic: [ActivityPub: 429 errors and partial UI loading](https://forum.ghost.org/t/activitypub-429-errors-and-partial-ui-loading/59417/7)

---

<div class="post-metadata">

**Author:** ![Cathy\_Sarisky](https://sea1.discourse-cdn.com/flex015/user_avatar/forum.ghost.org/cathy_sarisky/32/25750_2.png) [@Cathy\_Sarisky](https://forum.ghost.org/u/Cathy_Sarisky)\
**Post date:** [August 8, 2025, 12:00pm UTC](https://forum.ghost.org/t/activitypub-503-and-then-404-and-401-errors-with-ghost-cli/59206/20 "2025-08-08T12:00:21Z")

</div>

Apologies, in my clean up process, I lost a bit that belonged here, from @DIYBrad , because it was the jumping off point for a different discussion. Here’s what @DIYBrad wrote:

> I’ve attempted to proxy to Ghost as well using [nginx example](https://github.com/TryGhost/Ghost-CLI/tree/main/extensions/nginx/templates) but also get 503/401 errors.

---

<div class="post-metadata">

**Author:** ![Cathy\_Sarisky](https://sea1.discourse-cdn.com/flex015/user_avatar/forum.ghost.org/cathy_sarisky/32/25750_2.png) [@Cathy\_Sarisky](https://forum.ghost.org/u/Cathy_Sarisky)\
**Post date:** [August 8, 2025, 12:08pm UTC](https://forum.ghost.org/t/activitypub-503-and-then-404-and-401-errors-with-ghost-cli/59206/21 "2025-08-08T12:08:25Z")

</div>

To follow up on my original problem on my Ghost-CLI install using Ghost’s hosted ActivityPub, the missing piece for me after sorting out the nginx bits above was that **I have my admin dashboard on a separate subdomain from the main site** , which means that I needed to add a redirect from not-admin-site.tld/ghost/\* over to actual-admin-site.tld/ghost/

If this redirect doesn’t occur (or is blocked in some way), Ghost’s ActivityPub instance can’t get configuration information from your Ghost install that it needs to allow you to use it.

The clearest symptom for this problem is a message when Ghost first starts up webhook secrets:  
`ERROR Could not get webhook secret for ActivityPub FetchError: invalid json response body at …`

I added a redirect with Cloudflare since I already had some rewrite rules in place.

A member of the Ghost Foundation dev team has a PR open that fixes this behavior, so hopefully when 6.0.1 comes out, that’ll get the problem resolved (by Ghost handling the redirect) without needing the extra redirect.

## 

## If you are having problems with ActivityPub that are very similar to this problem, please feel free to post them here. If your problem doesn’t look a whole lot like this (401 errors in the console and “Could not get webhook secret), using Ghost-hosted ActivityPub and a Ghost-CLI install, please pick a different thread or start a new one, thanks.

---

<div class="post-metadata">

**Author:** ![Cathy\_Sarisky](https://sea1.discourse-cdn.com/flex015/user_avatar/forum.ghost.org/cathy_sarisky/32/25750_2.png) [@Cathy\_Sarisky](https://forum.ghost.org/u/Cathy_Sarisky)\
**Post date:** [August 9, 2025, 1:11pm UTC](https://forum.ghost.org/t/activitypub-503-and-then-404-and-401-errors-with-ghost-cli/59206/22 "2025-08-09T13:11:36Z")

</div>

4 posts were split to a new topic: [ActivityPub: Self-hosting ActivityPub and routing with nginx](https://forum.ghost.org/t/activitypub-self-hosting-activitypub-and-routing-with-nginx/59442)

---

<div class="post-metadata">

**Author:** ![Jilles\_Soeters](https://sea1.discourse-cdn.com/flex015/user_avatar/forum.ghost.org/jilles_soeters/32/37254_2.png) [@Jilles\_Soeters](https://forum.ghost.org/u/Jilles_Soeters)\
**Post date:** [August 9, 2025, 2:32pm UTC](https://forum.ghost.org/t/activitypub-503-and-then-404-and-401-errors-with-ghost-cli/59206/23 "2025-08-09T14:32:36Z")

</div>

Yep me too

```auto
[2025-08-09 14:25:54] ERROR Could not get webhook secret for ActivityPub FetchError: invalid json response body at https://jilles.me/.ghost/activitypub/v1/site reason: Unexpected token '<', "<!DOCTYPE "... is not valid JSON
[2025-08-09 14:25:54] ERROR No webhook secret found - cannot initialise

```

---

<div class="post-metadata">

**Author:** ![Cathy\_Sarisky](https://sea1.discourse-cdn.com/flex015/user_avatar/forum.ghost.org/cathy_sarisky/32/25750_2.png) [@Cathy\_Sarisky](https://forum.ghost.org/u/Cathy_Sarisky)\
**Post date:** [August 9, 2025, 2:36pm UTC](https://forum.ghost.org/t/activitypub-503-and-then-404-and-401-errors-with-ghost-cli/59206/24 "2025-08-09T14:36:25Z")

</div>

> [@Jilles\_Soeters](#):
>
> `https://jilles.me/`

I peeked at your site and got an nginx error, so you must be working on things right now. 🙂 What fixed my problem was getting the redirect working and then restarting Ghost, so I’m hoping the same will be true for you! 🙂

---

<div class="post-metadata">

**Author:** ![Jilles\_Soeters](https://sea1.discourse-cdn.com/flex015/user_avatar/forum.ghost.org/jilles_soeters/32/37254_2.png) [@Jilles\_Soeters](https://forum.ghost.org/u/Jilles_Soeters)\
**Post date:** [August 9, 2025, 2:54pm UTC](https://forum.ghost.org/t/activitypub-503-and-then-404-and-401-errors-with-ghost-cli/59206/25 "2025-08-09T14:54:18Z")

</div>

I updated nginx but now just getting

```auto

[2025-08-09 14:53:44] ERROR No webhook secret found - cannot initialiseS

```

So I can’t even start Ghost

---

<div class="post-metadata">

**Author:** ![Cathy\_Sarisky](https://sea1.discourse-cdn.com/flex015/user_avatar/forum.ghost.org/cathy_sarisky/32/25750_2.png) [@Cathy\_Sarisky](https://forum.ghost.org/u/Cathy_Sarisky)\
**Post date:** [August 9, 2025, 3:09pm UTC](https://forum.ghost.org/t/activitypub-503-and-then-404-and-401-errors-with-ghost-cli/59206/26 "2025-08-09T15:09:45Z")

</div>

I think you’ve got a separate problem in your nginx config. That error didn’t stop Ghost from starting up for me. What does `ghost ls` show? Is it running, but nginx can’t connect, perhaps?

---

<div class="post-metadata">

**Author:** ![Henry\_Junior](https://sea1.discourse-cdn.com/flex015/user_avatar/forum.ghost.org/henry_junior/32/25808_2.png) [@Henry\_Junior](https://forum.ghost.org/u/Henry_Junior)\
**Post date:** [August 10, 2025, 5:40am UTC](https://forum.ghost.org/t/activitypub-503-and-then-404-and-401-errors-with-ghost-cli/59206/27 "2025-08-10T05:40:10Z")

</div>

![image](https://us1.discourse-cdn.com/flex015/uploads/ghost2/original/3X/f/5/f52c7f12f9397a734b77a87bba90447895a87727.png)

After updating Ghost, I noticed the new **Networking** tab in Ghost Admin. When I open it the first time it loads, but if I click **Network** again I only see **“Loading Interrupted.”** Any ideas if this is still WIP or if I’ve misconfigured something?

**Setup**

- **Hosting:** Self-hosted

- **Proxy:** Nginx

- **Changes made:** None to Nginx yet (hesitant to tweak if that’s not the issue)

**What I’ve tried**

- Hard reload / clear cache

- Incognito window & a second browser

- Confirmed site & Admin are on the same origin/URL

**Questions**

- Is the Networking tab expected to be stable right now, or still in progress?

- If it should work, what should I check in my Nginx or Ghost config?

**Happy to share logs/configs—what’s most useful?**

Tell me what to grab and I’ll post it. Here’s what I can provide immediately:  
Ghost-CLI version: 1.28.3  
Ghost version: 6.0.1

✔ Checking system Node.js version - found v22.18.0  
✔ Checking logged in user  
✔ Ensuring user is not logged in as ghost user  
✔ Checking if logged in user is directory owner  
✔ Checking current folder permissions  
✔ Checking system compatibility  
✔ Checking for a MySQL installation

- sudo systemctl is-active  
Instance is currently running  
ℹ Validating config [skipped]  
✔ Checking folder permissions  
✔ Checking file permissions  
✔ Checking content folder ownership  
✔ Checking memory availability  
✔ Checking binary dependencies  
✔ Checking free space  
✔ Checking systemd unit file  
✔ Checking systemd node version - found v22.18.0

[ActivityPub: 503 and then 404 and 401 errors, with Ghost CLI - #5 by Cathy\_Sarisky](https://forum.ghost.org/t/activitypub-503-and-then-404-and-401-errors-with-ghost-cli/59206/5)

---

<div class="post-metadata">

**Author:** ![Cathy\_Sarisky](https://sea1.discourse-cdn.com/flex015/user_avatar/forum.ghost.org/cathy_sarisky/32/25750_2.png) [@Cathy\_Sarisky](https://forum.ghost.org/u/Cathy_Sarisky)\
**Post date:** [August 10, 2025, 5:46am UTC](https://forum.ghost.org/t/activitypub-503-and-then-404-and-401-errors-with-ghost-cli/59206/28 "2025-08-10T05:46:07Z")

</div>

You absolutely need nginx changes. It doesn’t work without them. 🙂

There’s a link up thread, but here it is again: [Added activitypub path to nginx by rmgpinto · Pull Request #1963 · TryGhost/Ghost-CLI · GitHub](https://github.com/TryGhost/Ghost-CLI/pull/1963/files)

[Next page](https://forum.ghost.org/t/activitypub-503-and-then-404-and-401-errors-with-ghost-cli/59206.md?page=2)
