不用 VPS 也能让家里服务上公网:Cloudflare Tunnel 0 成本部署实录

那台跑 frp 的腾讯云,我退了

很多人都有内网穿透的需求。以前我都是买 VPS,使用 frp 去做内网穿透,但是发现既需要一台服务器,还需要不少配置,感觉很麻烦。

后来我看到 Cloudflare 就有自带的服务,而且是完全免费的,只需要几行命令就可以完成。

那台跑 frp 的腾讯云轻量是新人优惠(99 一年),跑了大半年,换成 CF Tunnel 之后到期就没续。这篇就是把家里的内网服务暴露成 https://xxx.你的域名 的完整动作记录——不开端口、不要公网 IP、不用买跳板机。

跑起来之前需要什么

跑通 Tunnel 三件事够了。

  • 一个挂在 Cloudflare 的域名。不必从 CF 买,只要 NS 改到 CF 就行(任何注册商的域名都可以)。如果还没托管,先看。
图片[1]-不用 VPS 也能让家里服务上公网:Cloudflare Tunnel 0 成本部署实录-🎉数字奇遇🎉
  • 一台跑服务的内网机器。NAS、家用小主机、软路由都行,能装东西就行。
  • cloudflared 客户端。按机器选一种装:
    Linux 直装:下 .deb 或 .rpm 跑 dpkg -i / rpm -i
    Docker:拉 cloudflare/cloudflared:latest 镜像
    群晖 / 飞牛:套件中心或 Docker 包都跑得起来

装完后跑下面这条确认装好了:

能吐版本号就 OK,跑不出就回查路径或 service 状态。

注意:cloudflared 后面要塞 token 进去(Step 2 用),建议提前确认机器上能用 root 或 sudo——service 模式装服务要权限。

5 步把内网服务接到公网

Step 1:建 Tunnel + 拿 token

去 CF 后台 → Zero Trust → Networks → Tunnels → Create a tunnel → 选 Cloudflared → 给 Tunnel 起个名(比如 home-nas)→ 下一步会拿到一段 install + run 的 token 命令。

图片[2]-不用 VPS 也能让家里服务上公网:Cloudflare Tunnel 0 成本部署实录-🎉数字奇遇🎉

Step 2:在内网机器跑 cloudflared

把下面命令里的 <你的 TOKEN> 换成 Step 1 拿到的那段长字符串。

裸命令(Linux service 模式,开机自启):

或者 Docker compose 一份。把下面这段保存成 docker-compose.yml:

在同目录下起容器 + 看日志:

跑通判定两件事:日志里看到 Registered tunnel connection 一类输出 + CF 后台那个 Tunnel 状态从 INACTIVE 变成 HEALTHY。

图片[3]-不用 VPS 也能让家里服务上公网:Cloudflare Tunnel 0 成本部署实录-🎉数字奇遇🎉

Step 3:绑 Public Hostname

后台 → 当前 Tunnel → Public Hostnames → Add a public hostname。三个字段:

  • Subdomain:比如 app
  • Domain:选你已托管在 CF 的那个域名
  • Service:Type 选 HTTP(如果内网服务自己跑了 https 才选 HTTPS),URL 填 http://192.168.1.100:3030(换成你内网机器的真实 IP + 服务端口,前面 http:// 别漏,UI 不会自动补)
图片[4]-不用 VPS 也能让家里服务上公网:Cloudflare Tunnel 0 成本部署实录-🎉数字奇遇🎉

Step 4:验证两件事

  • CF 后台 Tunnel 状态 = HEALTHY
  • 浏览器访问 https://nas.你的域名 能开
图片[5]-不用 VPS 也能让家里服务上公网:Cloudflare Tunnel 0 成本部署实录-🎉数字奇遇🎉

Step 5:跑不通先按这三个顺序查

风险提示:DNS 没生效。dig nas.你的域名 CNAME 看是不是指向

,没指向就等几分钟,或回 Public Hostname 检查域名选错没。

风险提示:内网地址写错。先在内网机器上 curl http://192.168.1.x:5000 自检,本机访问不通的话外面一定不通。
风险提示:Service Type 选错。内网服务跑 http 你选了 HTTPS(或反过来),是这一步最常见误判。

NAS、密码、相册都挂上了,路由器一个端口都不开

我主要使用它把我家里的网络服务做穿透,其中一些密码服务和相册功能非常关键,这让我能随时随地在外面安全地控制家里的服务。

其实路由器也可以配置,但需要更改防火墙,操作比较复杂;而且如果设置不当,还会出现安全风险的问题。

我现在挂着的几个域名 → 服务对应:

  • → 群晖 DSM 面板(5000 端口)

  • → Vaultwarden 密码服务(内网走 http)

  • → 自建相册(8080 端口)

这套真正留下我的不只是省了那台跑 frp 的腾讯云。家里那台路由器从头到尾没开过任何端口,外网那一侧只有 cloudflared 在做出站连接,外面的扫描器看不到我家入口。frp 跳板那套架构给不了——前者外网总归要露一个 IP + 端口,露出去的瞬间就开始被扫。

注意:入站端口归零不等于服务本身就安全。DSM / Vaultwarden 该上的强密码、二步验证、Cloudflare Access 还是要上,别以为接到 Tunnel 后面就高枕无忧。

这套不适合谁,国内访问要绷一根弦

得把丑话先说完。下面这三种场景就别硬上 Tunnel:

  • 给团队 / 多人共用:个人或 50 人以内的小团队 Cloudflare Access 免费档够用;超过这个量或要 SSO / 审计日志这类高级能力才得跑付费档
  • 跑高带宽流媒体(Plex / Jellyfin / Emby 这种):CF 那边 ToS 不让走非 html 大流量,量大了会被掐
  • 走非 http/https 协议(SSH 直连 / 游戏服 / Minecraft):能用 cloudflared access 兜,但折腾不少,不如直接拉 Tailscale
严重警告:免费档在国内某些时段会卡或者偶尔断流。我自己实测晚高峰打开家里 NAS 还是会有点卡顿,这块没办法绕——是国内网络环境的问题,不是 Tunnel 的问题。我平时主要在外面(手机 4G/5G 或公司网)用,体验稳;纯国内宽带访问家里服务的话对体验敏感就结合 Tailscale 或直连兜底。这一点不交代清楚,回头你被坑了再来骂赛博活佛就尴尬了。

内网穿透没有我们想象的那么复杂,只需要一些简单的配置和对应的服务,就可以很好地实现我们想要的功能。主要还是因为“赛博活佛”提供的这些功能,后续我还会去深挖到底还有什么免费的服务给我们提供。

© 版权声明
THE END
喜欢就支持一下吧
点赞443 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容