自马斯克收购 twitter 后幺蛾子不断,最近更是封杀了第三方客户端,这下我常用的 tweetbot 也不能用了。所以有些人已经开始转向其他平台了,其中以 mastodon 和 nostr 最为流行,我大概了解了一下两个平台,感觉 mastodon 的方式相对更为合理,所以也开始试用了一下。当然 nostr 的 damus 客户端我也下载试用了。
mastodon 只是基于 activitypub 协议的一种最为流行的实现。目前社区应该还挺活跃的,中文用户有很多。不过 mastodon 是使用 ruby 开发的,而且算是面向人数较多的一个大平台,我又想自己部署,所以又找了消耗资源相对较少的其他实现,这其中 gotosocial 算是以此目的一种实现。我这里就只简单记录一下我自己是如何部署 gotosocial 的。
我之前已经有一套基于 docker swarn 的环境,在此基础上新开一个 gotosocial 是非常简单快速的。官方文档给出了如何使用 docker 部署,我参考了 docker compose 的 yaml 文件创建了自己的 stacks 配置完成的部署。
- 先建好 volume,因为 gotosocial 使用 sqlite,还要存很多图片所以会占用比较大的空间,可以设置单独一个新的硬盘,如果你和我一样是使用低配 vps 的话,因为我的 vps 只有 10GB,加上系统和其他服务,剩余的空间不多了,所以我又单独加了一块硬盘空间给 gotosocial 使用。
- 新建 stacks,我是参考了官方的 yaml。network 是使用了已有的 nginx 网络,因为会由 nginx 转给相当于在 docker 内网的 gotosocial,所以 gotosocial 也不配置 https 证书,不设置 port。volume 使用上一步创建的 vol。剩下的就是 host 和 db type 和 db path 了,使用默认的就好。
version: "3.3"
services:
gotosocial:
image: superseriousbusiness/gotosocial:latest
networks:
- nginx-net
environment:
GTS_HOST: mb.bobobo80.com
GTS_DB_TYPE: sqlite
GTS_DB_ADDRESS: /gotosocial/storage/sqlite.db
GTS_LETSENCRYPT_ENABLED: "false"
GTS_LETSENCRYPT_EMAIL_ADDRESS: ""
## For reverse proxy setups:
# GTS_TRUSTED_PROXIES: "172.x.x.x"
volumes:
- gotosocial_data:/gotosocial/storage
restart: "always"
volumes:
gotosocial_data:
external: true
networks:
nginx-net:
external: true
- stack 建好后,启动服务,gotosocial 就在 docker 内网里启动起来了。之后就是 nginx 的设置了,使用已有的 nginx proxy manager,把 mb.bobobo80.com 转发给 gotosocial 的 8080 端口(是 gotosocial 的默认端口),开启强制 https 并自动续期签名,就可以和外网连接起来了。
- gotosocial 的第一个用户是需要用命令行创建的,所以还要按照官网的命令创建第一个用户。
至此,整个 gotosocial 就算是搭建好了。因为 gotosocial 没有提供前端页面(实际是有几个页面的,但是不能发推),所以要使用其他客户登录,然后才能使用。我用网页版 pinafore 和 mastodon ios 客户端都可是正常使用。
最后,再说 2 个需要注意的地方。服务内存占用不大,我现在还没怎么使用内存占用应该再 20-50MB,不过硬盘占用会相对大一点,所以主要硬盘空间。第二点,目前 gotosocial 还没有开发迁移功能,现在还不能迁出,所以如果开始自己的服务时还是想好域名,因为一旦开始写内容了,发现域名不合适就改不了了。
欢迎关注我的 activitypub 账号@[email protected]