Cloudflare托管DNS + Docker + 阿里云注册域名一站式部署流程

0 阅读6分钟

(注: 本文只讲 cloudflare+域名流程,docker镜像默认会,实在不知道,都可以问下 ai )

Cloudflare部署流程

【tip】:内网穿透可以直接将本地服务(如 FastAPI)暴露到公网,无需公网 IP 或端口映射,就不说了,直接买域名本文

(阿里注册域名 + Cloudflare托管DNS + Docker部署项目)是目前非常流行且性价比很高的一套方案,对于个人开发者、中小型项目来说,是一个很稳妥的选择

✅ 这套方案的主要优点

  1. 省钱又省心 (Cloudflare免费CDN与安全) :Cloudflare最吸引人的就是它的免费套餐。你把域名DNS托管过来后,不仅能享受到全球的CDN加速,还能免费获得DDoS防护和基础的安全规则。这相当于给项目加了一层免费的“防护罩”,一般的小型攻击都不怕。
  2. 没有公网IP也能用 (内网穿透) :如果你的项目是部署在家用宽带或没有公网IP的服务器上,Cloudflare Tunnel(以前叫Argo Tunnel)是一个非常优雅的解决方案。通过Docker运行cloudflared,你可以把本地服务安全地暴露到公网,既不用在路由器上做端口转发,也不用担心原IP地址会变。
  3. IP变了也不怕 (DDNS动态解析) :对于使用了家庭宽带的用户,即使没有用Tunnel,也可以通过DDNS-GO这类工具,把变化的公网IP自动更新到Cloudflare的DNS记录上。这样一来,即使运营商给你分配了动态IP,你的域名也总能解析到正确的地址,非常适合在NAS或树莓派上搭建服务。
  4. 一站式管理,体验流畅:把域名注册和解析分开是很成熟的做法。在阿里云完成实名和注册后,只需把DNS服务器指向Cloudflare,后续所有的DNS记录管理、流量监控、安全设置都在Cloudflare一个平台上完成,体验非常直观

流程总结

本地服务 (localhost:8000)
      │
      ▼
Cloudflared 隧道 (defaulttunnel)
      │
      ▼
Cloudflare DNS + HTTPS
      │
      ▼
域名访问 (xxx / www.xxx / abc.xxx)

一. 基本条件

  • 已注册阿里云域名 xxx

  • Windows 系统

  • 本地服务运行端口(示例:localhost:8000

  • Cloudflare 账户


二. 安装 Cloudflared

2.1 官网下载 cloudflare.exe

1.1.下载 Cloudflared Windows 版本:官方文档

1.2.放到固定目录,例如:

```
C:\cloudflared\cloudflared.exe

cd C:\cloudflared
.\cloudflared.exe --version
```

1.3.验证是否安装成功

我是通过 winget install --id Cloudflare.cloudflared 下载,找的exe文件挪过来,方便好找一些

2.2 winget 下载

Windows 包管理器 (winget) 的一个核心命令,作用就是从命令行快速、自动地安装各种 Windows 应用程序

我是通过这种方式下载的,自动加在了电脑环境变量,我就不用上面这种了,都一样的

winget install --id Cloudflare.cloudflared

三. 域名购买(阿里云)

1.1.打开阿里云域名页面:
wanwang.aliyun.com

1.2.搜索域名:xxx → 选择可用 → 加入购物车 → 购买

1.3.填写注册信息

1.4.验证域名状态:

控制台 → 域名 → 我的域名 → 状态:正常,实名认证:已通过

账号信息:手机号 + 邮箱 + 密码 域名持有者:真实姓名 + 身份证号 实名认证:上传身份证 + 人脸识别 付款方式:支付宝 / 微信 / 银行卡 隐私保护:建议开启 购买年限:1年即可

四. Cloudflare 接入

4.1 基本流程

1.1.注册或登录 Cloudflare:dash.cloudflare.com

1.2.添加域名:xxx

1.3.选择 Free 套餐,我选择的免费

1.4.Cloudflare 会生成 2 个 DNS 地址,例如:ns1.cloudflare.com ns2.cloudflare.com

1.5.回到阿里云 → 域名 DNS 设置 → 替换为 Cloudflare 提供的 DNS → 保存

1.6.等待 DNS 生效(5-30 分钟)

4.2 证书SSL/TLS配置

dash.cloudflare.com/36a22f9a5c6…

1.1.cloudflare 仪表盘填完域名后,选择域名看到 SSL/TLS,进入 origin

1.2.配置:

- Key format : 选择 pem

- Hosts:自动的生成(agentcore,art,*.agentcore.art)

- 下载 cert.pem ,点击下载只能进去看到公钥

- 我们直接 cloudflared tunnel login,他会自动下载到 .cloudflare 文件夹下

文件内长这样

-----BEGIN ARGO TUNNEL TOKEN-----
.............
-----END ARGO TUNNEL TOKEN-----

// 没有证书报错
C:\cloudflared>cloudflared tunnel create defaulttunnel
failed to create tunnel: couldn't create client to talk to Cloudflare Tunnel backend: Error decoding origin cert: missing token in the certificate

1.3 设置环境变量

setx TUNNEL_ORIGIN_CERT "C:\Users<用户名>.cloudflared\cert.pem"

// 不设置会报错
C:\Users\15690>cloudflared tunnel create defaulttunnel 2026-03-29T09:34:05Z ERR Cannot determine default origin certificate path. No file cert.pem in [~/.cloudflared ~/.cloudflare-warp ~/cloudflare-warp]. You need to specify the origin certificate path by specifying the origincert option in the configuration file, or set TUNNEL_ORIGIN_CERT environment variable originCertPath= failed to create tunnel: couldn't create client to talk to Cloudflare Tunnel backend: Error locating origin cert: client didn't specify origincert path

五. Cloudflared Tunnel 配置

5.1创建 Tunnel

5.1.1基本流程

C:\cloudflared cloudflared tunnel create defaulttunnel

成功会输出

Created tunnel with id Tunnel credentials written to C:\Users<用户名>.cloudflared.json

tip] 在这里我会遇到一个报错:

