如何在本地安装Discourse?

我正在研究 Discourse,将其作为我项目中论坛的候选方案。
我对实际运行该技术栈的复杂程度感到有些惊讶。

在 GitHub 上,有这份安装指南——它要求配置 SMTP 服务器和域名。

我还看到了另一份指南,介绍了直接在主机上安装整个技术栈的方法。我更倾向于依赖 Docker 来自动配置所有依赖项 :slight_smile:
让我感到困惑的是,第一份指南特别强调需要 SMTP 服务器和 DNS 配置,而这份指南却完全没有提及这些。

我的理解是,既然一切都已经容器化,我应该能够直接运行某个 Docker Compose 配置,让 Discourse 和数据库(据我所知是 PostgreSQL)容器启动运行(可能还需要其他容器,例如缓存,如果 Discourse 需要的话)。然后在生产环境中,我可能会将其部署到 Kubernetes 上(不过据我在某些讨论中看到的,这似乎并不简单)。

我是否遗漏了什么?

1 个赞

以及不使用 Docker 的方法(如果您感兴趣或觉得上述方法太慢):

2 个赞

您想要开发环境安装还是生产环境安装?如果是后者,请参阅Discourse 官方标准安装指南。在 Kubernetes (k8s) 下运行是可行的,但过程并不简单,因为您需要使用 ./launcher 来构建容器。此外,执行完整的零停机升级需要一些步骤,这些步骤并不显而易见。如果您希望过程简单,只需启动一台虚拟机(如果运行的是 Ubuntu 或 Debian,会更容易一些)。

是的,对于生产环境,您需要具备发送邮件的能力。对于开发环境,显然不需要这一点。

1 个赞

@merefield 感谢提供 Docker 链接。这个方法可行,也接近我想象中流程的样子。不过,把所有东西打包进一个容器确实有点奇怪。而且,速度确实很慢。

让我感到意外的是,当我执行 git clone 克隆 discourse 仓库并 cd 进入 discourse 目录后,我的终端变得非常慢——这是我第一次遇到这种情况 :slight_smile:。这个仓库里肯定包含大量文件,或者有其他原因,但我不太明白为什么会影响到我的终端。

@pfaffman 我也想尝试更接近生产环境的安装方式,以便了解整个流程。在虚拟机上安装没问题。不过,关于 SMTP 服务器和域名方面呢?指南对此要求非常严格,明确指出我必须具备这些条件。

这倒也可以接受,只是我还有些地方不太理解:

  • 为什么实际上需要域名?为什么不能用 localhost?
  • 邮件服务器是否需要指向与 Discourse 使用的域名相同的域名?
  • 指南中还提到了子域名——为什么要用子域名?例如,我在 Azure 上设置一台虚拟机,该虚拟机已分配了某个 DNS(如 myvm.westeurope.cloudapp.azure.com)——难道这个域名不够用吗?
1 个赞

这是用于生产环境的,需要 HTTPS,因此你需要一个域名。Azure 的域名可以工作。

你不必为邮件服务器使用与主机名相同的域名。之前我修改了 discourse-setup,使其提示输入通知邮箱地址。

子域名意味着不要使用 x.com,而是使用 y.x.com。这是一种相当成熟的做法。

嗨,Marcin,

我和你有同样的顾虑,关于 Discourse 的域名问题。为什么本地主机(localhost)不够用?

我只是为团队安装 Discourse 用于内部测试,但似乎没有 DNS 就无法运行。我们尝试在服务器的 hosts 文件中添加指向 localhost 的 DNS 资源记录,但未能成功。

有人尝试过在没有公网域名的情况下运行 Discourse 吗?

没有。如果你想进行开发环境安装,不需要主机名,但它仅适用于本地主机。如果你希望团队使用它,则需要一个主机名。既然你有团队,想必你们也有域名吧?只需创建公司所用域名的某个子域名,支付 12 美元购买主机名,或者使用免费试用版即可。

对我们来说,我们并不希望讨论是公开的。我们需要一个内部讨论板。我和其他人一样,localhost 无法运行,安装失败,尤其是在你只是想测试一下的时候。这真的让人很扫兴,而且那些奇怪的脚本,而不是众所周知的标准命令 docker-compose up -d --build,至少可以说令人担忧。我不知道是否还想使用这个产品,因为它似乎过于严肃……或者说,至少是编写启动器的人过于严肃了。

1 个赞

或者,也许它是在 docker-compose 成为实用工具之前编写的,但它仍在成千上万个网站上运行,而更改可能会因边缘情况导致它们全部失效。

如果服务器可以访问外部网络,禁用 HTTPS 功能并不难,尽管我有一段时间没这么做了。

1 个赞

@pfaffman 这正是 2015 年 Docker Compose 发布时的情况。当时人们普遍持健康的怀疑态度。

我的组织没有公共服务器。我可以使用 Discourse 吗?坦白说,在不含 .com 域名的解决方案中,它是最优秀的。

你需要一个域名,但该域名无需指向公网 IP。只要你的服务器可以访问互联网(以下载 Discourse 及其组件),你就可以关闭 Let’s Encrypt 相关配置,系统应该就能正常运行。我认为你只需要在 YAML 文件中删除 SSL 和 Let’s Encrypt 相关的模板,但这样你就无法使用 discourse-setup 了。请复制独立部署的示例文件,然后手动进行编辑。

你仍然需要配置一个邮件服务器。

我希望我能在 Mac M1 上轻松完成它。

2 个赞

我在 M1 Pro 本地使用开发模式运行 Discourse,没有遇到任何问题。

3 个赞

原因有很多。虽然你可以在 FreeNom 免费获得域名,但 FreeNom 处理数据和用户信息的方式一直备受争议,所以如果你选择这条路,请小心。

2 个赞