Cloudflare 源证书

当使用 Cloudflare 的代理、CDN 和安全功能时,Cloudflare 源证书确保您的服务器和 Cloudflare 之间的通信安全。
它会加密服务器和 Cloudflare 之间交换的数据,确保数据安全。
为什么在 Coolify 中使用 Cloudflare 源证书?
- 创建证书无需 HTTP 或 DNS 验证。
- 保持 80 端口关闭 — 所有通信都通过 TLS 安全进行。
- 证书有效期更长(15 年)— 设置完成后,您无需担心每隔几个月就需要续期。
何时避免使用 Cloudflare 源证书
- 如果您需要免费证书用于多层级子域名(例如:app.sub.domain.com)。
- 该证书仅受 Cloudflare 信任,这意味着如果 Cloudflare 服务中断,没有人可以通过您的域名访问您的应用和网站。
示例数据
本指南中使用以下数据作为示例。请在按照步骤操作时替换为您的实际数据:
- 源服务器的 IPv4 地址: 203.0.113.1
- 域名: shadowarcanist.com
- 用户名: shadowarcanist
1. 创建源证书
要创建您的 Cloudflare 源证书,请按照以下步骤操作:

- 在 Cloudflare 仪表板中,前往 SSL/TLS。
- 选择 源服务器。
- 点击 创建证书 按钮。
系统会要求您选择私钥类型、主机名和证书有效期。

- 为密钥类型选择 RSA (2048)。
- 添加您希望证书覆盖的主机名。
注意!
shadowarcanist.com将仅覆盖主域名。*.shadowarcanist.com将覆盖所有子域名。
在 Cloudflare 的免费计划中,通配符证书仅覆盖一级子域名
例如,它适用于 coolify.shadowarcanist.com,但不适用于 www.coolify.shadowarcanist.com。
要覆盖多个级别,您需要购买 高级证书管理器 ↗
- 将证书有效期设置为 15 年。
现在您的证书将被生成。

- 选择 PEM 作为密钥格式。
- 复制您的 证书。
- 复制您的 私钥。
接下来,您将把这些添加到运行 Coolify 的服务器上,并配置 Coolify 使用此证书。
2. 向服务器添加证书
通过SSH登录到您的服务器或使用Coolify的终端功能。在本指南中,我使用SSH:
ssh shadowarcanist@203.0.113.1登录后,导航到Coolify代理目录:
$ cd /data/coolify/proxy检查是否有certs文件夹:
$ ls
> acme.json docker-compose.yml dynamic如果没有certs文件夹,请创建它:
$ mkdir certs验证它已创建:
$ ls
> acme.json certs docker-compose.yml dynamic现在,导航到certs目录:
$ cd certs创建两个新文件用于存储证书和私钥:
$ touch shadowarcanist.cert shadowarcanist.key验证文件已创建:
$ ls
> shadowarcanist.cert shadowarcanist.key打开shadowarcanist.cert文件并粘贴来自Cloudflare仪表板的证书:
$ nano shadowarcanist.cert粘贴证书后保存并退出。
对shadowarcanist.key文件执行相同操作并粘贴私钥:
$ nano shadowarcanist.key保存并退出。
现在,源证书已安装在您的服务器上。
3. 设置 DNS 记录和 TLS 加密
要使源证书工作,请在 Cloudflare 中配置您的 DNS 记录、启用 TLS 并设置 HTTP 到 HTTPS 的重定向:

- 在 Cloudflare 中,前往 DNS。
- 选择 记录。
- 添加 2 条 A 记录:
- 输入名称为
shadowarcanist.com和* - 对于两条记录,都使用您服务器的** IP 地址**作为内容。
- 为了更好的安全性,将代理状态设置为已代理。
接下来,设置 TLS 加密:

- 在 Cloudflare 中前往 SSL/TLS。
- 选择 概览。
- 点击 配置 按钮
选择**完全(严格)**作为加密模式。

最后,启用 HTTP 到 HTTPS 的重定向:

- 在 Cloudflare 中,前往 SSL/TLS
- 选择 边缘证书。
- 启用 始终使用 HTTPS。
4. 配置 Coolify 使用源证书
现在,在您的 Coolify 仪表板中:

- 转到侧边栏中的 服务器 部分。
- 选择 代理。
- 打开 动态配置 页面
- 点击 添加 按钮
现在系统会提示您输入动态配置。

