主机名无法访问 443 端口,80 端口也失败了

您好,这是我第一次尝试自托管 Discourse。我遵循了官方的 GitHub 安装指南,运行了 wget -qO- https://raw.githubusercontent.com/discourse/discourse_docker/main/install-discourse | sudo bash。一切都很顺利,直到连接到子域名时。完成验证后,我一直收到相同的错误:“此计算机的 443 端口似乎无法通过主机名:[Discourse 子域名] 访问,并且到 [Discourse 子域名] 80 端口的连接也失败了”。

首先,app.yml 文件根本不存在,我在线查找后解决了这个问题。我将端口更改为 81,也更改了 443 并重试,但仍然出现相同的错误,就好像我没有更改端口一样。

我还检查了 raspap 是否可能导致问题,我发现它正在使用 80 端口。我将其更改为 81,但错误仍然相同。

我做错什么了吗?是因为我使用的是 Raspberry Pi 5 吗?我需要在路由器设置中打开端口吗?我很迷茫,如果这是个新手问题我很抱歉,那很可能是因为我是这方面的新手。

嗯……你在关注:

不,但我肯定会试试这个,因为我确信这能解决我目前遇到的问题。谢谢你 :slight_smile:

我设法修复了 80 端口的错误,但我仍然不明白为什么 443 端口仍然无法工作。我不确定 raspap 是否还在使用它,但我认为我无法更改它。

在花了很长时间才弄明白 Cloudflare Tunnel 的事情后,我终于按照这篇指南:Install Discourse on a residential internet with Cloudflare Tunnel 成功连接,没有出现任何 80 端口和 433 端口错误。

然后出现了 5 秒倒计时,它开始运行直到停止。我以为我完成了,于是访问了域名,但它显示没有响应。本地主机也完全没有任何显示。我是不是启动方式不对?我没有更改任何配置,甚至卸载并重新安装了所有内容,但都没有用。重建也只是停止,并且 doctor discourse 显示 Discourse 容器应用正在运行。那么我该如何从我的本地网络访问它,以查看它在其他设备上是否真的在运行呢?

你可以尝试对树莓派的 IP 地址使用 cURL 命令,看看它是否有响应。

你也可以在 Cloudflare 控制面板上检查隧道运行状况。

4 个赞

我收到 curl: (7) Failed to connect to (IP here) port 80 after 0 ms: Could not connect to server 错误

Cloudflare 控制面板显示其运行状况良好。

我忘记提到的是,我还在托管 raspap,它是一个树莓派的热点,它还托管一个网络仪表板,但我已将其端口更改为 81。

1 个赞

所以 Discourse 应该可以从您的 PI 的 80 端口访问,但 cURL 从您的另一台机器无法访问它?

您能分享一下您的 app.yml 文件吗?

我在 Pi 本身上尝试了 curl。我也无法用我的手机访问该网站,但我可以访问我从 Pi 的 IP 地址使用 81 端口托管的另一个网站。

这是我的 app.yml 文件:

templates:

  - templates/postgres.template.yml

  - templates/redis.template.yml

  - templates/web.template.yml

  - templates/web.ratelimited.template.yml

  - templates/web.ssl.template.yml

  - templates/web.letsencrypt.ssl.template.yml

expose:

  - 80:80

  - 443:443

params:

  db_default_text_search_config: pg_catalog.english

  db_shared_buffers: 4096MB

env:

  LC_ALL: en_US.UTF-8

  LANG: en_US.UTF-8

  LANGUAGE: en_US.UTF-8

  DISCOURSE_HOSTNAME: forum.iambest.net

  DISCOURSE_DEVELOPER_EMAILS: (private email)

  DISCOURSE_SKIP_EMAIL_SETUP: '1'

  UNICORN_WORKERS: 8

volumes:

  - volume:

      host: "/var/discourse/shared/standalone"

      guest: "/shared"

  - volume:

      host: "/var/discourse/shared/standalone/log/var-log"

      guest: "/var/log"

hooks:

  after_code:

    - exec:

        cd: "$home/plugins"

        cmd:

          - git clone https://github.com/discourse/docker_manager.git

run:

  - exec: echo "Beginning of custom commands"

  - exec: echo "End of custom commands"

你完全没有遵循 Install Discourse on a residential internet with Cloudflare Tunnel 上的指南吗?

比如你没有注释掉端口和模板。

2 个赞

哦,你说得对。那是因为我在排查问题时删除了它们,因为我不确定这是否是之前不起作用的原因。

我也不确定是否应该注释掉端口,所以我又试了一次没有注释掉,现在它能用了……只是看起来不太对劲

我还按照指南的说明禁用了 Rocket 那个东西。问题在域名和本地主机上都会出现。

看起来像是 CSS 问题,也有可能是防火墙问题?您的互联网服务提供商 (ISP) 对您有任何防火墙限制吗?

我没有设置任何防火墙限制,也没有更改过 CSS。我使用的路由器也非常有限,所以很遗憾我无法更改任何防火墙设置。

另外,据称除了端口 25 和 455 之外,没有其他端口受到限制。

1 个赞

而且看起来它没有使用 HTTPS 而是使用了 HTTP,不知何故。就像指南中所说的那样,我在 app.yml 中强制使用了 HTTPS,所以不确定为什么我仍然无法使用 HTTPS 访问该网站。

@Falco 使用 Cloudflare Tunnels 时需要 Let’s Encrypt 证书吗?还是 Cloudflare 会自动处理?