无法将我的社区网站添加到Discourse Hub——寻求帮助

您好,

我写信是为了寻求帮助,解决我一直以来遇到的一个问题:我的个人社区网站(starorigin.net)无法添加到 Discourse Hub。经过研究,我注意到多年来有许多其他人也面临类似的问题,而且不幸的是,其中一些案例仍未解决。我现在也遇到了同样的情况,非常感谢您能提供任何帮助或指导。

以下是我目前情况的总结:

  1. 初始成功:

    • 当我首次设置我的社区网站(starorigin.net)时,我的网站已成功列入 Discourse Hub。这使得我的朋友们可以通过 Discourse 移动应用程序轻松访问社区。
  2. 当前问题:

    • 在遵循 Discourse 社区中提供的 Cloudflare 设置教程并迁移我的服务器后,我的网站不再出现在 Discourse Hub 中。尽管我多次尝试解决此问题,但仍未能恢复列表。
    • 这造成了极大的不便,因为我的朋友们无法再通过移动应用程序方便地访问社区。
  3. 我的尝试:

    • 我已仔细检查了所有 Cloudflare 设置,以确保它们符合推荐的配置。

    • 我在 Discourse 论坛上搜索了类似的问题,并尝试了建议的解决方案,但到目前为止均无效。

    • 如果有人遇到过类似问题并已解决,我将非常感激您的建议。或者,Discourse Hub 团队能否考虑实施一项特殊功能,允许面临技术困难的社区所有者手动将他们的网站添加到 Hub? 对于我们这些卡住并且无法通过标准方法解决问题的人来说,这将是一个巨大的帮助。

我对我建立的社区充满热情,并希望让我的朋友和成员尽可能方便地访问它。提前感谢您的时间和支持!

DiscourseHub 向以下地址发送 HEAD 请求:

https://starorigin.net/user-api-key/new

并收到 400 错误,因此无法继续添加站点。您需要修改 Cloudflare 配置以允许访问该端点。

  1. 我为 /user-api-key/new 创建了一个页面规则
  • 登录 Cloudflare 控制面板。
  • 导航到 规则 > 页面规则
  • 点击 创建页面规则
  • 如果 URL 匹配 字段中,输入:

https://starorigin.net/user-api-key/new

  • 则设置是 下,选择:
    • 缓存级别:绕过
    • 安全级别:关闭
    • 保存规则并进行测试。

  • 但是,这似乎不起作用。我得到的输出如下:

{"errors":["param is missing or the value is empty: nonce"]}

抱歉,我不知道 Cloudflare 用户界面如何工作。您可能需要查看 Cloudflare 论坛

感谢您的建议。我尝试禁用 Cloudflare,但仍然无法直接访问 https://starorigin.net/user-api-key/new,并且 400 错误仍然存在。这让我认为问题可能出在我的服务器端。

您能否建议我在服务器配置中应检查哪里?
谢谢!

请通过暂时禁用 Cloudflare 来测试此理论,等待 DNS TTL 过期,然后尝试将其再次添加到 Discourse Hub。

1 个赞
curl -v http://127.0.0.1:8080/user-api-key/new
*   Trying 127.0.0.1:8080...
* Connected to 127.0.0.1 (127.0.0.1) port 8080
> GET /user-api-key/new HTTP/1.1
> Host: 127.0.0.1:8080
> User-Agent: curl/8.5.0
> Accept: */*
>
< HTTP/1.1 400 Bad Request
< Server: nginx
< Date: Tue, 14 Jan 2025 22:15:08 GMT
< Content-Type: application/json; charset=utf-8
< Transfer-Encoding: chunked
< Connection: keep-alive
< X-Frame-Options: SAMEORIGIN
< X-XSS-Protection: 0
< X-Content-Type-Options: nosniff
< X-Permitted-Cross-Domain-Policies: none
< Referrer-Policy: strict-origin-when-cross-origin
< X-Discourse-Route: user_api_keys/new
< Vary: Accept
< X-Request-Id: fe9303f5-ce51-4bd2-a73e-cda5a6d654e9
< X-Runtime: 0.004521
<
* Connection #0 to host 127.0.0.1 left intact
{"errors":["param is missing or the value is empty: nonce"]}

这是我服务器的调试结果。我认为我的容器可能存在一些问题,导致它无法访问。可能是什么原因,我该如何排查?如果您能提供任何帮助,我将不胜感激。

您测试的内容与我建议的完全不同,只证明了您的服务器运行正常。

您收到的错误是:

{"errors":["param is missing or the value is empty: nonce"]}

服务器是正确的。您调用此 API 的方式不正确,因此出现了错误。您将得到与 meta.discourse.org 相同的结果:

○ → curl https://meta.discourse.org/user-api-key/new
{"errors":["param is missing or the value is empty: nonce"]}

我已经关闭了 Cloudflare,允许流量直接访问我的服务器。已经三个小时了,但我在 Discourse Hub 上仍然找不到我的网站。我现在不确定该去哪里查找问题。

此声明不正确 - 对 Cloudflare 的名称服务器执行 starorigin.net 的 DNS 查询仍然返回其 IP 地址:

○ → host starorigin.net colin.ns.cloudflare.com
正在使用域名服务器:
名称:colin.ns.cloudflare.com
地址:162.159.44.75#53
别名:

starorigin.net 的地址是 172.64.80.1
starorigin.net 的 IPv6 地址是 2606:4700:130:436c:6f75:6466:6c61:7265
1 个赞

我发现其他几个社区也遇到了与我类似的问题。例如,对我来说,baidu.do (https://baidu.do/user-api-key/new) 也无法访问,但它仍然可以在 Discourse Hub 上找到。为什么会这样?\n\n即使是 OpenAI 社区,这个 URL 输出的内容也与我的个人网站相同,但它仍然可以在 Discourse Hub 上搜索到。

这些不是“问题”,而是正确的行为

/user-api-key/new 需要发送额外的参数——从 curl 调用它确实是一个糟糕的请求

您需要正确关闭 Cloudflare 来确定问题的根源。

1 个赞

朋友,您好。我已解决此问题。问题是由宝塔和1Panel的反向代理配置引起的。本质上,两个平台在其NGINX配置中都默认启用了proxy_cache。在反向代理规则中添加proxy_cache off;应该可以解决该问题。有关更多详细信息,请参阅:无法在Discourse Hub添加自己的Discourse站点解决办法 - Discourse - Discoze中文社区

1 个赞