一个服务器支持两个 Discourse 社区?

好的,这说得通。我想我用 Mailgun 应该没问题。

等我开始设置多站点时,我会更好地理解这一切!

3 个赞

我插个话,因为我正处于与 @alltiagocom 类似的情况——我已经为我的主要社区在小型 Hetzner 服务器上安装了 Discourse,但私下里一直在考虑,等我对情况熟悉了之后,将一些其他的 Facebook 群组迁移到 Discourse 上。

我对“WordPress 多站点”很熟悉,但我了解到 Discourse 的多站点涉及更多内容。我想知道运行两个(或更多)独立站点与多站点相比,哪个会更省心。

对此有什么见解吗?

多站点设置的维护开销肯定会更少,从而减少麻烦,但您的体验可能有所不同 (YMMV)。

1 个赞

对于 Discourse 新手,我建议只运行两个站点。

我创建了一个关于如何运行无需反向代理的多站点的主题,但它现在已经过时了。

我认为唯一需要更改的是

可以用新的

DISCOURSE_HOSTNAME_ALIASES: domain.com,other.domain.com
2 个赞

我的一点看法,在借助我的旧笔记、ChatGPT、Claude、Discourse 的 AI 机器人以及这里分享的一些主题(在对整个过程做了笔记和更多笔记之后)花了一整天时间研究这个问题。

直到我需要添加反向代理时,一切似乎都运行正常。我的第一个实例之前运行正常,但现在却不行了。我又向 Discourse 的 AI 机器人问了几个问题,但由于是我的第一天,它停止工作了。这是该机器人新用户的限制。一直非常乐于助人的 Claude 也停止了,因为我使用的是免费版本。ChatGPT 是所有工具中最不可靠的,所以我总是带着极大的犹豫来对待它所有的回复……

然后我又来到论坛,开始阅读一些关于这个主题的帖子,其中一些是 @pfaffman 写的。那是最后一根稻草。对我来说太复杂了,技术术语太多,我甚至不知道该问什么。

总结:我的第一个实例之前是工作的,所以我将把它恢复到原来的状态(将 app.yml 文件编辑回更改之前的样子)。我正在输入时进行重建。

说实话,尽管存在所有复杂性,即使克服了第一个大障碍后可以添加更多社区,但我认为节省每月 4 美元来增加一个社区并不是世界末日。由于我已经知道如何在 Hetzner 上设置服务器然后安装 Discourse,我将坚持现在使用 2 个社区,为它们支付 8 美元,然后继续前进。考虑到几个月前我为 Digital Ocean 的一个液滴支付 12 美元,如果我愿意,我可以付出同样的努力来支付 3 个社区的费用。

尽管如此,我总是觉得这些冒险很有趣,因为我一路上学到了新东西,最后,我至少可以说出为什么我不想这样做,而不是只说“我不会做,因为我不知道我是否能做到”。

我很感谢大家在这里花费的时间和提供的帮助,希望这个主题能帮助到其他想实现我正在尝试实现的目标的人。

:raising_hands:
完毕!

7 个赞

这正是我说你需要重新考虑你的策略的原因,虽然你试图实现的目标并非不可能,因为它以前有人做过,但要做好它需要对“discourse”(论述/话语系统)有深刻的理解。

如果你想更多地了解“discourse”是如何运作的,我建议你在空闲时间继续实验,我们这里大多数人都是这样学到的。

9 个赞

我花了比我愿意承认的更长的时间才(大部分)弄明白!

5 个赞

6 个帖子被拆分到一个新主题:单个 Discourse 站点有多个应用程序容器

我正在记录一个受支持的 Discourse 多站点安装,作为逐条命令的运行手册

我之前尝试过“在一台服务器上进行多个独立安装”的方法,但该配置是不受支持的。本文档仅关注受支持的多站点架构,并以线性格式重写,以供偏好明确步骤的人员使用。


这是什么(受支持的)

  • 一个 Discourse 应用容器(app
  • 通过 multisite.yml 启用多站点
  • 共享的 Postgres + Redis(由 Discourse 管理)
  • 通过Unix 套接字连接(不需要 Docker 网络)
  • 多个主机名在内部路由到不同的站点

这不是什么

  • HAProxy 后的多个独立 Discourse 容器
  • 通过排空应用节点进行的滚动重建
  • 每站点 SMTP 凭据(SMTP 是共享的)

操作注意事项(以确保期望正确)

重建/停机时间

在多站点中,只有一个应用容器,因此 ./launcher rebuild app 将重启唯一的节点。这意味着所有站点都会出现短暂的停机时间。

证书/主机验证

将所有主机名添加到 DISCOURSE_HOSTNAME_ALIASES,以便 Let’s Encrypt + 主机验证能够可靠地工作。

备份/稍后迁移

每个站点都在 /admin/backups 中创建自己的备份。稍后将站点备份恢复到独立安装是正常的迁移路径。


完整的受支持的多站点运行手册(逐条命令)

0) 主机先决条件

步骤 命令
更新系统 apt-get update && apt-get upgrade -y
安装依赖项 apt-get install -y git curl sudo

1) 安装 Discourse Docker

步骤 命令
克隆仓库 git clone https://github.com/discourse/discourse_docker.git /var/discourse
进入目录 cd /var/discourse

2) 安装第一个站点(先是单站点)

步骤 命令
运行设置 ./discourse-setup

这会创建 /var/discourse/containers/app.yml 并启动第一个主机名(例如 forum1.example.com)。


3) 启用多站点

步骤 命令
创建配置目录 mkdir -p /var/discourse/config
编辑多站点文件 nano /var/discourse/config/multisite.yml

示例 multisite.yml

forum1:
  host_names:
    - forum1.example.com

forum2:
  host_names:
    - forum2.example.com

4) 编辑 app.yml 以启用多站点 + 主机名别名

步骤 命令
编辑 app.yml nano /var/discourse/containers/app.yml

添加:

  • DISCOURSE_MULTISITE: true
  • DISCOURSE_HOSTNAME_ALIASES: forum1.example.com,forum2.example.com

5) 重建

步骤 命令
重建 ./launcher rebuild app

6) 迁移多站点数据库

步骤 命令
进入容器 ./launcher enter app
运行多站点迁移 rails multisite:migrate
退出 exit
步骤 命令
重启 ./launcher restart app

7) 验证

访问:

  • https://forum1.example.com
  • https://forum2.example.com

每个站点都有自己的管理员、用户、上传和备份。


8) 备份/稍后迁移

每站点管理员:

  • /admin/backups

如果以后想将站点拆分到自己的服务器上,请将该备份恢复到独立安装中。


如果以上任何内容与当前最佳实践冲突,我乐意更新此运行手册——目的是提供一个线性的受支持的多站点清单,以减少试错。

2 个赞