普通视图

宝塔面板Docker分域部署GoToSocial

2025年9月23日 21:27

宝塔面板Docker分域部署GoToSocial - 第1张图片

GoToSocial是什么,我在《WordPress集成Mastodon嘟文之插件篇-Include Mastodon Feed》有所提及。用官方的解释“GoToSocial是一个用Golang编写的ActivityPub社交网络服务器,它提供了一个轻量级、可定制且以安全为重点的入口,进入 Fediverse(联邦宇宙)”。也就是说GoToSocial和Mastodon一样,都是一个进入联邦宇宙的工具。进入联邦宇宙的工具可远远不止这两种哟,有兴趣的可以百度自己折腾下。有了Mastodon,为什么还有一部分人选择GoToSocial呢,正如我之前说过的,Mastodon太重量了,太吃服务器资源,至少需要2C2G的服务器,所以很多人感觉到花了这么大的成本,但是只能得了一点点的功能,感觉有些不值得。而GoToSocial却不同,他是非常的轻量,单用户使用的话,只占不到100M的内存。但是呢,GoToSocial只有服务端也就是我们正常说的后端没有前端,WEB版前端我们可以选择鹿鸣elk.zone等工具。

什么是分域部署GoToSocial,我们在部署GoToSocial时可以直接使用顶级域名来部署,但是用顶级域名无形之中增加了成本,所以很多人选择了用二级域名来部署GoToSocial。比如我部署GoToSocial的二级域名是social.laozhang.org,我创建的用户名是laozhang,那么在联邦宇宙里展示出的账号就是laozhang@social.laozhang.org。这样在联邦宇宙里展示的账号感觉太长不好看也没有个性,那我们就可以通过分域部署,来达到使用二级域名部署GoToSocial,但是在联邦宇宙里显示的用户名却是顶级域名,也就是让你可以装X。比如通过分域部署后,我的原来账号laozhang@social.laozhang.org在联邦宇宙里显示的是laozhang@laozhang.org。

特别提醒的是,如果用二级域名分域部署GoToSocial,务必在第一次启动 GoToSocial 前完成。用官方的解释是“一旦与他人联合后就无法更改域名布局。服务器会因此产生混淆,而你需要说服每个与你联合的实例管理员修改其数据库来解决问题。同时,你还需要在本地重新生成数据库,创建一个新的实例账户和加密密钥对。”

新建GoToSocial目录

在合适的位置新建GoToSocial目录,并建data文件夹,设置如下图。我习惯把Docker的目录都建在一起,方便管理。

宝塔面板Docker分域部署GoToSocial - 第2张图片

创建docker-compose.yaml并修改相关配置

在刚的GoToSocial目录下新建docker-compose.yaml,将下面的代码复制保存,注意修改为自己的配置。

services:
gotosocial:
image: superseriousbusiness/gotosocial:latest
container_name: gotosocial
user: 1000:1000
networks:
- gotosocial
pull_policy: always 
environment:
GTS_HOST:"social.laozhang.org" #实例地址
GTS_ACCOUNT_DOMAIN:"laozhang.org" #用户账户所属的域名,如果使用二级子域名而非主域搭建例请整行删除
GTS_DB_TYPE: sqlite #使用sqlite数据库
GTS_DB_ADDRESS: /gotosocial/storage/sqlite.db
GTS_STORAGE_BACKEND: s3 # 使用S3存储 ,如果不需要可以删除包含STORAGE的环境变量
GTS_STORAGE_S3_BUCKET: user #桶名
GTS_STORAGE_S3_ENDPOINT: s3.bitiful.net #S3端点
GTS_STORAGE_S3_ACCESS_KEY: kmX5VsV8cB4ma8jeAg #
GTS_STORAGE_S3_SECRET_KEY: DJ9qG7pNAZy9 #密钥
GTS_STORAGE_S3_PROXY: true #代理S3,不会显示S3地址
GTS_ACCOUNTS_ALLOW_CUSTOM_CSS: true #允许自定义CSS
TZ: Asia/Chongqing #时区
GTS_SMTP_HOST: mail.cock.li #smtp服务器
GTS_SMTP_PORT: 587 #必须使用TLS
GTS_SMTP_USERNAME: admin@cock.li #用户名
GTS_SMTP_PASSWORD: ****** #密码
GTS_SMTP_FROM: admin@cock.li #邮箱地址
GTS_INSTANCE_LANGUAGES: zh #中文
GTS_ACCOUNTS_REGISTRATION_OPEN: true #开放注册
GTS_TRUSTED_PROXIES: 172.18.0.1/16 #可信代理
ports:
- "127.0.0.1:8080:8080"
volumes:
- ./data:/gotosocial/storage #修改映射目录为第一步创建的GoToSocial目录
restart: "always"

networks:
gotosocial:
ipam:
driver: default
config:
- subnet: "172.18.0.0/16"
gateway: "172.18.0.1"

修改顶级域名重定向规则

