通过 Cloudflare Tunnels 访问所有资源
使用 Cloudflare Tunnel 访问部署在 Coolify 上的所有资源,可以让您安全地访问您的应用,而无需暴露服务器的 IP 地址,也无需服务器拥有公共 IP 地址。
适用人群
此设置非常适合以下人群:
- 服务器没有公共 IP 地址(可能是笔记本电脑、树莓派等)。
- 无法进行端口转发(例如,使用家庭网络或在私有网络上)。
- 希望保持服务器 IP 地址的私密性,避免将其暴露给公共互联网。
- 已在 Coolify 上部署了资源,并需要一种外部方法来安全地访问它。
设置要求
要遵循本指南,您需要:
- 一个免费的 Cloudflare 账户。
- 一个 DNS 由 Cloudflare 管理 的域名。
开始之前
- 我们假设您已经在服务器上运行了 Coolify。
- 如果您的应用需要 HTTPS 来实现 Cookie 或登录等功能,那么在按照本指南操作后,您需要遵循 完整 TLS HTTPS 指南。这是因为在本指南中,Cloudflare 将在外部管理 HTTPS,而您的应用将在 Coolify 内部通过 HTTP 运行。
工作原理?
以下是一个简单的高层概览图,帮助您直观地了解其工作原理:
示例数据
以下数据在本指南中作为示例使用。请在按照步骤操作时将其替换为您实际的数据:
- 域名:
shadowarcanist.com
1. 创建 Cloudflare Tunnel
要创建 Cloudflare Tunnel,首先登录到您的 Cloudflare 仪表板
- 转到侧边栏中的 Networking(网络)。
- 点击 Tunnels(Tunnels)。
- 点击 Create tunnel(创建 Tunnel)按钮。
系统将提示您输入 Tunnel 名称。输入您喜欢的名称,然后点击 Create tunnel(创建 Tunnel)按钮。
- 选择 Docker 选项。
- 复制 docker run 命令,其中包含您 Tunnel 的令牌(令牌以 "
eyJ" 开头)。确保只保存令牌,删除其前面的命令部分,并将其存储在安全的地方,因为稍后我们需要它。
2. 在 Coolify 上部署 cloudflared
转到 Coolify 仪表板中的项目,点击 + New(新建)按钮以创建新资源。
搜索 Cloudflared 并点击它。
转到 Environment Variables(环境变量)页面,输入您的 Tunnel 令牌,然后部署 Cloudflared 应用。
一旦 cloudflared 开始运行,您将能够在 Cloudflare 仪表板上看到它的状态。
点击继续按钮以创建 Tunnel。
3. 启动 Coolify 代理
- 在 Coolify 仪表板中,从侧边栏转到 Servers(服务器)页面。
- 选择运行应用程序的服务器,并检查代理是否显示为正在运行。
4. 设置 TLS 加密
为了让 Cloudflare 在连接到您的服务器时使用更严格的加密,请在 Cloudflare 中配置您的 TLS 加密:
- 转到 Cloudflare 中的 SSL/TLS。
- 选择 Overview(概览)。
- 点击 Configure(配置)按钮。
- 选择 Full (Strict)(完全(严格))作为加密模式。
- 点击 Save(保存)按钮。
5. 配置 Tunnel 路由
- 点击您的 Tunnel。
- 点击 Configure(配置)选项。
- 选择 Routes(路由)。
- 点击 Add route(添加路由)按钮。
- 选择 Published Application(已发布的应用程序)作为路由类型。
- 子域名 - (可选)您可以使您的所有资源在任何子域名/域名上可访问。对于本指南,我们使用通配符子域名
*。 - 域名 - 选择您希望用于 Tunnel 的域名。
- 路径 - 留空此字段。
- 服务 URL - 输入 **http://localhost:80**(这非常重要)。
- 填写详细信息后,点击 Add route(添加路由)按钮。
提示
Coolify 代理(运行在 http://localhost:80)用于将流量路由到服务器上运行的应用程序。这消除了每次部署新应用时都在 Cloudflare Tunnel 上创建新路由的需要。
6. 配置您的资源域名
在 Coolify 中输入您希望用于资源的域名,然后部署您的资源。


注意!
您应该以 HTTP 形式输入域名,因为 Cloudflare 处理 HTTPS 和 TLS 终止。如果您为您的资源使用 HTTPS,您可能会遇到 TOO_MANY_REDIRECTS(重定向次数过多)错误。
如果您的应用需要 HTTPS 来实现 Cookie 或登录等功能,请在完成本指南后遵循 完整 TLS HTTPS 指南。
恭喜!您已成功设置了一个任何人都可以通过您的域名在互联网上访问的资源。
如何使用多个不同的域名?
您不需要为每个域名创建新的 Tunnel,只需使用新域名创建新路由并将其指向 http://localhost:80 即可。
已知问题及解决方案
当您在 步骤 5 中创建新路由时,Cloudflare 将为主机名创建 DNS 记录。
但是,如果主机名的 DNS 记录已存在,Cloudflare 不会更新现有记录。
在这种情况下,您的应用将无法工作。要解决此问题,请按照以下步骤操作:
- 点击您的 Tunnel。
- 点击 Configure(配置)选项。
- 从 Tunnels 详细信息部分复制您的 Tunnel ID。
使用以下详细信息创建新的 DNS 记录:
- 在 Cloudflare 仪表板中,转到 DNS。
- 选择 Records(记录)。
- 添加 CNAME 记录。
- 将名称输入为
*或您的子域名名称(这应该与您在 Tunnel 中为应用设置的主机名匹配)。 - 对于 目标,输入 Tunnel ID 后跟
.cfargotunnel.com。 - 将代理状态设置为 Proxied(已代理)。
现在,访问您应用的域名,它应该可以访问了。
