Coolify logoCoolify

所有资源的完整 HTTPS/TLS 设置

当通过 Cloudflare 对 Coolify 资源进行隧道传输时,Cloudflare 通常处理 HTTPS 和 TLS 终止,而 Coolify 通过 HTTP 运行您的资源。

这种设置适用于大多数用户,但有些人可能会遇到 URL 不匹配的问题,特别是对于需要在 Coolify 上使用 HTTPS 来颁发 JWT 令牌或处理回调 URL 的应用程序。

本指南通过配置您的资源以完全在 HTTPS 上运行,绕过 Cloudflare 的 HTTPS 处理,并确保您的应用程序通过安全连接正常工作,从而解决该问题。

谁适合此指南?

本指南非常适合以下用户:

设置要求

要遵循本指南,您需要:

  • 按照之前指南中描述的正常工作 Cloudflare 隧道设置。
  • 在 Cloudflare 中配置一个域名,以处理 HTTP 流量并重定向到 HTTPS。

开始之前

  • 如果您的 Coolify 实例与要配置的域名位于同一个隧道中,请确保在开始这些步骤之前,您可以使用服务器 IP 和端口(例如 203.0.113.1:8000)访问 Coolify 仪表板。
  • 默认端口是 8000,但如果您已更改或禁用了它,请确保您可以通过新端口访问 Coolify 仪表板,或者确保服务器上的端口 8000 已重新启用。

示例数据

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

  • 源服务器 IPv4 地址: 203.0.113.1
  • 域名: shadowarcanist.com
  • 用户名: shadowarcanist

1. 设置源 TLS 证书

您的服务器与 Cloudflare 之间的通信使用 TLS 证书进行加密。

有两种方法可以实现:

  • 使用来自 Cloudflare 的 TLS 证书
  • 从受信任的公共证书颁发机构 (CA) 获取您自己的 TLS 证书(这需要 DNS 挑战)

以下是 Cloudflare 源证书公共 CA 证书 之间的简明对比表:

特性Cloudflare 源证书公共 CA 证书
受信任方仅限 Cloudflare浏览器、操作系统、Cloudflare
用例仅限 Cloudflare ↔ 源任何直接客户端
直接浏览器访问如果用户绕过 Cloudflare,会显示证书错误✅ 正常工作
需要 CF 代理✅ 是❌ 否
无需 CF 即可工作❌ 否✅ 是
颁发者Cloudflare公共 CA(例如:Let's Encrypt)
费用免费免费
DNS 挑战❌ 否✅ 是

提示

如果您计划让 Cloudflare 始终位于应用程序前面,请使用 Cloudflare 源证书。否则,请使用公共 CA 证书。

有两种方法可以设置源 TLS 证书,请从以下方法中选择一种:

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


A. 创建 Cloudflare 源证书

  1. 在 Cloudflare 仪表板中,转到 SSL/TLS
  2. 选择 Origin Server(源服务器)。
  3. 选择 Origin Certificates(源证书)
  4. 单击 Create Certificate(创建证书)按钮。
  1. 选择 RSA (2048) 作为密钥类型。
  2. 添加您希望证书覆盖的主机名。
  3. 将证书有效期设置为 15 年
  4. 单击 Create(创建)按钮。

注意!

  • shadowarcanist.com 仅覆盖主域名。
  • *.shadowarcanist.com 将覆盖所有子域名。

在 Cloudflare 的免费计划中,通配符证书仅覆盖一层子域名

例如,它适用于 coolify.shadowarcanist.com,但不适用于 www.coolify.shadowarcanist.com

要覆盖多层,您需要购买 高级证书管理器 ↗

  1. 选择 PEM 作为密钥格式。
  2. 复制您的 源证书 并保存在安全的地方
  3. 复制您的 私钥 并保存在安全的地方
  4. 单击 Ok(确定)按钮。

接下来,您将这些添加到运行 Coolify 的服务器上,并配置 Coolify 以使用此证书。


B. 将证书添加到您的服务器

SSH 到您的服务器或使用 Coolify 的终端功能。在本指南中,我使用的是外部终端:

ssh shadowarcanist@203.0.113.1

登录后,导航到 Coolify 代理目录:

$ cd /data/coolify/proxy

Caddy 和 Traefik 之间的证书位置略有不同,因此请根据您正在使用的代理从以下部分中选择。

创建 certs 目录:

$ mkdir certs

验证其是否已创建:

$ ls
> acme.json  certs docker-compose.yml  dynamic

现在,导航到 certs 目录:

$ cd certs

创建 caddy/data/certs 目录:

$ mkdir -p caddy/data/certs

验证其是否已创建:

$ ls caddy/data
> certs

现在,导航到 certs 目录:

$ cd caddy/data/certs

创建两个新文件用于证书和私钥:

$ touch shadowarcanist.cert shadowarcanist.key

验证文件是否已创建:

$ ls
> shadowarcanist.cert shadowarcanist.key

打开 shadowarcanist.cert 文件并粘贴来自 Cloudflare 仪表板的证书:

$ nano shadowarcanist.cert 

粘贴证书后保存并退出。

shadowarcanist.key 文件执行相同操作并粘贴私钥:

$ nano shadowarcanist.key 

保存并退出。

现在源证书已安装在您的服务器上。


C. 配置 Coolify 代理以使用源证书

  1. 转到侧边栏中的 Server(服务器)部分。
  2. 选择 Proxy(代理)。
  3. 打开 Dynamic Configuration(动态配置)页面
  4. 单击 Add(添加)按钮

现在系统将提示您输入动态配置。

Caddy 和 Traefik 之间的动态配置文件略有不同,因此请根据您正在使用的代理从以下部分中选择。

  1. 为您的配置选择一个名称(必须以 .yaml 结尾)。
  2. 在配置字段中输入以下详细信息:
tls:
  certificates:
    -
      certFile: /traefik/certs/shadowarcanist.cert
      keyFile: /traefik/certs/shadowarcanist.key
  1. 保存配置

添加多个证书

如果您想添加多个证书和密钥,可以这样做:

tls:
  certificates:
    -
      certFile: /traefik/certs/shadowarcanist.cert
      keyFile: /traefik/certs/shadowarcanist.key
    -
      certFile: /traefik/certs/name2.cert
      keyFile: /traefik/certs/name2.key
    -
      certFile: /traefik/certs/name3.cert
      keyFile: /traefik/certs/name3.key
  1. 为您的配置选择一个名称(必须以 .caddy 结尾)。
  2. 在配置字段中输入以下详细信息:
*.shadowarcanist.com, shadowarcanist.com {
    tls /data/certs/shadowarcanist.cert /data/certs/shadowarcanist.key
}

注意

通配符 *.shadowarcanist.com 提供所有子域名的覆盖,如果您仅保护单个域名(即 shadowarcanist.com),请排除它。

  1. 保存配置

添加多个证书

如果您想添加多个证书和密钥,可以这样做:

*.shadowarcanist.com, shadowarcanist.com {
    tls /data/certs/shadowarcanist.cert /data/certs/shadowarcanist.key
}

*.name2.com, name2.com {
    tls /data/certs/name2.cert /data/certs/name2.key
}

*.name3.com, name3.com {
    tls /data/certs/name3.cert /data/certs/name3.key
}

从现在开始,Coolify 将针对与主机名匹配的请求使用源证书。

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

我们已经有设置 TLS 证书 DNS 挑战的指南,您可以在此处跟随它们:

完成上述指南中的 DNS 挑战设置后,请返回本指南。

2. 设置 TLS 加密

为了使 Cloudflare 在连接到您的服务器时使用更严格的加密,请在 Cloudflare 中配置您的 TLS 加密:

  1. 在 Cloudflare 中转到 SSL/TLS
  2. 选择 Overview(概览)。
  3. 单击 Configure(配置)按钮
  1. 选择 Full (Strict)(完全(严格))作为加密模式。
  2. 单击 Save(保存)按钮

3. 设置始终使用 HTTPS

为了使 Cloudflare 自动将 HTTP 请求重定向到 HTTPS,请在 Cloudflare 中配置您的重定向:

  1. 在 Cloudflare 中,转到 SSL/TLS
  2. 选择 Edge Certificates(边缘证书)。
  3. 启用 Always Use HTTPS(始终使用 HTTPS)。

4. 配置隧道以使用 HTTPS

  1. 单击三点图标以打开设置菜单。
  2. 单击 Edit route(编辑路由)选项

接下来,按如下方式更新服务 URL:

将类型从 http://localhost:80 更改为 https://localhost:443

5. 将 URL 从 HTTP 更新为 HTTPS

现在,在 Coolify 中将所有 URL 从 HTTP 更新为 HTTPS,包括设置页面上的资源和实例域名。


恭喜! 现在您的所有资源始终都在 HTTPS 上运行。

On this page