在 Oracle Cloud 上免费自建(附注意事项)

https://blogs.oracle.com/developers/install-run-discourse-for-free-in-the-oracle-cloud

这篇博客文章是去年发布的。我在此处没有看到任何提及;我认为作为托管公司,Oracle 对大多数人来说并不在考虑范围内。

因此,在发布之前,我决定亲自尝试一下,看看它是否真的可行。我创建了一个演示站点:

https://www.opendiscussion.pw

我在 Oracle Cloud 上注册了一个账户。它表示需要 15 分钟来验证账户,但由于我的信用卡问题(验证时需要提供信用卡),我不得不等待了两天。

我按照博客文章中的说明操作,然后遵循 Discourse 的正常 Docker 安装说明。第一次尝试就几乎成功了!我在电子邮件设置方面遇到了问题。我认为这是博客文章中唯一解释不正确的部分。我不得不查阅文档。Oracle 的文档非常优秀。

以下是该层级包含的内容:

  • 2 台虚拟机
    该虚拟机拥有 1/8 个 OCPU,并可使用额外的 CPU 资源。VM.Standard.E2.1.Micro。2.0 GHz AMD EPYC 7551
    内存:1 GB

  • 带宽:10 TB

  • 存储:100 GB 块存储卷

  • 电子邮件:1,000 封/月(不包含 SMTP)

值得注意的是,Oracle 提供的配置包含约 40GB 磁盘空间(用于操作系统和用户数据),外加 8GB 交换分区,无需再创建交换文件。此外,由于您可以在“始终免费”层级上获得两台虚拟机,将数据库容器分离出来是一种可行的扩展方案。

