Skip to content

通过 Cloudflare 隧道访问所有资源

使用 Cloudflare 隧道访问 Coolify 上部署的所有资源,您可以安全地访问您的应用程序,而无需暴露服务器的 IP 地址或为服务器设置公共 IP 地址。

适用人群

此设置非常适合以下人群:

  • 服务器没有公共 IP(可能是笔记本电脑、树莓派等)。
  • 无法进行端口转发(例如,使用家庭互联网或在私有网络上)。
  • 希望保持服务器 IP 地址私密,避免将其暴露在公共互联网上。
  • 已经在 Coolify 上部署了资源,需要一种外部方法来安全访问它。

设置要求

要遵循本指南,您需要:

  • 一个免费的 Cloudflare ↗ 账户。
  • 一个由 Cloudflare 管理 DNS 的域名。

开始之前

  • 我们假设您已经在服务器上运行了 Coolify。
  • 如果您的应用程序需要 HTTPS 来实现 cookie 或登录等功能,那么在遵循本指南后,您需要遵循 完整 TLS HTTPS 指南 ↗。这是因为在本指南中,Cloudflare 将在外部管理 HTTPS,而您的应用程序将在 Coolify 内通过 HTTP 运行。

工作原理

一个简单的高级概览图,让您直观了解其工作原理:


重要部分快速链接:


示例数据

本指南中使用以下数据作为示例。请在按照步骤操作时替换为您的实际数据:

  • 域名: shadowarcanist.com

1. 创建 Cloudflare 隧道

要创建 Cloudflare 隧道,请首先登录您的 Cloudflare 账户并前往 Zero Trust ↗ 页面。

  1. 在 Zero Trust 页面上,在侧边栏中前往 网络
  2. 点击 隧道
  3. 点击 添加隧道 按钮

系统会提示您选择隧道类型。点击 选择 Cloudflared 按钮。

系统会提示您输入隧道名称。选择您喜欢的名称。

接下来,您将看到配置页面,其中包含多个安装 cloudflared 的选项。

复制安装命令,其中包含您的隧道令牌(令牌以 "eyJ" 开头)。确保只保存令牌,移除前面的命令部分,并将其存储在安全的地方,因为我们稍后会用到它。

向下滚动直到看到 下一步 按钮,然后点击它。

然后,系统会提示您添加主机名。

  1. 子域名 -(可选)您可以让所有资源在任何子域名/域名上都可访问。在本指南中,我们使用通配符子域名。
  2. 域名 - 选择您要用于隧道的域名。
  3. 路径 - 留空此字段。
  4. 类型 - 选择 HTTP(这非常重要)。
  5. URL - 输入 localhost:80(这非常重要)。
  6. 填写完详细信息后,点击 保存隧道 按钮。

2. 在 Cloudflare 上设置加密模式

要在 Cloudflare 上设置加密,请按照以下步骤操作:

  1. 前往 Cloudflare 中的 SSL/TLS
  2. 选择 概览
  3. 点击 配置 按钮

选择 完整 作为加密模式。

3. 在 Coolify 上设置 Cloudflare 隧道

要在 Coolify 上设置隧道,请按照以下步骤操作:

前往 Coolify 仪表板上的项目,点击 + 新建 按钮创建新资源。

您将看到许多部署新应用的选项。搜索 Cloudflared 并点击它。

前往 环境变量 页面,输入您的隧道令牌,然后部署 Cloudflared 应用。此令牌在 步骤 1 中已复制

4. 启动 Coolify 代理

要启动 Coolify 代理,请按照以下步骤操作:

  1. 在 Coolify 仪表板中,从侧边栏前往 服务器 页面。
  2. 选择运行 Coolify 的服务器,然后点击 代理 选项卡。
  3. 打开 通用 选项卡。
  4. 点击 启动代理 按钮。

提示

Coolify 代理用于将流量路由到服务器上运行的应用程序。这样,您每次部署新应用时都不需要在 Cloudflare 隧道上创建新的主机名。

5. 配置您的资源以使用隧道域名

输入您要用于资源/应用的域名,然后部署您的资源。

注意!

您应该将域名输入为 HTTP,因为 Cloudflare 处理 HTTPS 和 TLS 终止。如果您为资源使用 HTTPS,可能会遇到 TOO_MANY_REDIRECTS 错误。

如果您的应用程序需要 HTTPS 来实现 cookie 或登录等功能,请在完成本指南后遵循 完整 TLS HTTPS 指南 ↗

恭喜!您已成功设置了一个可以通过您的域名被互联网上任何人访问的资源。

如何使用多个不同的域名?

您不需要为每个域名创建新的隧道,只需使用新域名创建一个新的主机名,并将其指向 localhost:80

已知问题和解决方案

当您在 步骤 1 中创建新的公共主机名时,Cloudflare 会为主机名创建 DNS 记录。

但是,如果主机名的 DNS 记录已经存在,Cloudflare 将不会创建新的记录。

在这种情况下,您的应用程序将无法工作。要解决此问题,请按照以下步骤操作:

首先,从 Cloudflare 仪表板上的隧道页面复制您的隧道 ID。

创建一个具有以下详细信息的新 DNS 记录:

  1. 在 Cloudflare 仪表板中,前往 DNS
  2. 选择 记录
  3. 添加一个 CNAME 记录。
  4. 输入名称为 * 或您的子域名名称(这应该与您在隧道上为应用程序设置的主机名匹配)。
  5. 对于 目标,输入隧道 ID 后跟 .cfargotunnel.com
  6. 将代理状态设置为 已代理

现在,访问您应用程序的域名,它应该可以在那里访问。