打开顶级域名laozhang.org的网站设置,在配置文件里增加下面代码

    # GoToSocial 重定向规则,不玩gotosocial就删除
    location /.well-known/webfinger {
        rewrite ^.*$ https://social.laozhang.org/.well-known/webfinger permanent;
    }

    location /.well-known/host-meta {
        rewrite ^.*$ https://social.laozhang.org/.well-known/host-meta permanent;
    }

    location /.well-known/nodeinfo {
        rewrite ^.*$ https://social.laozhang.org/.well-known/nodeinfo permanent;
    }
     # GoToSocial 重定向规则,不玩gotosocial就删除,结束

运行、创建用户、增加管理员权限

使用ssh工具远程连接到服务器,并进入到刚才创建的GoToSocial目录

运行

docker compose up -d

创建用户,注意自行修改用户名、密码、邮箱

docker exec -it gotosocial ./gotosocial admin account create --username admin --email YOUR@EMAIL.COM --password SOME_VERY_GOOD_PASSWD ;

增加管理员权限

docker exec -it gotosocial ./gotosocial admin account promote --username admin

新建网站,反代

创建social.laozhang.org域名的网站,进行反代。至此全部完成,我们在正常管理gotosocial的时候,当然还是使用二级域名,分域的目的就是在联邦宇宙里显示的账号是顶级域名的。

ActivityPub 与去中心化社交

2025年9月7日 20:35

ActivityPub 与去中心化社交 - 第1张图片

什么时候开始聊起 Mastodon,已经不太记得,我曾经提过一次,群里如果想玩的人多,一起部署一个实例,后面不了了之;1900 最近分享部署 GoToSocial 的心得,带动了几个群友一起入坑,韩宇提议要不部署一个实例一起使用,我表示赞同,并提供 yxvm 的服务器使用,然而一周不到,从开始到放弃。

Mastodon 始于2016年,一个开源项目,往大了讲,是组成联邦宇宙的服务之一,具体我也不是很清楚。凭我的感觉来说,Mastodon 似乎一直不温不火,像是 Twitter 的替代品,在 Elon Musk 收购 Twitter 之后,以及 Twitter 限制用户使用频率期间,都有一大批用户逃离 Twitter,拥抱 Mastodon,我也是其中之一,甚至还有工具支持一键迁移关注者(只需在 Twitter 的 Bio 上备注 Mastodon 的用户名),称之为 Twitter 难民。

但 Twitter 改名 X 之后,仍然活得好好的,Mastodon 也没有将其取而代之,包括后面 Meta 推出的 Threads,我感觉只要 Twitter 仍然存在,同类型的软件或服务便很难取代它,即使做得再好,也很难改变一个人的使用习惯,我体验过 Mastodon、Threads,熟悉的人和内容仍然在 Twitter 上,切换到另一个软件上则十分不适应。

以上内容来自四个月前的 Obsidian 笔记,当时群里都热衷部署 Mastodon 和 GoToSocial,本想继续往下写,但最终还是昙花一现,现在也只是偶尔提一提。今天重新拾起,是因为上周在 WordPress 上安装了 ActivityPub 插件,我的理解是它将 WordPress 博客作为一个去中心化的节点,连接去中心化社交网络,因此可以在 Mastodon、GoToSocial、FriendicaMisskey 等联邦平台通过搜索huhexian@yinji.org来关注我,WordPress 上发布的博客都会自动同步一条动态至联邦平台,在联邦平台留下的评论或点赞,都会同步反馈到 WordPress。

ActivityPub 与去中心化社交 - 第2张图片

前段时间短暂体验 Ghost,在 6.0 版本中新增了 Fediverse 功能,即我上面提到的去中心化社交网络,不用安装任何插件,也是同样的原理,有点不同的是 WordPress 只能同步新文章动态,而 Ghost 完全可以作为一个联邦平台使用,不仅同步新文章动态,还可以自己发布内容。

ActivityPub 与去中心化社交 - 第3张图片

那天我发了一句话,这确实是我理想中的去中心化,不用自己部署类似 Mastodon 一样的服务,不用额外注册账号,不用费尽心思选择实例,只要部署一个 Ghost,既可以写博客,也可以发动态,通过去中心化社交网络,可以浏览别人的内容。

目前 WordPress 上的 ActivityPub 插件还没有类似的功能,希望后续能跟上。有意思的一个点,在使用 Ghost 的时候,同步了几条动态到 Fediverse 上,但我删除 Ghost 之后,Fediverse 上的内容仍然保存着,包括账号、动态、点赞,以及别人的评论,博友老刘戏称我在 Fediverse 上拉了一坨屎,然后扬长而去。

什么是 Mastodon(长毛象),应该怎么玩

WordPress 的 ActivityPub 插件

社交平台和短视频一样,会让有一种刷不完、看不完的错觉,每天醒来、睡前习惯性地打开 Twitter、微博等平台,刷一刷看一看,我觉得这其实不是好习惯。人还是要有具体的生活。出门,下楼,去街道,去自然中,吹野外的风,见到人群,见到动物,摸摸花草和树。不能关上房门在互联网大战风车。人会坏掉的。

所以还是写博客吧。


说一句题外话,又想把博客评论关掉了,原因可以看上一篇文章评论区。

ActivityPub 与去中心化社交》最先出现在印记

❌