discourse踩坑记录

Discourse服务器搭建日志

帮同学搭建了Discourse服务器,这是搭建过程中踩的坑


首先检查网络连接

首先需要启动clash,并知道clash的端口,同时clash需要开启<允许来自局域网的链接>

如果不知道端口可以使用sudo lsof -i -P -n | grep verg查看clash-verge的断口

可以先测试一下端口写的对不对

1
2
3
export http_proxy=127.0.0.1:7897
export https_proxy=127.0.0.1:7897
curl google.com

配制discourse

不要按照 github repo 里面的那个 INSTALL-cloud.md!除非你的网络条件很好(^-^)
建议参考https://github.com/discourse/discourse_docker

1
git clone https://github.com/discourse/discourse_docker.git

可以先运行discourse-setup生成一个默认的配置文件containers/app.yml

然后可以对app.yml做修改

运行./launcher rebuild app后无法访问github

1
fatal: unable to access 'https://github.com/discourse/discourse.git/': GnuTLS recv error (-110): The TLS connection was non-properly terminated.

排查出是因为这时候discourse启动了一个discourse/base的docker容器,在里面执行git pull,所以要把https代理传递给容器

1
./launcher rebuild app --docker-args "--env https_proxy=http://10.19.179.91:7897"

其中10.19.179.91是宿主机的ip,所以clash要打开允许来自局域网的链接

修改templete

discourse提供了一个专门针对中国网络环境优化的templete,可以把 - "templates/web.china.template.yml"加入到app.yml的templete里面

rebuild 没有明显报错,但访问不了discourse

使用discourse_docker搭建的过程中会创建两个容器,一个是discourse/base(rebuild的时候运行rebuild结束就停止了,rebuild过程中输出的信息来自这个容器),另一个是local_discourse/app(最终搭建的discourse服务器,log不会默认输出到控制台)

如果docker ps发现local_discourse/<服务器名称>的容器在运行,但是对应的端口无法访问网页,可以用docker logs <容器的id>看一下这个容器的日志,或者直接docker exec -it <容器的id> /bin/bash进到容器的shell

想删除之前的数据(用户/帖子/管理员帐号密码etc)

数据库不会保存在docker里面,每次rebuild的时候并不会清除上次的数据

docker inspect <容器id> | vim -看一下容器的信息,看一下挂载了那些目录

然后清空这两个目录就行了(应该?)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
"Mounts": [
{
"Type": "bind",
"Source": "/var/discourse/shared/standalone",
"Destination": "/shared",
"Mode": "",
"RW": true,
"Propagation": "rprivate"
},
{
"Type": "bind",
"Source": "/var/discourse/shared/standalone/log/var-log",
"Destination": "/var/log",
"Mode": "",
"RW": true,
"Propagation": "rprivate"
}
],

有关tailscale

受网络环境/防火墙限制,tailscale可能会链接失败/速度非常慢,建议当一个备选方案

因为起初我想用x11-forwarding来改clash的设置,然后那个端口转发太慢了,就在服务器上安装了tailscale

Tailscale 是一种基于 WireGuard 的 VPN 解决方案,使用 WireGuard 协议来创建加密的点对点连接,自动穿透防火墙和 NAT,无需通过中央服务器中转,所以速度很快,也非常好用.

tailscale的原理可以参考官网

https://tailscale.com/kb/1151/what-is-tailscale

https://tailscale.com/blog/how-nat-traversal-works

https://tailscale.com/blog/how-tailscale-works

安装tailscale

1
curl -fsSL https://tailscale.com/install.sh | sh

登陆后,我把这个Tailscale 节点设置为通往 10.19.179.0/24 子网的路由器(感觉子网设太大了,以后可以试一试10.19.179.91/32行不行(就子网只有这一个ip))

1
sudo tailscale up --advertise-routes=10.19.179.0/24

然后我就可以直接在我的电脑上使用suat.ysyx.org或者10.19.179.91访问服务器了


discourse踩坑记录
https://20040702.xyz/2024/12/13/discourse/
作者
Seeker
发布于
2024年12月14日
许可协议