我的第二个 Cloudflare Tunnel

发布: (2025年12月4日 GMT+8 17:02)
5 min read
原文: Dev.to

Source: Dev.to

My second Cloudflare Tunnel 的封面图片

问题

快速回顾涉及的隐私和安全问题:

  • 端口转发会暴露家庭 IP 地址
  • 动态 DNS 需要不断更新
  • 开放端口是安全风险
  • SSL 证书管理麻烦

我想要的解决方案应当:

  • 保持家庭网络安全
  • 自动提供 HTTPS
  • 添加身份验证
  • 易于维护

进入 Cloudflare Tunnel

Cloudflare Tunnel 会从你的网络 向外 创建一个 安全的出站连接 到 Cloudflare 的边缘。对你的域名的请求会通过该隧道路由到你的应用程序,无需任何入站端口。

流程:
Internet → Cloudflare Edge → Tunnel → NAS → Application

所有连接都是从 NAS 出站的,防火墙保持不变。

设置隧道

前置条件

  • 一个由 Cloudflare 管理的域名
  • NAS 上运行的 Docker 服务
  • 你的应用以 Docker 容器运行

创建命名隧道

  1. 在 Cloudflare Zero Trust 仪表板,进入 Access > Tunnels
  2. 点击 Create a tunnel 并选择 Cloudflared
  3. 为隧道命名(例如 nas)。
  4. 复制生成的隧道令牌——稍后会用到。

该令牌用于对隧道进行身份验证。

在 NAS 上运行 cloudflared

拉取官方 Docker 镜像:

docker pull cloudflare/cloudflared:2025.9.1

使用 Synology Docker UI 创建容器,设置如下:

  • 容器名称: cloudflared
  • 命令: tunnel --no-autoupdate run
  • 环境变量: TUNNEL_TOKEN= (在此粘贴你的令牌)
  • 网络: 与你的应用相同的网络(例如 bridge

cloudflared 容器创建指向应用容器的链接:

  • 链接容器: 应用容器的名称(例如 myapp
  • 别名: 同名 (myapp)

这使得 cloudflared 能够通过 http://myapp: 访问应用,而无需暴露任何端口。

配置公共主机名

  1. 在 Cloudflare 仪表板打开隧道配置。
  2. 前往 Public Hostname 选项卡,点击 Add a public hostname
  3. 设置子域、域名和服务路径(例如 http://myapp:)。

主机名必须与 Docker 链接别名匹配。如果出现类似错误:

dial tcp: lookup wrongname on 192.168.1.254:53: no such host

请检查链接名称和主机名是否不一致。

添加身份验证

如果不做额外保护,任何拥有链接的人都可以访问应用。Cloudflare Access 提供内置的身份验证,无需修改代码。

  1. 前往 Access > Applications
  2. 点击 Add an application > Self‑hosted
  3. 填写应用名称、域名和子域,然后点击 Next
  4. 创建策略:
    • 策略名称: “Allow myself”
    • 操作: Allow
    • 包含规则: Emails → john@doe.it
  5. 完成后添加该应用。

已创建的策略

确保策略已关联到隧道;否则 Cloudflare 不会强制执行身份验证。

结果

从外部访问应用时:

  1. Cloudflare 显示身份验证页面。
  2. 输入你的邮箱。
  3. Cloudflare 发送一次性验证码。
  4. 输入验证码后完成身份验证。
  5. 请求通过隧道代理到应用。

现在我可以随时随地安排帖子发布。

结论

Cloudflare Tunnel 为自托管提供了优雅且免费(cost‑free)的解决方案:

  • 自动 HTTPS
  • 通过 Cloudflare Access 内置身份验证
  • 无入站端口,保持家庭网络安全

整个设置大约用了 30 分钟,其中大部分时间用于修正容器名称和策略分配。希望本指南能帮助遇到类似挑战的朋友。

进一步阅读

最初发表于 A Java Geek ,发布日期为 2025 年 11 月 30 日。

Back to Blog

相关文章

阅读更多 »

🌑 进入黑暗:Soulbound Codex

演示图片 https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2...