目 录CONTENT

文章目录

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

传家宝VPS
2026-05-06 / 0 评论 / 0 点赞 / 2 阅读 / 0 字
RackNerd Mobile Leaderboard Banner

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

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

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

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


跑起来之前需要什么

跑通 Tunnel 三件事够了。

  • 一个挂在 Cloudflare 的域名。不必从 CF 买,只要 NS 改到 CF 就行(任何注册商的域名都可以)。如果还没托管,先看保姆级教程:如何将域名无缝托管到 Cloudflare

  • 一台跑服务的内网机器。NAS、家用小主机、软路由都行,能装东西就行。

  • cloudflared 客户端。按机器选一种装:

    • Linux 直装:下 .deb.rpmdpkg -i / rpm -i

    • Docker:拉 cloudflare/cloudflared:latest 镜像

    • 群晖 / 飞牛:套件中心或 Docker 包都跑得起来

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

cloudflared --version

能吐版本号就 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 命令。

253a4662ea372d37c5ae39d6cd49acd0.webp

Step 2:在内网机器跑 cloudflared

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

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

sudo cloudflared service install <你的 TOKEN>

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

services:
  cloudflared:
    image: cloudflare/cloudflared:latest
    restart: unless-stopped
    command: tunnel --no-autoupdate run --token <你的 TOKEN>

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

docker compose up -d
docker logs -f cloudflared

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

5929a70e704d501a74c282a4d115d7a4.webp

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 不会自动补)

33224e12ccc68adf837b36df0102729f.webp

Step 4:验证两件事

  • CF 后台 Tunnel 状态 = HEALTHY

  • 浏览器访问 https://nas.你的域名 能开

8170d330642ec3576c175c2702838ec0.webp

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

风险提示:DNS 没生效。dig nas.你的域名 CNAME 看是不是指向 xxxxxxxx.cfargotunnel.com,没指向就等几分钟,或回 Public Hostname 检查域名选错没。

风险提示:内网地址写错。先在内网机器上 curl http://192.168.1.x:5000 自检,本机访问不通的话外面一定不通。

风险提示:Service Type 选错。内网服务跑 http 你选了 HTTPS(或反过来),是这一步最常见误判。


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

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

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

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

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

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

  • photo.xxx → 自建相册(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 或直连兜底。这一点不交代清楚,回头你被坑了再来骂赛博活佛就尴尬了。

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

广告 广告
博主关闭了所有页面的评论