大家好,
我目前无法管理我的论坛,想暂时关闭它,因为它需要一个新的 SSL 链接,但我还没有弄清楚如何操作。我不想让任何用户面临被黑客攻击的风险。
有没有办法在不完全删除论坛的情况下暂时阻止所有人进入论坛?
非常感谢您的帮助。谢谢!
大家好,
我目前无法管理我的论坛,想暂时关闭它,因为它需要一个新的 SSL 链接,但我还没有弄清楚如何操作。我不想让任何用户面临被黑客攻击的风险。
有没有办法在不完全删除论坛的情况下暂时阻止所有人进入论坛?
非常感谢您的帮助。谢谢!
您是否考虑过将您的网站设为只读模式?这可以在管理员设置的备份部分找到 your-site-name/admin/backups,这会将您的网站设为只读,因此用户无法发帖等。
如果它是标准安装,重建应该会获得新的 ssl 证书。
如果你不能或不想这样做,那么你可以按建议将其置于只读模式。
你也可以运行 ./launcher stop app 来停止容器。
你好,ondrej,
感谢您的回复。我读过相关信息,但这仍然无法阻止用户访问论坛,而论坛目前存在安全问题(链接前面没有 https,即没有安全证书)。
如果您的意图是在有时间弄清楚 SSL 后将其恢复,我建议您首先尝试使用内置的 SSL 模板。Discourse 让您非常轻松地获取和使用 Let’s Encrypt 来实现 SSL,因此在诉诸于关闭它之前,值得一试。
如果您想尝试一下,请删除 app.yml 文件顶部附近这两行的 #:
## 如果您希望添加 Lets Encrypt (https),请取消注释这两行
#- "templates/web.ssl.template.yml"
#- "templates/web.letsencrypt.ssl.template.yml"
接下来,在同一文件的靠下位置找到 #LETSENCRYPT_ACCOUNT_EMAIL: me@example.com,再次删除 #,并替换示例电子邮件地址。
最后,重建 Discourse,它应该会获取 Let’s Encrypt 证书并设置 HTTPS,将所有 HTTP 请求重定向。
cd /var/discourse
./launcher rebuild app
您是如何安装 Discourse 的?
抱歉,我不知道如何安装 Discourse,也不知道它的一般工作原理。我的父亲为他的公司设置了论坛,但他今年去世了。我们有一台 Linode 服务器,Discourse 可能安装在那上面。
感谢 Simon 提供的详细解释。这个网站是我父亲搭建的,但他今年去世了。我对如何安装和设置 Discourse 一无所知,对网站也不甚了解。我在哪里可以找到这个 appl.yml 文件?我父亲是否会将 Discourse 安装到我们的域名服务器上?我们使用 Linode,并且上面有一个名为“Discourse”的“Linode”。我只是不知道这代表什么以及如何访问该安装。
感谢您的帮助。
很抱歉听到您的损失。 ![]()
首先,我强烈建议您确保为该“Discourse”Linode启用了“备份”。这是您的第一步,也是最紧急的一步。
其次,请确保在 https://yoursitedomain.com/admin/backups 启用了 Discourse 备份。
第三,您可能需要尝试直接从您的网页浏览器中的管理用户界面面板运行更新,这可能会解决您的问题:https://yoursitedomain.com/admin/upgrade
太糟糕了。听到这个消息我很难过。如果你不知道如何 SSH 登录到该服务器,最简单的方法是进行备份,然后重新安装,最后在那里恢复备份。
如果你可以 SSH 登录到服务器,那么你就可以在这里执行命令行操作。
理论上他们应该能够重置 Linode SSH 密码:
https://www.linode.com/docs/guides/accounts-and-passwords/#resetting-the-root-password
这听起来相当容易,并且可以拉取有效的邮件配置。我可能还是会进行全新安装,因为它听起来像是这个已经坏了。
我不确定我是否同意。默认情况下,根据包含的示例 app.yml,不使用 web.ssl 或 web.letsencrypt.ssl 模板,并且 @Mads 所描述的缺少任何 HTTP 重定向听起来就像保留了该默认设置,即它从未有过 SSL。
这似乎很有希望成为托管 Discourse 的服务器。如果你仍然想关闭它,你可以关闭该 Linode,但根据设置方式,该服务器上可能还有其他东西。
正如 @sdpiowa 所说,你可以按照他提供的链接重置密码。滚动到最底部找到 重置 root 密码。如果你已经拥有该服务器的 root 密码,则无需执行此操作。
有了 root 密码,访问服务器最简单的方法是使用 Linode 云管理器上的 LISH 控制台。
https://www.linode.com/docs/guides/using-the-lish-console/
在控制台中看到 login: 的最后一步,输入 root 并按回车键,然后输入密码并再次按回车键。此时你应该会获得一个 shell,能够在服务器上运行命令——请注意,你应该小心不要出错,大多数错误只会导致错误并且什么都不会发生,但在 root shell 中出错可能会导致破坏性后果。
在继续之前,请务必创建手动 Discourse 备份,并在备份完成后,在 Linode 云管理器中进行手动快照。这样你就知道如果出现任何问题,你拥有恢复所需的一切。
首先更改目录以进入正确的位置:
cd /var/discourse
Linode 镜像通常安装了 nano,这是一个非常易于使用的文本编辑器。编辑 app.yml 文件:
nano containers/app.yml
你可能无法使用鼠标移动光标,因此请使用箭头键在文件中移动并进行先前描述的更改。完成此操作后,按 CTRL+X 退出,系统会询问你是否要保存,按 Y 回答是,系统会询问文件名,只需按回车键即可保存文件并退出 nano。
最后,重建 Discourse,并在开始后不要关闭 LISH 窗口:
./launcher rebuild app
如果一切顺利,大约 10-20 分钟后,Discourse 将恢复运行并启用 SSL。
https 默认启用已经过去很长时间了。操作系统也很有可能已经过了生命周期。
恕我直言,对于新手来说,最简单、最安全的方法是全新安装,但您慷慨地提供了有希望帮助他解决这个问题的说明!
感谢大家的帮助和详细解释!我可能找到了一个可以帮助我的人,我会确保向他们展示你们的建议。我真的很感激 ![]()
你们太棒了!
感谢所有这些信息。
我是 Matt,正在帮助 Mads,他是一位经验丰富的系统管理员,对 *nix 非常熟悉,Docker 让我深入研究了一下,但最终还是解决了。
Letsencrypt 日志显示:
CA 正在处理您的订单,请稍候。(1/30)
community.fruityknitting.com:验证错误:Fetching https://community.fruityknitting.com/.well-known/acme-challenge/9NEyZhZzZQ9FwGrqGqDNblLiwtOQQGlYr-9nSFUwKhw: Connection refused**
Nginx 配置立即将端口 80 重定向到 https,然后我认为 Andrew 让 Discourse 通过 Patreon 检查有效帐户,该端口 80 重定向与 Patreon 重定向可能阻止了 Letsencrypt 验证本地文件。
我停止了 Nginx 的端口 80 重定向,重新启动了 Nginx 并重新运行了:
/shared/letsencrypt/acme.sh --cron --home /shared/letsencrypt
然后成功了。
感谢大家的有用评论。
祝一切顺利。
Patreon 重定向不是 https 吗?
那是罗伯特,或许更清晰地说:
Nginx 无条件将 80 重定向到 443,然后 Discourse 应用立即转发到 Patreon 以进行会话或 cookie 或我猜测的其他东西……
足以破坏 Let’s Encrypt 的验证。
听起来对吗?
我认为这是开箱即用的功能,用于强制所有通过 http 的通信都通过 https 进行。
Patreon 的东西听起来有点“奇怪”?
它试图做什么,而你不能在应用程序层 100% 通过 https 完成?
为什么反向代理必须关心?
试试吧,罗伯特……
https://community.fruityknitting.com/