Activitypub with Traefik reveres proxy

I am currently using easypanel which uses traefik in front of docker as my reverse proxy.

How do I correctly set up traefik for to make activity pub work.

Currently getting this

ERROR Could not get webhook secret for ActivityPub FetchError: invalid json response body at https://pupontech.com/.ghost/activitypub/v1/site reason: Unexpected token ‘<’, "<!DOCTYPE "… is not valid JSON
[2025-08-04 18:27:54] ERROR No webhook secret found - cannot initialise

Same problem here.

[2026-01-04 13:29:34] ERROR Could not get webhook secret for ActivityPub FetchError: invalid json response body at ``https://kerscher.li/.ghost/activitypub/v1/si
te/ reason: Unexpected token '<', "<!DOCTYPE "... is not valid JSON
[2026-01-04 13:29:34] ERROR No webhook secret found - cannot initialise

That are my labels:
labels:
- "traefik.enable=true"
# Match both kerscher.li and www.kerscher.li
- "traefik.http.routers.ghost-root.rule=Host(`kerscher.li`) || Host(`www.kerscher.li`)"
- "traefik.http.routers.ghost-root.entrypoints=websecure"
- "traefik.http.routers.ghost-root.tls.certresolver=letsencrypt"
# Redirect www to non-www
- "traefik.http.middlewares.root-redirect-www.redirectregex.regex=^https?://www.kerscher.li/(.*)"
- "traefik.http.middlewares.root-redirect-www.redirectregex.replacement=https://kerscher.li/$$1"
- "traefik.http.routers.ghost-root.middlewares=root-redirect-www"
- "traefik.http.routers.ghost-root.priority=1000"
- "traefik.http.services.ghost-root.loadbalancer.server.port=2368"
- "traefik.docker.network=traefik-public"
# ActivityPub Settings
- "traefik.http.middlewares.sslheader.headers.customrequestheaders.X-Forwarded-Proto = http"
- "traefik.http.routers.ghost-root.service=ghost-server"
- "traefik.http.services.ghost-server.loadbalancer.passhostheader=true"
# Activity Pub
- "traefik.http.services.ghost-activitypub.loadbalancer.passhostheader=true"
- "traefik.http.services.ghost-activitypub.loadbalancer.server.url=https://ap.ghost.org"
- "traefik.http.routers.ghost-activitypub.entrypoints=websecure"
- "traefik.http.routers.ghost-activitypub.service=ghost-activitypub"
- "traefik.http.routers.ghost-activitypub.tls=true"
- "traefik.http.routers.ghost-activitypub.tls.certresolver=leresolver"
- "traefik.http.routers.ghost-activitypub.rule=Host(`kerscher.li`) && (PathPrefix(`/.ghost/activitypub/`) || Path(`/.well-known/webfinger`) || Path(`/.we>

Same here, I just can’t use Ghost behind Nginx as reverse proxy.

@ajfriesen posted this link on another thread: Ghost 6 and ActivityPub behind Traefik on Docker

Thanks, I figured it out making some adjustments on my end and now I’m looking to get into Activitypub :slight_smile: