部署GoToSocial的一些小坑
前言
前几天用星辰云的低价虚拟主机部署了一个激活码生成器,配套之前发布的付费小米手环应用和爱发电,组建了一个完整的软件激活系统。不过就在昨天,星辰云的虚拟主机在早上突然崩了,cname域名在全球都无法解析,停机了好几个小时,但是在电脑上改了host就能使用,工单中居然回复说这是“正常现象”。
于是我将整套服务转移回了之前用过的雨云,租了一台2H2G的Debian服务器,默认安装了宝塔面板。光运行这么个小网站算是大材小用了,我决定用docker搭建一个开源社交平台,以供自己使用。选来选去,我发现了GoToSocial这个项目(下文缩写为“GTS”),不仅低占用,还基于ActivityPub,可以与Mastodon等平台互通!
我的这台雨云服务器正在运行 GoToSocial 0.19.1 和一个微型PHP网站,如果要运行Mastodon或Misskey,2H2G仅仅是最低配置:
部署
配置文件
我在宝塔面板9.0中一键安装了Docker,后续工作将在命令行进行。
Tip:可以通过pwd
命令查看当前文件夹的路径。
查看简体中文版的官方文档:https://docs.gotosocial.org/zh-cn/v0.19.1/getting_started/installation/container/#_2
根据上方的GTS官方文档,创建目录,从官方下载docker-compose.yaml
文件并修改。
此时不要急着部署,先去下载config.yaml
到同一目录(链接见下)。根据官方文档,在docker-compose.yaml
文件中添加以下内容。如果volumes
项已经存在,则加到已有内容的后面,注意缩进。文件路径按需修改。
配置文件:https://codeberg.org/superseriousbusiness/gotosocial/src/branch/main/example/config.yaml
1 |
|
然后开始修改config.yaml
文件。尤其是host
、account-domain
这些部署后无法更改的配置项。详见官方文档:https://docs.gotosocial.org/zh-cn/v0.19.1/configuration/
使用子域名时
如果你要在子域名(如 social.example.com)上运行GTS,你的配置项host和account-domain可能不同,这时候就需要去你的域名提供商配置跳转。可以看看官方文档中提供的中文注释。
1 |
|
这是我的CloudFlare配置,仅供参考。在CloudFlare控制台打开你的域名,侧边栏->规则->概述->创建规则->重定向规则,然后使用下方的表达式,用来匹配。其中的“账号域名”需要改成与上述配置项account-domain
相同的域名。
1 |
|
如果主机名是“账号域名”,并且URI包含“nodeinfo”或“host-meta”或“webfinger”,则进行重定向。
然后在页面下方的 URL重定向(类型为“动态”)中填写表达式,注意第一个参数需要改成自己的GoToSocial实例域名,前面加上https://
,后面不加斜杠:
1 |
|
状态代码可以选301(永久重定向)或302(临时重定向)。
最后点击保存按钮即可。
运行容器
在修改并保存config.yaml
后,在同一目录下执行命令docker-compose up -d
,不出意外的话,应该会出现Creating gotosocial ... done
。
等到命令执行完后,容器大概率是运行不起来的,因为sqlite3会报错(无法创建数据库)。执行命令chmod 777 data
,把将来数据库所在目录设置为777权限。然后再次执行docker-compose up -d
以启动容器。
转到宝塔面板->侧边栏->Docker->容器,如果容器名为gotosocial
的状态是“运行中”,那么你的GTS实例已经成功运行起来了!
我推荐你使用Nginx进行反向代理,自动部署SSL证书,具体步骤请看下一节。
Nginx反代
首先查看官方文档,修改docker compose文件:https://docs.gotosocial.org/zh-cn/v0.19.1/getting_started/reverse_proxy/#_3
在宝塔中依次打开:侧边栏->Docker->容器->你的GTS容器(名字通常是gotosocial)->反向代理,根据页面的问题提示填写后保存。
然后再依次打开:侧边栏->网站->顶栏“反向代理”->刚刚添加的反代域名->设置->SSL,申请一个Let’s Encrypt证书,再应用这个证书即可。
然后你就可以访问属于你自己的社交平台了,GLHF!