# Network tab "Loading interrupted" - ap.ghost.org returning 403 to my VPS IP

**URL:** <https://forum.ghost.org/t/network-tab-loading-interrupted-ap-ghost-org-returning-403-to-my-vps-ip/63056>\
**Category:** Self-hosting\
**Created:** [June 8, 2026, 7:33am UTC](https://forum.ghost.org/t/network-tab-loading-interrupted-ap-ghost-org-returning-403-to-my-vps-ip/63056 "2026-06-08T07:33:03Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![Luca8](https://avatars.discourse-cdn.com/v4/letter/l/3be4f8/32.png) [@Luca8](https://forum.ghost.org/u/Luca8)\
**Post date:** [June 8, 2026, 7:33am UTC](https://forum.ghost.org/t/network-tab-loading-interrupted-ap-ghost-org-returning-403-to-my-vps-ip/63056/1 "2026-06-08T07:33:03Z")

</div>

Hi everyone,

I’m setting up the new Network / ActivityPub features on my Ghost instance at [https://epicuro.net](https://epicuro.net).

However, the Network tab completely crashes with a “Loading interrupted” error. I checked my server logs and ran a curl test directly from my server:

curl -I [https://ap.ghost.org/.well-known/nodeinfo](https://ap.ghost.org/.well-known/nodeinfo)

It returns an HTTP/2 403 Forbidden from the Google Frontend. It seems the IP address of my OVH VPS (141.95.53.122) is blacklisted or blocked by Ghost’s central infrastructure firewall.

Could someone from the staff please look into this and whitelist my IP?

Thank you!

---

<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:** [June 8, 2026, 1:41pm UTC](https://forum.ghost.org/t/network-tab-loading-interrupted-ap-ghost-org-returning-403-to-my-vps-ip/63056/2 "2026-06-08T13:41:17Z")

</div>

> [@Luca8](#):
>
> It returns an HTTP/2 403 Forbidden from the Google Frontend. It seems the IP address of my OVH VPS (141.95.53.122) is blacklisted or blocked by Ghost’s central infrastructure firewall.

That’s a red herring. You’re sending a `GET` request to the server and [ap.ghost.org](http://ap.ghost.org) is telling you that that’s now allowed.

Can you restart your Ghost instance and watch the logs? It should say something about webhooks in the beginning (Ghost will try to auto-heal ActivityPub webhooks) – that can be very informative sometimes.

---

<div class="post-metadata">

**Author:** ![Luca8](https://avatars.discourse-cdn.com/v4/letter/l/3be4f8/32.png) [@Luca8](https://forum.ghost.org/u/Luca8)\
**Post date:** [June 8, 2026, 4:36pm UTC](https://forum.ghost.org/t/network-tab-loading-interrupted-ap-ghost-org-returning-403-to-my-vps-ip/63056/3 "2026-06-08T16:36:30Z")

</div>

Hi Jannis,

Here are the logs right after restarting the instance on Ghost v6.44.1:  
…\> ghost log -f

Love open source? We’re hiring JavaScript Engineers to work on Ghost full-time.

> **[Ghost](https://careers.ghost.org)**
>
> We're hiring! Ghost is a proud non-profit organisation building open source technology for fiercely independent, professional publishers.

- sudo systemctl is-active ghost\_hub-curanderie-com  
[2026-06-08 16:23:07] INFO “GET /ghost/api/admin/identities/” 200 50ms  
[2026-06-08 16:23:07] INFO “GET /ghost/api/admin/identities/” 200 52ms  
[2026-06-08 16:23:07] INFO “GET /ghost/api/admin/identities/” 200 51ms  
[2026-06-08 16:23:07] INFO “GET /ghost/api/admin/identities/” 200 55ms  
[2026-06-08 16:23:07] INFO “GET /ghost/api/admin/identities/” 200 62ms  
[2026-06-08 16:23:21] INFO “GET /content/images/size/w256h256/2025/11/social-logo-epicuro.png” 200 3ms  
[2026-06-08 16:24:05] INFO “GET /ghost/api/content/” 404 3ms  
[2026-06-08 16:24:06] INFO “GET /biohacking-tra-scienza-utopia-e-corpo-come-laboratorio/?fbclid=IwY2xjawSTy\_RleHRuA2FlbQIxMQBicmlkETF4YlVPRkVnQ2VFZmdKNWlSc3J0YwZhcHBfaWQBMAABHqEbsYqTvCmbJgwB-WJ3Z56-yTi\_pHto-nrIAb-kuummEFjtShE9NjUnt1Tt\_aem\_JpoFY5U8qWdKkxykGoRJyg” 404 10ms  
[2026-06-08 16:24:06] INFO “GET /public/ghost.min.css?v=0b5720d112” 200 2ms  
[2026-06-08 16:24:06] INFO “GET /favicon.ico” 302 3ms  
[2026-06-08 16:24:06] INFO “GET /content/images/size/w256h256/2025/11/social-logo-epicuro.png” 200 3ms  
[2026-06-08 16:26:42] INFO “GET /” 200 123ms  
[2026-06-08 16:27:05] INFO “GET /” 200 137ms  
[2026-06-08 16:27:05] INFO “GET /content/images/size/w256h256/2025/11/social-logo-epicuro.png” 200 3ms  
[2026-06-08 16:27:33] INFO “HEAD /la-mappa-dellassurdo/” 404 13ms  
[2026-06-08 16:27:33] INFO “GET /la-mappa-dellassurdo/” 404 9ms  
[2026-06-08 16:28:01] INFO Worker for job “process-outbox” online  
[2026-06-08 16:28:01] INFO Worker for job process-outbox sent a message: done  
[2026-06-08 16:28:01] WARN Missing mail.from config, falling back to a generated email address. Please update your config file and set a valid from address  
[2026-06-08 16:28:01] INFO [OUTBOX] No pending outbox entries to process  
[2026-06-08 16:29:15] INFO “GET /biodisponibilita-della-fisetina-e-precauzioni-antiemorragiche/” 404 21ms  
[2026-06-08 16:29:17] INFO “GET /public/ghost.min.css?v=0b5720d112” 200 3ms  
[2026-06-08 16:29:23] INFO “GET /robots.txt” 200 2ms  
[2026-06-08 16:29:30] INFO “GET /content/images/size/w1200/2026/06/ChatGPT-Image-3-giu-2026–16\_16\_46.png” 200 11ms  
[2026-06-08 16:30:13] WARN Ghost is shutting down  
[2026-06-08 16:30:13] WARN Ghost has shut down  
[2026-06-08 16:30:13] WARN Your site is now offline  
[2026-06-08 16:30:13] WARN Ghost was running for 8 hours  
[2026-06-08 16:30:14] INFO Ghost is running in production…  
[2026-06-08 16:30:14] INFO Your site is now available on [https://epicuro.net/](https://epicuro.net/)  
[2026-06-08 16:30:14] INFO Ctrl+C to shut down  
[2026-06-08 16:30:14] WARN Can’t connect to the bootstrap socket (localhost 8000) ECONNREFUSED.  
[2026-06-08 16:30:14] WARN Tries: 0  
[2026-06-08 16:30:14] WARN Retrying…  
[2026-06-08 16:30:15] WARN Can’t connect to the bootstrap socket (localhost 8000) ECONNREFUSED.  
[2026-06-08 16:30:15] WARN Tries: 1  
[2026-06-08 16:30:15] WARN Retrying…  
[2026-06-08 16:30:15] WARN Can’t connect to the bootstrap socket (localhost 8000) ECONNREFUSED.  
[2026-06-08 16:30:15] WARN Tries: 2  
[2026-06-08 16:30:15] WARN Retrying…  
[2026-06-08 16:30:15] WARN Can’t connect to the bootstrap socket (localhost 8000) ECONNREFUSED.  
[2026-06-08 16:30:15] INFO Ghost server started in 1.614s  
[2026-06-08 16:30:15] INFO Database is in a ready state.  
[2026-06-08 16:30:15] INFO Ghost database ready in 1.861s  
[2026-06-08 16:30:15] WARN Missing mail.from config, falling back to a generated email address. Please update your config file and set a valid from address  
[2026-06-08 16:30:16] WARN Theme translations file locales/it.json not found.  
[2026-06-08 16:30:16] WARN Theme translations falling back to locales/en.json.  
[2026-06-08 16:30:16] INFO Invalidating assets for regeneration  
[2026-06-08 16:30:17] INFO [EmailAnalytics] Initialized with SEQUENTIAL processing mode  
[2026-06-08 16:30:18] INFO Adding offloaded job to the inline job queue  
[2026-06-08 16:30:18] INFO Scheduling job clean-gifts at 58 36 3 \* \* \*. Next run on: Tue Jun 09 2026 03:36:58 GMT+0000 (Coordinated Universal Time)  
[2026-06-08 16:30:18] INFO Adding offloaded job to the inline job queue  
[2026-06-08 16:30:18] INFO Scheduling job send-gift-reminders at 19 11 4 \* \* \*. Next run on: Tue Jun 09 2026 04:11:19 GMT+0000 (Coordinated Universal Time)  
[2026-06-08 16:30:18] INFO Adding offloaded job to the inline job queue  
[2026-06-08 16:30:18] INFO Scheduling job clean-expired-comped at 55 24 2 \* \* \*. Next run on: Tue Jun 09 2026 02:24:55 GMT+0000 (Coordinated Universal Time)  
[2026-06-08 16:30:18] INFO Adding offloaded job to the inline job queue  
[2026-06-08 16:30:18] INFO Scheduling job clean-tokens at 29 21 9 \* \* \*. Next run on: Tue Jun 09 2026 09:21:29 GMT+0000 (Coordinated Universal Time)  
[2026-06-08 16:30:18] INFO Pinging Explore with Payload [https://explore.ghost.org/api/update](https://explore.ghost.org/api/update) {“ghost”:“6.44.1”,“site\_uuid”:“ac0009bc-6b49-4f48-82af-ab1a57edbf2b”,“url”:“[https://epicuro.net](https://epicuro.net)”,“theme”:“ruby-epicuro”,“facebook”:“profile.php?id=61577485033807”,“twitter”:“@epicuro\_net”,“posts\_total”:106,“posts\_last”:“2026-06-08T11:19:52.000Z”,“posts\_first”:“2025-10-19T22:25:15.000Z”,“members\_total”:16,“mrr”:}  
[2026-06-08 16:30:18] INFO Ghost booted in 4.463s  
[2026-06-08 16:30:18] INFO Adding offloaded job to the inline job queue  
[2026-06-08 16:30:18] INFO Scheduling job update-check at 51 45 13 \* \* \*. Next run on: Tue Jun 09 2026 13:45:51 GMT+0000 (Coordinated Universal Time)  
[2026-06-08 16:30:18] INFO Adding offloaded job to the inline job queue  
[2026-06-08 16:30:18] INFO Scheduling job process-outbox at 47 0/5 \* \* \* \*. Next run on: Mon Jun 08 2026 16:30:47 GMT+0000 (Coordinated Universal Time)  
[2026-06-08 16:30:18] INFO Running milestone emails job on Tue Jun 09 2026 16:30:18 GMT+0000 (Coordinated Universal Time)  
[2026-06-08 16:30:18] WARN Can’t connect to the bootstrap socket (localhost 8000) ECONNREFUSED.  
[2026-06-08 16:30:18] WARN Tries: 0  
[2026-06-08 16:30:18] WARN Retrying…  
[2026-06-08 16:30:18] INFO URL Service ready in 2122ms  
[2026-06-08 16:30:18] ERROR No webhook secret found - cannot initialise  
[2026-06-08 16:30:18] WARN Can’t connect to the bootstrap socket (localhost 8000) ECONNREFUSED.  
[2026-06-08 16:30:18] WARN Tries: 1  
[2026-06-08 16:30:18] WARN Retrying…  
[2026-06-08 16:30:18] WARN Can’t connect to the bootstrap socket (localhost 8000) ECONNREFUSED.  
[2026-06-08 16:30:18] WARN Tries: 2  
[2026-06-08 16:30:18] WARN Retrying…  
[2026-06-08 16:30:18] INFO Explore Response 200 OK  
[2026-06-08 16:30:18] WARN Can’t connect to the bootstrap socket (localhost 8000) ECONNREFUSED.  
[2026-06-08 16:30:47] INFO Worker for job “process-outbox” online  
[2026-06-08 16:30:47] INFO Worker for job process-outbox sent a message: done  
[2026-06-08 16:30:47] WARN Missing mail.from config, falling back to a generated email address. Please update your config file and set a valid from address  
[2026-06-08 16:30:47] INFO [OUTBOX] No pending outbox entries to process

As you can see, the auto-heal process triggers this error immediately after the URL service is ready: `[2026-06-08 16:30:18] ERROR No webhook secret found - cannot initialise`

However, outbound connectivity seems fine since the Explore ping returns a 200 OK: `[2026-06-08 16:30:18] INFO Explore Response 200 OK`

It looks like the instance is missing the webhook secret entirely. How can I force Ghost to regenerate it or manually inject it into the database/config?

Thanks for your help!

---

<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:** [June 8, 2026, 4:50pm UTC](https://forum.ghost.org/t/network-tab-loading-interrupted-ap-ghost-org-returning-403-to-my-vps-ip/63056/4 "2026-06-08T16:50:28Z")

</div>

And have you changed your domain recently?

It does sound like an issue the administrators of [ap.ghost.org](http://ap.ghost.org) would need to fix though (but not that they need to whitelist your IP).

@Sag can you help with this by any chance?

---

<div class="post-metadata">

**Author:** ![Luca8](https://avatars.discourse-cdn.com/v4/letter/l/3be4f8/32.png) [@Luca8](https://forum.ghost.org/u/Luca8)\
**Post date:** [June 8, 2026, 5:04pm UTC](https://forum.ghost.org/t/network-tab-loading-interrupted-ap-ghost-org-returning-403-to-my-vps-ip/63056/5 "2026-06-08T17:04:28Z")

</div>

Hi Jannis and @Sag,

Yes, the instance is currently running on **`https://epicuro.net`** , but the setup underwent some configurations and directory adjustments during development. The name of the blog started with the domain [hub.curanderie.com](http://hub.curanderie.com) that is still resident in the same server but it is not used anymore It’s highly likely that the central server (`ap.ghost.org`) has a mismatched record or a broken webhook binding for my site.

Here are my current production details to help @Sag clear or reset the registration on your end:

- **Current Domain:** `https://epicuro.net`

- **Ghost Version:** 6.44.1

- **Environment:** Production

If you can purge or reset the registration entries for `epicuro.net` on `ap.ghost.org`, I can restart my instance so the auto-heal system can provision a fresh webhook secret.

Thank you both so much for the incredible support!

---

<div class="post-metadata">

**Author:** ![Sag](https://sea1.discourse-cdn.com/flex015/user_avatar/forum.ghost.org/sag/32/34458_2.png) [@Sag](https://forum.ghost.org/u/Sag)\
**Post date:** [June 9, 2026, 11:05am UTC](https://forum.ghost.org/t/network-tab-loading-interrupted-ap-ghost-org-returning-403-to-my-vps-ip/63056/6 "2026-06-09T11:05:58Z")

</div>

Hey @Luca8,

We’ve recently shipped a [fix](https://github.com/TryGhost/ActivityPub/commit/d233dc260397a64fc28114b350c0bb12e742f784) to allow site domain changes to happen without breaking the Network tab.

Looking at the database behind `ap.ghost.org` and production logs, it seems you’re facing a different problem: your `GET /.well-known/jwks.json` endpoint is currently pointing to the ActivityPub server, whereas it should be pointing to Ghost:  
[https://epicuro.net/ghost/.well-known/jwks.json](https://epicuro.net/ghost/.well-known/jwks.json)

To fix that, ensure your nginx / Caddy configuration is only pointing `/.ghost/activitypub/*` and `/.well-known/(webfinger|nodeinfo)` to `ap.ghost.org` . Other endpoints should point to Ghost. See examples:

- [nginx template](https://github.com/TryGhost/Ghost-CLI/blob/main/extensions/nginx/templates/nginx-ssl.conf)
- [caddy template](https://github.com/TryGhost/ghost-docker/blob/main/caddy/snippets/ActivityPub)

Sag  
Product engineer @ Ghost

---

<div class="post-metadata">

**Author:** ![Sag](https://sea1.discourse-cdn.com/flex015/user_avatar/forum.ghost.org/sag/32/34458_2.png) [@Sag](https://forum.ghost.org/u/Sag)\
**Post date:** [June 9, 2026, 2:35pm UTC](https://forum.ghost.org/t/network-tab-loading-interrupted-ap-ghost-org-returning-403-to-my-vps-ip/63056/8 "2026-06-09T14:35:57Z")

</div>

Closing this topic, as I’m now seeing `@index@epicuro.net` on the Fediverse :)

---

<div class="post-metadata">

**Author:** ![Sag](https://sea1.discourse-cdn.com/flex015/user_avatar/forum.ghost.org/sag/32/34458_2.png) [@Sag](https://forum.ghost.org/u/Sag)\
**Post date:** [June 9, 2026, 2:36pm UTC](https://forum.ghost.org/t/network-tab-loading-interrupted-ap-ghost-org-returning-403-to-my-vps-ip/63056/9 "2026-06-09T14:36:02Z")

</div>


