Cloudflare Tunnel全流程配置实现NAS应用直接用域名访问
关键字:
Cloudflare Tunnel全流程配置实现NAS应用直接用域名访问
✔ 适用于:Debian / Ubuntu / CentOS
✔ 不需要公网 IP
✔ 不需要开放路由器端口
✔ 自动 HTTPS
✔ 自动证书
✔ 自动反向代理你的 Flask / Nginx / 静态站点
Cloudflare Tunnel 全流程配置
---
# ? **第一步:安装 Cloudflare Tunnel(cloudflared)**
Debian/Ubuntu 一键安装:
```bash
curl -L https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb -o cloudflared.deb
sudo dpkg -i cloudflared.deb
```
检查版本:
```bash
cloudflared --version
```
---
# ? **第二步:登录 Cloudflare 账号**
```bash
cloudflared tunnel login
```
执行后会弹出一个 URL
复制到浏览器 → Cloudflare → 选择你要使用的域名(如 m.zenjong.site)
绑定成功后,会生成一个证书文件:
```
/root/.cloudflared/cert.pem
```
---
# ? **第三步:创建 Tunnel**
```bash
cloudflared tunnel create m_tunnel
```
会生成:
```
Tunnel ID:xxxxxx-xxxx-xxxx-xxxx .json
```
xxx.json 改成m_tunnel.json
配置文件目录:
```
/root/.cloudflared/
```
---
# ? **第四步:编写 Tunnel 配置文件(核心步骤)**
创建配置文件:
```bash
nano /root/.cloudflared/config.yml
```
写入以下内容(完全不用改)?
---
# ⭐ **示例:反代你的 Flask 服务(本地 5000 端口)**
```yaml
tunnel: m_tunnel
credentials-file: /root/.cloudflared/m_tunnel.json
ingress:
- hostname: m.zenjong.site
service: http://localhost:4533
- service: http_status:404
```
# ? **第五步:创建 Cloudflare DNS 记录(自动完成)**
执行:
```bash
cloudflared tunnel route dns m_tunnel m.zenjong.site
```
Cloudflare 会自动创建一个 CNAME:
```
Added CNAME m.zenjong.site which will route to this tunnel tunnelID=9233dd4c-0878-4b2c-ad9c-147a0b6312b3
```
cloudflared tunnel run au_tunnel
? **不需要你手动在 Cloudflare 后台添加 DNS!**
---
# ? **第六步:创建 Systemd 自启动服务(强烈推荐)**
```bash
cloudflared service install
```
启动服务:
```bash
systemctl start cloudflared
systemctl enable cloudflared
```
查看日志:
```bash
journalctl -fu cloudflared
```
看到:
```
Connection established
```
说明成功!
---
# ? **第七步:访问你的公网 HTTPS 域名(完成)**
直接访问:
```
https://m.zenjong.site```
你会看到:
* 自动 HTTPS
* 自动证书
* 自动 CDN 加速(如需)
* 不需要开放 5000 端口
* 不需要 NAT
* 不需要公网 IP
---
# ⭐ 完整目录结构(自动生成):
```
/root/.cloudflared
├── cert.pem
├── d_tunnel.json
└── config.yml
```
---
# ? 如何测试?
```bash
curl -I https://m.zenjong.site
```
返回 200/302 即正常。
同一个主机,增加不同的端口的配置方案
除了检查默认的配置文件,还需要到自服务的启动项看,
**ExecStart=/usr/bin/cloudflared tunnel --config /etc/cloudflared/config.yml run**
在config.yml 增加
tunnel: ass-tunnel
credentials-file: /etc/cloudflared/ass-tunnel.json
protocol: http2
ingress:
- hostname: ass.example.com
service: http://127.0.0.1:5000
- hostname: git.example.com
service: http://127.0.0.1:3000
- service: http_status:404
执行 `cloudflared tunnel route dns ass_tunnel git.example.com`
然后重启 `systemctl restart cloudflared`