我想托管数百个 Discourse 实例

  1. 我想托管数百个 Discourse 实例。是否可以在单个主机/Droplet 上安装多个 Discourse?URL 格式如下:example.com/City1、example.com/City2、example.com/City3 等(即每个城市一个独立的 Discourse 实例)。

  2. 因为子域名成本较高,而我需要超过 100 个子域名。

  3. 如何将论坛设置复制到另一个论坛?因为我希望将所有 Discourse 实例都应用相同的设置。

  4. 是否有一种方法可以一次性在多个实例上安装插件?

我想启动一个社交平台,但需要为每个城市部署独立的实例。

您需要多站点安装。所有站点将使用相同的插件。

子域名无需额外费用。您只需要一条通配符 DNS 记录即可。使用子域名会方便得多。我不确定子文件夹代码在多站点环境中是否经过测试。

虽然许多设置可以通过环境变量进行配置(尽管这些设置对所有站点都相同,这对于像 S3 这样的场景是可以接受的,但对于像 POP 邮箱这样的场景则不然),但为所有站点应用设置的最佳方式可能是使用插件。您还可以从 Web 界面中隐藏某些设置。

如果您有预算,我可以协助处理所有这些事项。

我有 GoDaddy 域名,但他们最多只提供 100 条记录,而我需要大约 500 条。
因为有 500 个区县/城市。

哪个插件?

抱歉,我在这方面没有太多预算,因为这是一项社会公益项目。目前我计划先在 1 个城市进行测试,然后通过捐赠筹集资金。

我之前就说过,这听起来像是一种成本高昂的做法。

如果设置相同,那为什么要有 500 个独立的邮件源、500 个独立的审核队列、500 个独立的 Discourse 备份等等。

因为每个地区的问题与解决方案完全不同(类别不同,语言也不同)。此外还有其他原因……

我曾考虑过:“我能否通过单个实例管理所有内容?” 但随后我发现,将所有地区放在同一个 Discourse 中并不是一个好主意。

为了更实际地理解:
如果我们将所有 500 个地区放在同一个 Discourse 中。
假设每个地区每天至少创建一个主题,那意味着每天会有 500 个主题,这是一个非常庞大的数量,用户无法有效讨论,因为主题数量太多。将会出现主题风暴。

在你需要扩展到多个多站点实例之前,只需一条通配符 A 记录即可。其他 DNS 提供商没有这个限制。

你需要自己编写。

那么你目前真的不需要解决 500 个城市的问题。我建议开始时每个 Droplet 只使用一个站点。在拥有超过 5 个城市之前,多站点的优势微乎其微。

没错,我打算按这个方向走。但我也知道迟早要面对这个问题,所以我正在寻找解决方案。我并不完全依赖捐赠。如果长时间没有收到捐赠,我可以用自己的资金来维持运营,只是需要等待一段时间。

目前,我在 DigitalOcean 的 2GB RAM Droplet 上托管了一个测试站点。我发现该实例的资源占用并没有那么高,这意味着它足以支持一个城市。不过我在想,如果我们在单个 Droplet 上托管多个 Discourse 实例(配备更多内存),当某个区流量较少时,其他区就可以利用这些资源,这样或许能帮我节省一些费用。当然,如果我的想法有误,请指正。

我不推荐在内存小于 4GB 的情况下使用多站点模式,但你可以参考 https://meta.discourse.org/t/multisite-configuration-with-docker/14084。

根据我对你的技能和需求的了解,我建议每个城市先使用 1GB 的 Droplet,直到你至少有 5 个站点。在此期间,你可以临时创建 Droplet 来测试多站点配置,测试完成后即可删除。

我建议你先等到真正遇到问题时,再着手解决它。

非常感谢 @pfaffman