原因是我在配置完 dash.cloudflare.com/36a22f9a5c6… 证书之后右侧的 download 无法下载,我就复制了密钥通过 txt 改成 pem

怎么解决呢?

1.1.重新走一遍官方认证流程,生成一个全新的、完整的 cert.pem 文件

1.2.删除 C:\Users\15690.cloudflared\cert.pem

1.3.重新登录以获取新证书 cloudflared tunnel login

1.4.在浏览器中,选择你之前添加了 agentcore.art 域名的 Cloudflare 账户,并完成授权。之后,cloudflared 会自动在刚才的目录下生成一个全新的、正确的 cert.pem 文件

C:\cloudflared>cloudflared tunnel create defaulttunnel failed to create tunnel: couldn't create client to talk to Cloudflare Tunnel backend: Error decoding origin cert: missing token in the certificate
5.1.2创建成功

命令:cloudflared tunnel create defaulttunnel

tunnel 创建成功,973be01e-81a3-4f83-8a14-ae49388a9594 就是 tunnelId

文件自动创建在 C:\Users\15690.cloudflared\973be01e-81a3-4f83-8a14-ae49388a9594.json

C:\cloudflared>cloudflared tunnel create defaulttunnel
Tunnel credentials written to C:\Users\15690.cloudflared\973be01e-81a3-4f83-8a14-ae49388a9594.json. cloudflared chose this file based on where your origin certificate was found. Keep this file secret. To revoke these credentials, delete the tunnel.

Created tunnel defaulttunnel with id 973be01e-81a3-4f83-8a14-ae49388a9594
2026-03-29T10:08:17Z WRN Your version 2025.8.1 is outdated. We recommend upgrading it to 2026.3.0

5.2配置 DNS records

DNS记录是什么?

DNS记录就像是互联网的“电话簿”或“地址簿”。它的核心作用是把人们容易记忆的域名(比如 agentcore.art)和电脑能识别的IP地址(比如 192.0.2.1)连接起来。你配置DNS记录,就是在告诉全球的网络:“当用户访问我的某个域名时,应该把他们引导到哪个服务器去”。

5.2.1网页手动配置

dash.cloudflare.com/36a22f9a5c6…

  • Type(记录类型):定义了这条记忆的功能,比如指向 ip 地址,还是指向另一个域名

  • Name / Hostname(主机记录):指定这条记录作用于域名的哪个前缀

    • @: 代表主域名本身,如 xxx

    • www:www.xxx

    • *:匹配 xx.xxx

    • IPv4 地址:按照指导填的 973be01e-81a3-4f83-8a14-ae49388a9594.cfargotunnel.com

    • Proxy status(代理状态):默认开启,cloudflare特有的,决定是否让流量经过 cloudflare 的全球网络进行加速和安全防护

    • TTL(生存时间):默认为 auto,告诉各地DNS服务器,这条记录可以缓存多久(s),即修改后多久能全球生效

5.2.2命令行

执行成功后,cloudflared 会自动在 Cloudflare 的 DNS 记录中为你添加好所需的 CNAME 记录,将 www.xxx 指向你的隧道

cloudflared tunnel route dns defaulttunnel www.xxx

5.3运行 tunnel

5.3.1.命令行

可以先查隧道列表:cloudflared tunnel list

cloudflared tunnel --url http://localhost:8000 run defaulttunnel

5.3.2.使用配置文件及运行

单隧道 + 多域名/服务(推荐)
文件:config.yml

命令:cloudflared tunnel run defaulttunnel

tunnel: defaulttunnel
credentials-file: C:\Users\15690.cloudflared\973be01e-81a3-4f83-8a14-ae49388a9594.json
ingress:
  - hostname: xxx
    service: http://localhost:8000

  - hostname: www.xxx
    service: http://localhost:8000

  - hostname: api.xxx
    service: http://localhost:8000

  - service: http_status:404

多隧道

配置多个 config-xxx.yml 文件

命令:cloudflared tunnel --config C:\Users\15690.cloudflared\config-defaulttunnel.yml run