期待已久的Ghost 6.0 终于发布了!这个版本是万众期待的更新,它允许自托管用户在其 Ghost 网站上使用“社交网络”。这无疑是个好消息,但对我来说却相当头疼。为了迎接这次更新,我之前已经将我的一个网站“Canadian Cyber Freedom”迁移到了 Ghost。Ghost 似乎并没有直接将 ActivityPub 支持集成到 Ghost 中(这似乎有点奇怪),而是需要两个新的容器(以及多个用于分析支持的容器)。
不幸的是,当你将 Ghost 容器升级到版本 6 时,这些都不清楚。社交网络支持看起来是开启的,但实际上并不起作用。我立即查看了文档,上面说你只需要更新环境变量。这让我意识到我需要通过检查新的docker-compose.yaml文件来配置其他容器。与官方建议相反,我运行的是 Mariadb 而不是 mysql,这对activitypub-migrate
容器来说是一个硬性停止,所以如果你也这样做,你需要设置一个新的 mysql 容器来支持 activitypub。
我希望那些还在为如何通过 Ghost 进行联邦验证而苦恼的人能从这篇文章中受益。设置完成后,务必定期清除缓存和 Cookie,直到确认一切正常。如果您在登录隐身标签页后能够加载 Ghost 的新版本,则说明您的配置已正确完成。
变化
Nginx 变更
您需要确保 fediverse 请求由activitypub
容器处理。我选择的端口是任意的,但您可以在 Compose 文件中配置自己的端口。
以下是我的设置:
location ~ /.ghost/activitypub/* { proxy_pass http://localhost:2369; proxy_set_header X-Forwarded-For $remote_addr; add_header Access-Control-Allow-Origin *; proxy_set_header Host $host; } location ~ /.well-known/(webfinger|nodeinfo) { proxy_pass http://localhost:2369; proxy_set_header X-Forwarded-For $remote_addr; add_header Access-Control-Allow-Origin *; proxy_set_header Host $host; }
Docker-compose 更改location ~ /.ghost/activitypub/* { proxy_pass http://localhost:2369; proxy_set_header X-Forwarded-For $remote_addr; add_header Access-Control-Allow-Origin *; proxy_set_header Host $host; } location ~ /.well-known/(webfinger|nodeinfo) { proxy_pass http://localhost:2369; proxy_set_header X-Forwarded-For $remote_addr; add_header Access-Control-Allow-Origin *; proxy_set_header Host $host; }
您需要将两个新容器添加到您的 docker-compose.yaml 并配置正确的 DB。activitypub activitypub-migrate
只需要完成它的工作,因此您可以在需要时使用docker-compose up
或docker-compose restart activitypub-migrate
重新启动它。
activitypub: image: ghcr.io/tryghost/activitypub:edge restart: always volumes: - ./ap_uploads:/opt/activitypub/content ports: - 2369:2369 environment: PORT: 2369 NODE_ENV: production MYSQL_HOST: mysql MYSQL_USER: root MYSQL_PASSWORD: YOUR_PASSWORD_HERE MYSQL_DATABASE: activitypub LOCAL_STORAGE_PATH: /opt/activitypub/content/images/activitypub LOCAL_STORAGE_HOSTING_URL: https://YOUR_WEBSITE/content/images/activitypub depends_on: - mysql activitypub-migrate: image: ghcr.io/tryghost/activitypub-migrations:edge environment: MYSQL_DB: mysql://root:YOUR_PASSWORD_HERE@tcp(mysql:3306)/activitypub depends_on: - mysql
有用的资源:activitypub: image: ghcr.io/tryghost/activitypub:edge restart: always volumes: - ./ap_uploads:/opt/activitypub/content ports: - 2369:2369 environment: PORT: 2369 NODE_ENV: production MYSQL_HOST: mysql MYSQL_USER: root MYSQL_PASSWORD: YOUR_PASSWORD_HERE MYSQL_DATABASE: activitypub LOCAL_STORAGE_PATH: /opt/activitypub/content/images/activitypub LOCAL_STORAGE_HOSTING_URL: https://YOUR_WEBSITE/content/images/activitypub depends_on: - mysql activitypub-migrate: image: ghcr.io/tryghost/activitypub-migrations:edge environment: MYSQL_DB: mysql://root:YOUR_PASSWORD_HERE@tcp(mysql:3306)/activitypub depends_on: - mysql
已知实例
任何由 ghosts 托管服务的网站都应该已经可以访问了。现在您可以通过 fediverse 的@[email protected]
账号关注这些网站。但我担心自托管设置会遇到我遇到的问题。我注意到@[email protected]运行良好,但@[email protected]却不行。
您可以通过访问example.com/.ghost/activitypub/users/index/
并查看是否收到回复或错误来测试自托管 ghost 实例是否已配置 activitypub。
感谢您通过 RSS 阅读本文📡