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-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的时候,当然还是使用二级域名,分域的目的就是在联邦宇宙里显示的账号是顶级域名的。
access key 以及secret建议打码哦
折腾起来还有点意思,但真说用的话,感觉现代人越来越少社交了
@花非花: 就是的,所以感觉为了使用的话,不如直接用官方的拉倒。
又部署了一个gts?不用长毛象了?
@老刘: 这个是当时和你们一起建的呀,放在那里吃灰。
感觉我似乎用不上
@满心: 可以直接用官方毛长象。
我之前在guthub上看到过这个项目 但我貌似也用不上哎
老张,你这教程写得真细致,分域部署GoToSocial的思路很棒,尤其联邦宇宙里显示顶级域名那个装X小技巧太有意思了!💡 之前一直想给自家实例换个短一点的用户名,看了你的方法才明白原来这么简单。不过S3的密钥还是建议直接打码啊,安全第一嘛。👍 整个过程跟着步骤走,感觉宝塔面板真是个好东西,部署起来省心多了。期待后续你出更多关于GoToSocial的教程,比如怎么优化性能之类的。🚀