ActivityPub在traefik下如何配置
最近换Dokploy去部署我的Ghost网站,Dokploy默认使用traefik代理流量,如果是默认的Compose File,可以正常打开网站,但是ActivityPub却无法正常连接,就像之前在nginx反代的场景下,如果不修改nginx的代理文件,ActivityPub照样无法正常运行,如果你在使用nginx,那么可以参考我之前的文章。
这里说的是在traefik代理流量的场景,查阅了网上的资料,基本上是找不到现成的解决办法的。那么只有自己手动研究,算了,为了这个功能去把traefik研究一遍,这个难度也太大了,还是还是交给AI去处理吧,我试过好几个工具,都不能解决问题,最后我还是交给DeepSeek后才把问题解决,DS确实厉害。
labels:
# ---------- 1. 后端服务声明(主博客) ----------
- traefik.http.services.ghost-svc.loadbalancer.server.port=2368
# ---------- 2. 外部服务声明(ActivityPub 代理目标) ----------
# 定义一个 upstream 指向 ap.ghost.org,Traefik 会将请求反向代理过去
- traefik.http.services.ap-ghost.loadbalancer.server.url=https://ap.ghost.org
# ---------- 3. 中间件:设置请求头(模拟 Nginx 的 proxy_set_header) ----------
- traefik.http.middlewares.ap-headers.headers.customrequestheaders.X-Forwarded-For={{ .RemoteAddr }}
- traefik.http.middlewares.ap-headers.headers.customrequestheaders.X-Forwarded-Proto=https
- traefik.http.middlewares.ap-headers.headers.customrequestheaders.X-Real-IP={{ .RemoteAddr }}
- traefik.http.middlewares.ap-headers.headers.customrequestheaders.Host=ap.ghost.org
# ---------- 4. 路由 A:ActivityPub 及联邦协议路径(代理到官方) ----------
- traefik.http.routers.ghost-ap.rule=Host(`typenode.net`) && (PathPrefix(`/.ghost/activitypub`) || PathPrefix(`/.well-known`))
- traefik.http.routers.ghost-ap.entrypoints=websecure
- traefik.http.routers.ghost-ap.tls.certresolver=letsencrypt
# 使用外部服务,并应用头部中间件
- traefik.http.routers.ghost-ap.service=ap-ghost
- traefik.http.routers.ghost-ap.middlewares=ap-headers@docker
# ---------- 5. 路由 B:主网站正常访问(兜底匹配) ----------
- traefik.http.routers.ghost.rule=Host(`typenode.net`)
- traefik.http.routers.ghost.entrypoints=websecure
- traefik.http.routers.ghost.tls.certresolver=letsencrypt
- traefik.http.routers.ghost.service=ghost-svc
# 👇 http-header
- traefik.http.middlewares.ghost-secure.headers.framedeny=true
- traefik.http.middlewares.ghost-secure.headers.browserXssFilter=true
- traefik.http.middlewares.ghost-secure.headers.contentTypeNosniff=true
- traefik.http.middlewares.ghost-secure.headers.stsSeconds=31536000
- traefik.http.middlewares.ghost-secure.headers.stsIncludeSubdomains=true
- traefik.http.middlewares.ghost-secure.headers.stsPreload=true
- traefik.http.middlewares.ghost-secure.headers.referrerPolicy=strict-origin-when-cross-origin
- traefik.http.routers.ghost.middlewares=ghost-secure
上面的代码直接放进Dokploy里面你的Ghost项目Compose File里面即可,位置放到services→ghost,volumes的下面即可。
上面的配置内容不仅包括了ActivityPub正常运行的内容,为了提升网站的安全性,还额外增加了http-header相关的内容。
