今天试了下用宝塔面板的dokcer一键安装 discourse

先看入口,docker应用商店里直接搜关键词,就能找到discourse的镜像,点击安装

.

点击安装后跳出如下提示:

按照提示录入相关信息即可,主要是SMTP,和外部域名这块,一定要填合适

安装成功的截图

这个时候,访问域名会发现如下提示:

Register Admin Account

Unfortunately, no administrator emails were defined during setup, so finalizing the configuration may be difficult. Please add a developer email in the configuration file or create an administrator account from console.

我们直接点击蓝色链接,看下原因,是没有创建管理员账户

然后,点击容器,选择这个终端

在控制台中,运行以下命令:

rake admin:create

系统将提示您输入:

  • 电子邮件

  • 密码

  • 重复密码

将创建一个新帐户,其用户名基于电子邮件地址。您将看到:“Account created successfully with username {username}”。当被问及是否要授予管理员权限时,按 Enter 确认。

如果成功,您将看到:“Your account now has Admin privileges!”

访问域名,发现安装成功了

部署还挺方便挺快的。

Discourse部署最大的问题是网络条件的问题,如果网络条件比较好的话,部署都通常比较快。

容器和代码都在 GitHub 上面,对中国用户这真的不是非常友好,很多组件下载不下来。

有时候在想这个问题也不应该完全怪 discourse 吧,谁让我们有个那个什么对吧。

宝塔安装还是会端口冲突,问了ai终于解决了

如果在 /var/discourse/containers/ 目录下找不到 app.yml,通常是因为你在使用 XShell 运行官方的 ./discourse-setup 自动配置脚本时,中途因为刚才的 DNS 验证失败 或 端口被占用 报错退出了。

官方脚本只有在所有验证全部通过后,才会根据你的输入自动生成 app.yml。如果中途卡住,这个文件确实就不会存在。

别担心,既然我们已经知道了要在宝塔共存,我们可以通过以下两种方法来解决:

方法一:用原本就有的模板复制一个(最推荐)
Discourse 官方其实在 samples 文件夹里为你准备好了模板。我们可以直接复制一个出来,手动跳过验证。

在 XShell 中执行复制命令:

Bash
cd /var/discourse
cp samples/standalone.yml containers/app.yml
刷新宝塔面板:
现在回到宝塔后台的 /var/discourse/containers/ 目录,刷新一下,你就会看到 app.yml 出现了!

在宝塔里双击打开 app.yml,修改以下几项关键配置:

端口修改(找 expose:):

YAML
expose:
  - "8080:80"   # 修改为 8080
  - "8443:443"  # 修改为 8443
域名和邮箱(向下滑动找到对应的项):

YAML
DISCOURSE_HOSTNAME: 'www.dalao.cc'
DEVELOPER_EMAILS: '你的管理员邮箱@example.com'
SMTP 邮件设置(根据你的邮箱服务商填写):

YAML
DISCOURSE_SMTP_ADDRESS: smtp.xxx.com
DISCOURSE_SMTP_PORT: 465
DISCOURSE_SMTP_USER_NAME: '你的发件箱@xxx.com'
DISCOURSE_SMTP_PASSWORD: '你的条客户端授权码'
保存文件,回到 XShell 运行强制构建:

Bash
./launcher rebuild app
方法二:在 XShell 里用临时端口重新运行向导
如果你觉得手动改模板文件太麻烦,怕格式搞错,我们可以让官方的安装向导重新跑一遍,但在启动前,先把宝塔的 Nginx 暂时关掉几分钟,等它通过验证并生成 app.yml 后,我们再去宝塔里改端口。

在 XShell 中暂时停止宝塔 Nginx(释放端口让向导通过):

Bash
/etc/init.d/nginx stop
重新运行向导:

Bash
cd /var/discourse
./discourse-setup
一路输入你的信息:
这时候因为 80/443 端口空出来了,DNS 验证也会顺利通过。输入完域名、邮箱、SMTP 后,脚本会开始自动构建。

去宝塔里改端口:
等它构建完成后,去宝塔后台的 /var/discourse/containers/app.yml 里,把 expose: 下面的 80:80 改成 8080:80,443:443 改成 8443:443 并保存。

在 XShell 里让配置生效:

Bash
./launcher rebuild app
重新启动宝塔 Nginx:

Bash
/etc/init.d/nginx start
现在,两种方法都能让你顺利拿到 app.yml 并且避开冲突。接下来就可以去宝塔「网站」里添加 www.dalao.cc 并配置反向代理(指向 http://127.0.0.1:8080)了!