- 为您的配置选择一个名称。
- 在配置字段中输入以下详细信息:
tls:
certificates:
-
certFile: /traefik/certs/shadowarcanist.cert
keyFile: /traefik/certs/shadowarcanist.key添加多个证书(点击查看)
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- 保存配置
从现在开始,Coolify 将对匹配主机名的请求使用源证书。
注意!
以下所有步骤都是可选的。Coolify 应该已经在使用源证书。只有当您知道自己在做什么并且想要简化配置时,才应遵循这些步骤
5. 可选:配置 Traefik
此步骤是可选的,但在自托管时建议清理不必要的设置。
由于您使用的是源证书,您不再需要 HTTP 验证或开放 80 端口。

- 在 Coolify 仪表板中转到 服务器。
- 选择 代理。
- 打开 配置。
- 用以下内容替换配置:
# 定义外部网络
networks:
coolify:
external: true # 外部网络。
services:
# Traefik 反向代理
traefik:
container_name: coolify-proxy # 容器名称。
image: 'traefik:v3.1' # Traefik 镜像版本。
restart: unless-stopped # 自动重启策略。
extra_hosts:
- 'host.docker.internal:host-gateway' # 主机通信。
networks:
- coolify # 网络连接。
ports:
- '443:443' # 暴露 HTTPS 端口。
healthcheck: # 健康检查配置。
test: 'wget -qO- http://localhost:80/ping || exit 1' # 健康检查的 Ping 端点。
interval: 4s # 健康检查间隔。
timeout: 2s # 健康检查超时。
retries: 5 # 重试次数。
volumes:
- '/var/run/docker.sock:/var/run/docker.sock:ro' # Docker 套接字访问。
- '/data/coolify/proxy:/traefik' # Traefik 配置卷。
command:
# Traefik 配置选项
- '--ping=true' # 启用健康检查的 Ping。
- '--ping.entrypoint=http' # 使用 HTTP 入口点进行 Ping。
- '--entrypoints.http.address=:80' # 健康检查的 HTTP 入口点。
- '--entrypoints.https.address=:443' # HTTPS 入口点。
- '--entrypoints.http.http.encodequerysemicolons=true' # 启用查询分号编码。
- '--entryPoints.http.http2.maxConcurrentStreams=50' # HTTP/2 最大流数。
- '--entrypoints.https.http.encodequerysemicolons=true' # 启用 HTTPS 查询编码。
- '--entryPoints.https.http2.maxConcurrentStreams=50' # HTTPS/2 最大流数。
- '--entrypoints.https.http3' # 启用 HTTP/3。
- '--providers.docker.exposedbydefault=false' # 禁用默认暴露。
- '--providers.file.directory=/traefik/dynamic/' # 动态配置目录。
- '--certificatesresolvers.letsencrypt.acme.httpchallenge=false' # 禁用 Let's Encrypt 的 HTTP 验证。
- '--providers.file.watch=true' # 启用配置文件监视。
- '--providers.docker=true' # 启用 Docker 提供者。
labels:
- coolify.managed=true # 由 Coolify 管理。
- coolify.proxy=true # 代理服务。注意
此配置中的注释解释了每一行。您可以在将其复制到配置中时删除注释。
接下来,您需要从基于 Dockerfile 的部署中删除一些标签。下面是我为我的网站设置的示例。

- 转到 项目 并选择您的项目。
- 打开 配置
- 转到 常规
- 选中 只读标签 选项
- 用以下内容替换标签:
# 为此配置启用 Traefik
traefik.enable=true
# 定义路由器的入口点(HTTPS)
traefik.http.routers.shadowarcanist.entryPoints=https
# 设置此路由器的路由规则,以匹配域 "shadowarcanist.com" 和任何以 "/" 开头的路径
traefik.http.routers.shadowarcanist.rule=Host(`shadowarcanist.com`) && PathPrefix(`/`)
# 为此路由器分配服务 'shadowarcanist'
traefik.http.routers.shadowarcanist.service=shadowarcanist
# 为此路由器启用 TLS(HTTPS)
traefik.http.routers.shadowarcanist.tls=true
# 指定后端服务及其端口(端口 80)
traefik.http.services.shadowarcanist.loadbalancer.server.port=80现在您已完成!您的服务器已设置为使用 Cloudflare 源证书,所有流量都通过 TLS 进行加密。
注意
请记住,上面的标签是作为示例提供的。这些可能适用于也可能不适用于您的特定用例,因此请将它们用作参考。
鸣谢
标题图片使用了来自 Flaticon ↗ 的图标设计。 每个图标的链接如下:
- 奖牌图标 ↗ 由 Vlad Szirka ↗ 提供
- 奖项图标 ↗ 由 explanaicon ↗ 提供
- 全球图标 ↗ 由 Freepik ↗ 提供
- 锁图标 ↗ 由 Those Icons ↗ 提供
- 浏览器图标 ↗ 由 Alfredo Hernandez ↗ 提供
- 数据库图标 ↗ 由 Tanah Basah ↗ 提供