(出于某种原因,那里的免费数据库 PaaS 并不是 PostgreSQL。:wink:

感谢您提供这些有趣的信息!

我也遇到了问题。我尝试了多次但都没有成功(银行提示“错误的验证码”,尽管验证码是正确的)。
我换了一个浏览器尝试,结果成功了,只是我用了另一个电子邮件地址……现在我已经等了好几个小时,账户还没被验证。

虽然免费,但注册流程确实有点烦人……:sweat_smile:

邮件部分具体出了什么问题?我已经在 Oracle Cloud 上成功安装了 Discourse,但无论如何都无法让邮件投递功能正常工作。在尝试注册 Discourse 安装的管理员用户时,我从未收到任何邮件。

Discourse-doctor 能够连接到 Oracle 的 SMTP 服务器,但邮件并未发送。

我设置了多个已批准的发送者以防万一,包括我的管理员邮箱、noreply@[论坛域名]noreply@[主域名]。其中哪个是关键的?

我还已在域名的 DNS 设置中添加了一条 TXT 记录,包含了推荐的 SPF 字符串。

这有点棘手。如果我没记错的话,让我成功的方法是修改 containers/app.yml:

  ## 如果您想为首次注册设置“发件人”电子邮件地址,请取消注释并修改:
  ## 在收到第一封注册邮件后,请重新注释该行。该行只需运行一次。
  - exec: rails r "SiteSetting.notification_email='noreply@opendiscussion.pw'"

感谢您的回复!

遗憾的是,这没有帮助(即使重新构建了应用后也是如此)。

我可以问一下您的 TXT 记录是什么样的吗?

您也没有取消注释“START TLS”设置,对吧?

那邮件的事情你处理得怎么样了?需要付费吗?(因为你说过不包含 SMTP)

SMTP 已包含在内。曾经在某些地区并不包含。设置起来非常棘手…… :neutral_face:

您知道 Oracle Cloud 中是否有 SMTP 日志?我想了解为什么无法发送邮件,尽管我可以正常连接到 SMTP 服务器。是未授权还是其他问题?

Oracle Cloud 提供 SMTP 服务,但__它不包含在永久免费层级中__。其价格非常低廉(每 1000 封邮件 0.085 美元),因此我仍然使用它。截至目前,他们尚未向我收取任何费用。

https://www.oracle.com/cloud/networking/email-delivery.html#pricing

https://docs.cloud.oracle.com/en-us/iaas/Content/Email/Concepts/overview.htm

抱歉,你说得对。我没想到自己会被纳入付费版的试用范围,因为我注册的是免费版。

有没有免费的替代 SMTP 服务,既能与 Discourse 配合使用,又能让 Discourse 本身继续部署在 Oracle Cloud 上?

我认为只剩下 Pricing | Mailjet 了。硅谷黑帮从互联网上夺走了免费邮箱,这真是令人遗憾 :blush:

在尝试让我的试用账户正常运行一个月后,聊天支持表示无法帮助我,邮件支持也未能提供实质帮助,仅回复过一次,声称会收集我的账户信息并联系,但此后杳无音信……

我请朋友帮我注册了一个账户,结果不到15分钟就顺利完成了。

接着我尝试安装 Discourse,却遇到了不少困难。我按照Oracle 的 Discourse 安装教程操作,但由于某些原因,无法连接到 443 端口。

我又尝试在普通的 Ubuntu 镜像上安装 Discourse,但同样无法通过 80 或 443 端口连接,原因不明。

最后我回到官方说明文档,起初仍然无法运行(两个端口的连接都失败了),但在重启 Docker 后,奇迹般地成功连接到了两个端口。

因此,我的整体体验并不理想,问题究竟出在我自己身上还是 Oracle 方面,我也不太确定。

但无论如何,我现在确实拥有一个免费、在线、虽然速度不算快但能正常运行的 Discourse 安装。:+1:t6:

对于打算遵循相同教程的用户,服务器防火墙部分有一个小错误:

不要使用:
sudo firewall-cmd —reload
而应输入:
sudo firewall-cmd --reload

默认情况下,您无法安装 Discourse,因为不允许连接到端口 80 和 443。您需要在 安全列表(在 Oracle 控制面板中)和 实例防火墙(通过 SSH)中同时允许这两个端口。

以下是如何在标准的 Ubuntu 安装中完成此操作(与他们的官方指南略有不同,官方指南使用的是另一个 Linux 镜像)。

在 Oracle 面板中:

创建 Ubuntu 实例后,进入 实例详情 并点击 子网链接

点击安全列表:

点击 添加入站规则,选择 TCP 协议,将源 CIDR 设置为 0.0.0.0/0,并将 目标端口范围 设置为 80,443
点击“添加入站规则”进行验证。

确认规则已添加到安全列表中:

在通过 SSH 访问的服务器命令行中:

将这些规则添加到 iptables:

iptables -I INPUT 5 -i ens3 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -I INPUT 5 -i ens3 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT

该命令会将规则添加到正确的位置。如果您只是将它们追加到现有规则中而不指定行号(5),则无法生效,因为它们会被之前存在的“拒绝所有”规则覆盖。

保存规则,以便重启后仍然有效:

netfilter-persistent save

现在您可以安装 Discourse 了!:tada:

你好,对于生产环境中访问量较大的网站,你推荐使用 Oracle Cloud 吗?
谢谢

我认为,如果你和你的用户不太在意论坛速度,可以托管一个小型社区。但我不推荐这样做,因为你可以找到每月约 5 美元、配置好得多的廉价主机。

@Hectorhttps://www.opendiscussion.pw 是否仍然托管在免费服务器上?

嗨,你说的每月约 5 美元的廉价主机是指 DigitalOcean 的 5 美元 Droplet 吗?

是的,例如。

就我个人而言,我喜欢 Hetzner,因为他们价格不贵,而且服务器按小时计费,非常适合短期尝试各种项目。但据我所知,他们的服务器仅在欧洲有部署。

是的,仍然在免费服务器上。由于流量为零,我无法判断其性能如何。我也用它进行开发。到目前为止一切顺利。

对于 Hetzner VPS,我是否也需要自行安装 LAMP 环境、进行服务器更新,并防范黑客攻击?

而 Digital Ocean 则一切就绪,我不需要再对服务器进行安全加固,只需要安装和管理 Discourse 吗?这是否是 Digital Ocean 与其他 VPS 的真正区别?

Digital Ocean 是否属于托管型 VPS?

谢谢!
Deb