设置自定义IP不起作用吗?

大家好,
最近我在我的 Debian 服务器上尝试安装 Discourse,一切都很顺利,除了我无法访问该网站。我尝试更改端口来访问它,但只有 Nginx 显示出来。所以我找到了问题所在,我尝试设置一个自定义 IP 和一个指向我的网络的自定义网络,但我无法访问它,它一直给我报错,这是我得到的错误:

./launcher start app --docker-args --network discourse_back --ip 192.168.1.4
检测到 x86_64 架构。
docker: daemon 响应错误:未找到网络 -i。
您的 Docker 安装未正常工作

参见:https://meta.discourse.org/t/docker-error-on-bootstrap/13657/18?u=sam

我之前也尝试使用 hello-world,并且成功了:

docker run -it --network discourse_back --ip 192.168.1.4 hello-world

Hello from Docker!

. . .

有人知道如何解决这个问题吗?提前感谢!

也许可以试试这个:

 ./launcher start app --docker-args '--network discourse_back --ip 192.168.1.4'

我终于让它运行起来了,但现在它显示“欢迎使用 nginx”,但我输入了我的主机名“discourse.simonz.local”(它也写在 app.yml 中,位于

DISCOURSE_HOSTNAME: discourse.simonz.local

我是否做错了什么?

生产环境的 discourse 无法在没有 https 的情况下运行。

也许是其他 nginx 正在显示该消息?

你应该先让标准安装正常工作,然后再尝试更复杂的操作。

如果您打算在互联网上使用此实例,在 app.yml 中使用 .local 域将会导致问题。也许您只打算在家中使用或仅用于测试,只是觉得值得一提。

假设您的 Docker 网络正常工作,并且容器可以从主机外部通过该 IP 地址访问,您还需要 DNS 将 discourse.simonz.local 指向该 IP 地址。

听起来您的情况是,该域解析为主机,并且您在尝试访问时没有指定端口(例如 discourse.simonz.local:1234),因此它只连接到 nginx 而不是 Docker 容器。

如果您想在不同端口上使用 Discourse,您可能不需要它在不同 IP 地址上。如果您想在标准端口上使用它,以及在标准端口上使用 nginx,您需要 DNS 将您指向正确的 IP,或者您需要 nginx 来代理 Discourse

.local 域通常由系统根据其配置的主机名进行广播。Discourse 通常不需要这样做,因此容器可能没有任何东西可以做到这一点。

如果您想采用标准端口、不同 IP、DNS 的路线,这实际上超出了 Discourse 的范围,并且其设置将取决于您网络中的各种因素。

如果您的目标只是在 nginx 中使用 Discourse 以及在同一主机上使用 Discourse,我建议使用上面链接的代理方法。虽然这在技术上也是一个不受支持的安装,但它是一种更常见的设置,并且有更多人能够提供帮助。

它仅在标准端口上运行。

它不应该通过互联网访问,而应该在一个本地环境中进行尝试。端口基本上是正确的,IP地址也是正确的。

我不能已经有东西在端口 80 上运行了吗?在正常安装中,我没有看到更改其应使用的 IP 地址的选项。

我已经撤销了那个更改,它会在正常的端口 80 和 443 上再次运行。

如果您知道如何让您的反向代理正常工作,则可以在其他主机名上运行它。需要 HTTPS 和标准端口。

如果您只是暂时在本地进行设置以进行试用,我建议您启动一个虚拟机,而不是尝试将其与 nginx 并行运行。

该虚拟机可以拥有自己的 IP,很可能会自动为其分配一个 .local 地址,您可以在其中执行标准的 Discourse 安装。

完成后,删除该虚拟机,您就不必担心恢复对 nginx 或其他任何内容的更改。

1 个赞

我使用的是 docker compose 版本,它似乎自带了 nginx,并且已经在一个虚拟机中,但我想在同一个虚拟机中运行它,但一个东西出来的是 ..1.3(我的另一个网站),另一个是 ..1.4(discourse)。

我刚意识到是的,我已经完成了标准安装,我只想更改它响应我的默认 IP 192.168.1.3 的 IP,但我希望它响应 192.168.1.4,这两个 IP 都已在设备上配置好

如果虚拟机有两个 IP 地址,则无需处理 docker 容器的 IP 地址,只需进行防火墙路由,以便将 …1.3:80/443 指向主机,将 …1.4:80/443 指向 docker 容器。

如果是 Linux,据我所知,iptables 和 ufw 是最常见的软件。您可能需要查阅文档或在它们的社区中寻求帮助,了解如何设置此类路由。

除非您需要测试这种设置以确定最终安装 Discourse 的位置,否则我仍然建议为此试运行运行第二个虚拟机。将 Discourse 与其他 HTTP/HTTPS 软件一起运行的任何复杂性都将随着其在自己的虚拟机中运行而消失。

不过还是谢谢你,我能启动它了,但就是没有响应,可能是我弄错了什么,但还是谢谢你的帮助,我以后再试一次,也许会有新的结果,谢谢大家的帮助,祝你有美好的一天^^